<?php

declare(strict_types=1);

namespace Seka\Terminy\Listeners\Udalost;

use App\Models\Pouzivatel\Pouzivatel;
use App\Models\Pracovisko\Pracovisko;
use Seka\Terminy\Events\Udalost\Udalost;
use Illuminate\Support\Facades\Notification;
use Seka\Terminy\Dtos\Factory\UdalostDTOFactory;
use Seka\Terminy\Notifications\Udalost\ZverejnenaNovaUdalostNotifikaciaDB;
use Seka\Terminy\Notifications\Udalost\ZverejnenaNovaUdalostNotifikaciaMail;

/**
 * Class OdoslatNotifikacieOZverejneniNovejUdalosti
 *
 * @package Seka\Terminy\Listeners\Udalost
 */
final class OdoslatNotifikacieOZverejneniNovejUdalosti
{
    /**
     * @param \Seka\Terminy\Events\Udalost\Udalost $event
     */
    public function handle(Udalost $event)
    {
        $udalost = UdalostDTOFactory::make($event->udalost);

        Notification::send(
            Pouzivatel::query()->aktivny()->get(),
            new ZverejnenaNovaUdalostNotifikaciaDB($udalost)
        );

        Notification::send(
            Pracovisko::query()->get(),
            new ZverejnenaNovaUdalostNotifikaciaMail($udalost)
        );
    }
}
