<?php

namespace App\Packages\User\Models;

use App\Packages\Company\Models\Company;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
use Ramsey\Uuid\Uuid;

/**
 * Class User
 *
 * @package App\Models\User
 *
 * @property int $id
 * @property int $token
 * @property int $user_id
 *
 * @property string $expire_at
 *
 * @property string|Carbon $created_at
 * @property string|Carbon $updated_at
 *
 * @property-read User $user
 */
class UserPasswordReset extends Model
{
	/** @var string */
	protected $table = 'table_user_password_reset';

	/**
	 * @return bool
	 */
	public function isTokenExpired()
	{
		return now() > $this->expire_at;
	}

	/**
	 * @param User $user
	 *
	 * @return UserPasswordReset
	 */
	public static function createPasswordRequest(User $user)
	{
		$reset = new UserPasswordReset();
		//$reset->user_id = $user->id;
		$reset->token = Uuid::uuid4();
		$reset->expire_at = now()->addDays(2);
		$reset->save();

		return $reset;
	}

	/**
	 * @TODO: Add expiration info
	 *
	 * @param $token
	 *
	 * @return $this
	 */
	public static function findByToken($token)
	{
		return static::query()->where('token', '=', $token)->first();
	}

	/**
	 * @return HasOne
	 */
	public function user()
	{
		return $this->hasOne(User::class, 'id', 'user_id');
	}
}