<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Terminy\Entities\Registracia;

use Seka\Portal\Modul\Terminy\Events\Registracia\VytvorenaRegistraciaNaUdalost;
use Seka\Portal\Modul\Terminy\Events\Registracia\ZrusenaRegistraciaNaUdalost;

/**
 * Class RegistraciaObserver
 *
 * @package Seka\Portal\Modul\Terminy\Entities\Registracia
 */
class RegistraciaObserver
{
    /**
     * Handle "retrieved" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function retrieved(Registracia $registracia): void
    {

    }

    /**
     * Handle "creating" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function creating(Registracia $registracia): void
    {

    }

    /**
     * Handle "created" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function created(Registracia $registracia): void
    {

    }

    /**
     * Handle "saving" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function saving(Registracia $registracia): void
    {

    }

    /**
     * Handle "saved" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     * @throws \Illuminate\Contracts\Container\BindingResolutionException
     */
    public function saved(Registracia $registracia): void
    {
        $notifiable = $registracia->pouzivatel ? $registracia->pouzivatel->withoutRelations() : $registracia->vytvoril->withoutRelations();
        VytvorenaRegistraciaNaUdalost::dispatch($registracia, $notifiable);
    }

    /**
     * Handle "updating" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function updating(Registracia $registracia): void
    {

    }

    /**
     * Handle "updated" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function updated(Registracia $registracia): void
    {

    }

    /**
     * Handle "replicating" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function replicating(Registracia $registracia): void
    {

    }

    /**
     * Handle "deleting" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function deleting(Registracia $registracia): void
    {

    }

    /**
     * Handle "deleted" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     * @throws \Illuminate\Contracts\Container\BindingResolutionException
     */
    public function deleted(Registracia $registracia): void
    {
        $notifiable = $registracia->pouzivatel ? $registracia->pouzivatel->withoutRelations() : $registracia->vytvoril->withoutRelations();
        ZrusenaRegistraciaNaUdalost::dispatch($registracia, $notifiable);
    }

    /**
     * Handle "forceDeleted" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function forceDeleted(Registracia $registracia): void
    {

    }

    /**
     * Handle "restoring" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function restoring(Registracia $registracia): void
    {

    }

    /**
     * Handle "restored" event.
     *
     * @param \Seka\Portal\Modul\Terminy\Entities\Registracia\Registracia $registracia
     *
     * @return void
     */
    public function restored(Registracia $registracia): void
    {

    }
}
