<?php

namespace App\Packages\Capsule\Models;

use App\Packages\Capsule\Repository\CapsuleRemovedRepository;
use App\Packages\Core\Traits\RepositoryTrait;
use App\Packages\User\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Support\Carbon;

/**
 * @property int $id
 * @property int $user_id
 * @property int $capsule_id
 *
 * @property string|Carbon $created_at
 *
 * @property User $user
 * @property Capsule $capsule
 *
 * @method static CapsuleRemovedRepository repository()
 */
class CapsuleRemoved extends Model
{
    use RepositoryTrait;

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

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

    /**
     * @param Capsule $capsule
     * @param User $user
     *
     * @return CapsuleRemoved
     */
    public static function createRelation(Capsule $capsule, User $user)
    {
        $removed = new CapsuleRemoved();
        $removed->user_id = $user->id;
        $removed->capsule_id = $capsule->id;
        $removed->save();

        return $removed;
    }

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

    /**
     * @return HasOne
     */
    public function capsule()
    {
        return $this->hasOne(Capsule::class, 'id', 'capsule_id');
    }

    public function setUpdatedAt($value)
    {
        //Do-nothing
    }

    public function getUpdatedAtColumn()
    {
        //Do-nothing
    }
}
