<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Terminy\Providers;

use App\Events\Notifications\GetViewForNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Seka\Portal\Modul\Terminy\Events\Registracia\VytvorenaRegistraciaNaUdalost;
use Seka\Portal\Modul\Terminy\Events\Registracia\ZrusenaRegistraciaNaUdalost;
use Seka\Portal\Modul\Terminy\Events\Udalost\NezverejnenaUdalostBolaAktualizovana;
use Seka\Portal\Modul\Terminy\Events\Udalost\NezverejnenaUdalostBolaZverejnena;
use Seka\Portal\Modul\Terminy\Events\Udalost\NovaNezverejnenaUdalost;
use Seka\Portal\Modul\Terminy\Events\Udalost\NovaZverejnenaUdalost;
use Seka\Portal\Modul\Terminy\Events\Udalost\ZverejnenaUdalostBolaObnovena;
use Seka\Portal\Modul\Terminy\Events\Udalost\ZverejnenaUdalostBolaZrusena;
use Seka\Portal\Modul\Terminy\Events\Udalost\ZverejnenaUdalostBolaAktualizovana;
use Seka\Portal\Modul\Terminy\Events\Udalost\ZverejnenaUdalostBolaNezverejnena;
use Seka\Portal\Modul\Terminy\Listeners\Registracia\RegistraciaNotificationView;
use Seka\Portal\Modul\Terminy\Listeners\Registracia\VytvorenaRegistraciaNaUdalostListener;
use Seka\Portal\Modul\Terminy\Listeners\Registracia\ZrusenaRegistraciaNaUdalostListener;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\AktualizovanaUdalostNotifikacia;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\AktualizovatUdalostVKalendari;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\NezverejnitZverejnenuUdalostiVKalendari;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\NezverejnitZverejnenuUdalostNotifikacia;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\UdalostNotificationView;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZrusitZverejnenieUdalostiNotifikacia;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZrusitZverejnenieUdalostiVKalendari;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZverejnitNezverejnenuUdalostNotifikacia;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZverejnitNezverejnenuUdalostVKalendari;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZverejnitNovuUdalostNotifikacia;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZverejnitNovuUdalostVKalendari;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZverejnitObnovenuUdalostNotifikacia;
use Seka\Portal\Modul\Terminy\Listeners\Udalost\ZverejnitObnovenuUdalostVKalendari;

/**
 * Class EventServiceProvider
 *
 * @package Seka\Portal\Modul\Terminy\Providers
 */
final class EventServiceProvider extends ServiceProvider
{
    /**
     * @var \string[][]
     */
    protected $listen = [
        // zobrazenie notifikacie v ramci zoznamu notifikacii pouzivatela v Portale
        GetViewForNotification::class => [
            UdalostNotificationView::class,
            RegistraciaNotificationView::class,
        ],

        // UDALOSTI
        NovaZverejnenaUdalost::class => [
            ZverejnitNovuUdalostVKalendari::class,
            ZverejnitNovuUdalostNotifikacia::class,
        ],
        NovaNezverejnenaUdalost::class => [],
        NezverejnenaUdalostBolaZverejnena::class => [
            ZverejnitNezverejnenuUdalostVKalendari::class,
            ZverejnitNezverejnenuUdalostNotifikacia::class,
        ],
        NezverejnenaUdalostBolaAktualizovana::class => [],
        ZverejnenaUdalostBolaNezverejnena::class => [
            NezverejnitZverejnenuUdalostiVKalendari::class,
            NezverejnitZverejnenuUdalostNotifikacia::class,
        ],
        ZverejnenaUdalostBolaAktualizovana::class => [
            AktualizovatUdalostVKalendari::class,
            AktualizovanaUdalostNotifikacia::class,
        ],
        ZverejnenaUdalostBolaZrusena::class => [
            ZrusitZverejnenieUdalostiVKalendari::class,
            ZrusitZverejnenieUdalostiNotifikacia::class,
        ],
        ZverejnenaUdalostBolaObnovena::class => [
            ZverejnitObnovenuUdalostVKalendari::class,
            ZverejnitObnovenuUdalostNotifikacia::class,
        ],

        // REGISTRACIE NA UDALOSTI
        VytvorenaRegistraciaNaUdalost::class => [
            VytvorenaRegistraciaNaUdalostListener::class,
        ],
        ZrusenaRegistraciaNaUdalost::class => [
            ZrusenaRegistraciaNaUdalostListener::class,
        ],
    ];

    /**
     *
     */
    public function boot(): void
    {
        parent::boot();
    }
}
