<?php namespace App\Models;

use Carbon\Carbon;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;


class registrationcodes extends Central
{

    protected $table = 'registration_codes';
    protected $primaryKey = 'id';
    public $module = 'registrationcodes';

    protected $guarded = [];
    public $timestamps = true;
    protected $appends = ['local_active_from', 'local_active_to'];


    public function __construct()
    {
        parent::__construct();

    }

    public static function querySelect()
    {

        return "  SELECT registration_codes.* FROM registration_codes  ";
    }

    public static function queryWhere()
    {

        return "  WHERE registration_codes.id IS NOT NULL ";
    }

    public static function queryGroup()
    {
        return "  ";
    }

    public function getLocalActiveFromAttribute()
    {
        return ($this->active_from) ? $this->convertDateTimeTimezone($this->active_from, 'UTC', 'Africa/Cairo') : null;
    }

    public function getLocalActiveToAttribute()
    {
        return (!is_null($this->active_to)) ? $this->convertDateTimeTimezone($this->active_to, 'UTC', 'Africa/Cairo') : null;
    }

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

    public function setLocalActiveToAttribute($value)
    {
        if ($value == null)
            $this->attributes['active_to'] = null;
        else
            $this->attributes['active_to'] = $this->convertDateTimeTimezone($value, 'Africa/Cairo', 'UTC');
    }

    private function convertDateTimeTimezone($date, $fromTz, $toTz)
    {
        return Carbon::createFromFormat('Y-m-d H:i:s', $date, $fromTz)->timezone($toTz)->toDateTimeString();
    }

    public static function boot()
    {
        parent::boot();

        static::creating(function ($registrationCode) {
            if (is_null($registrationCode->status))
                $registrationCode->status = 'active';
        });
    }
}
