<?php

namespace Yajny\Member\Models;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class RegistrationCode extends Model
{
    protected $guarded = [];
    protected $appends = [
        'local_active_from',
        'local_active_to'
    ];

    protected static function boot()
    {
        parent::boot();
        static::addGlobalScope('active', function (Builder $builder) {
            $now = Carbon::now()->toDateTimeString();

            $builder->where('status', 'active');
            $builder->where('active_from', '<=', $now);
            $builder->where('active_to', '>=', $now);
        });
    }

    public function setLocalActiveFromAttribute($value)
    {
        $this->attributes['active_from'] = Carbon::parse($value, 'Africa/Cairo')->setTimezone('UTC');
    }

    public function getLocalActiveFromAttribute()
    {
        return Carbon::parse($this->active_from, 'UTC')->setTimezone('Africa/Cairo');
    }

    public function setLocalActiveToAttribute($value)
    {
        $this->attributes['active_to'] = Carbon::parse($value, 'Africa/Cairo')->setTimezone('UTC');
    }

    public function getLocalActiveToAttribute()
    {
        return Carbon::parse($this->active_to, 'UTC')->setTimezone('Africa/Cairo');
    }
}
