<?php

namespace App\Packages\Friend\Models;

use App\Packages\Core\Traits\RepositoryTrait;
use App\Packages\Friend\Repository\FriendInviteRepository;
use App\Packages\User\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

/**
 * Class FriendInvite
 * @package App\Packages\Friend\Models
 *
 * @property int $id
 * @property int $user_id
 * @property int $friend_id
 *
 * @property string $created_at
 * @property string $updated_at
 *
 * @property-read User $user
 * @property-read User $friend
 *
 * @method static FriendInviteRepository repository()
 */
class FriendInvite extends Model
{
	use RepositoryTrait;

	/** @var string */
	public static $repositoryClass = FriendInviteRepository::class;

	/** @var string */
	protected $table = 'table_friend_invite';

	/**
	 * @param User $user
	 * @param User $friend
	 *
	 * @return FriendInvite
	 */
	public static function createInvite(User $user, User $friend)
	{
		$invite = new FriendInvite();
		$invite->user_id = $user->id;
		$invite->friend_id = $friend->id;

		$invite->save();

		return $invite;
	}

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

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