<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Vzdelavanie\Listeners\Kniznica;

use Illuminate\Contracts\Queue\ShouldQueue;
use Seka\Portal\Modul\Vzdelavanie\Events\Kniznica\Frontend\SekciaOpened;
use Seka\Portal\Modul\Vzdelavanie\Models\Kniznica\Sekcia;
use Seka\Portal\Modul\Vzdelavanie\Models\Popularita\Popularita;

/**
 * Class SekciaCreatePopularityRecord
 *
 * @package Seka\Portal\Modul\Vzdelavanie\Listeners\Kniznica
 */
final class SekciaCreatePopularityRecord implements ShouldQueue
{
    /**
     * SekciaCreatePopularityRecord constructor.
     */
    public function __construct() {}

    /**
     * @param \Seka\Portal\Modul\Vzdelavanie\Events\Kniznica\Frontend\SekciaOpened $event
     */
    public function handle(SekciaOpened $event): void
    {
        $popularita = new Popularita();
        $popularita->pouzivatel()->associate($event->pouzivatel->getAuthIdentifier());

        /** @var Sekcia $sekcia */
        $sekcia = Sekcia::query()->with('popularita')->findOrFail($event->sekcia->id);
        $sekcia->popularita()->save($popularita);
    }
}
