<?php

namespace App\Models;

use App\User;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class UserPackage extends Model
{
    //
    use SoftDeletes;

    protected $fillable = [
        'user_id',
        'package_id',
        'number_hostels',
        'number_rooms',
        'number_staffs',
        'price_per_month',
        'desc',
        'start_date',
        'end_date',
        'created_at',
        'updated_at',
        'deleted_at'
    ];

    protected $dates = [
        'created_at',
        'updated_at',
        'deleted_at',
        'start_date',
        'end_date'
    ];

    public function package()
    {
    	return $this->belongsTo(Package::class, 'package_id', 'id');
    }

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


        static::saved(function ($item) {
            PackageChange::create([
                'user_id' => $item->user_id,
                'package_id' => $item->package_id,
                'number_hostels' => $item->number_hostels,
                'number_rooms' => $item->number_rooms,
                'number_staffs' => $item->number_staffs,
                'price_per_month' => $item->price_per_month,
                'start_date' => $item->start_date,
                'end_date' => $item->end_date,
            ]);

            $endDate = $item->end_date;

            $overDate = false;

            $user = User::find($item->user_id);

            if ($user) {
                $user->package_id = $item->package_id;
            }

            if ($endDate) {
                if (Carbon::now()->greaterThan($endDate)) {
                    $overDate = true;
                }

                if ($user) {
                    $user->is_over_date = $overDate;

                }
            }
            $user->save();

        });

    }
}
