<?php

declare(strict_types=1);

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

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Notification;
use Seka\Portal\Modul\Terminy\Entities\Dtos\RegistraciaDTO;
use Seka\Portal\Modul\Terminy\Events\Registracia\VytvorenaRegistraciaNaUdalost;
use Seka\Portal\Modul\Terminy\Notifications\Registracia\VytvorenaRegistraciaNotifikacia;

/**
 * Class VytvorenaRegistraciaNaUdalostListener
 *
 * @package Seka\Portal\Modul\Terminy\Listeners\Registracia
 */
final class VytvorenaRegistraciaNaUdalostListener implements ShouldQueue
{
    /**
     * @param \Seka\Portal\Modul\Terminy\Events\Registracia\VytvorenaRegistraciaNaUdalost $event
     *
     * @return void
     * @throws \Illuminate\Contracts\Container\BindingResolutionException
     * @throws \Spatie\LaravelData\Exceptions\CannotCreateData
     */
    public function handle(VytvorenaRegistraciaNaUdalost $event): void
    {
        $registraciaDTO = RegistraciaDTO::from($event->registracia);

        Notification::send(
            $event->notifiable,
            new VytvorenaRegistraciaNotifikacia($registraciaDTO),
        );
    }
}
