<?php

declare(strict_types=1);

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

use DateTime;
use Seka\Portal\Modul\Terminy\Entities\Udalost\DruhUdalosti;
use Seka\Portal\Modul\Terminy\Entities\Udalost\StavRegistracie;
use Seka\Portal\Modul\Terminy\Entities\Udalost\StavUdalosti;
use Seka\Portal\Modul\Terminy\Entities\Udalost\StavUpozornenia;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Casts\EnumCast;
use Spatie\LaravelData\Data;

/**
 * Class UdalostDTO
 *
 * @package Seka\Portal\Modul\Terminy\Entities\Dtos
 */
final class UdalostDTO extends Data
{
    /**
     * @var int|null
     */
    public ?int $id;
    /**
     * @var string
     */
    public string $nazov;

    /**
     * @var string|null
     */
    public ?string $popis;

    /**
     * @var \DateTime
     */
    public DateTime $datum_od;

    /**
     * @var \DateTime
     */
    public DateTime $datum_do;

    /**
     * @var \Seka\Portal\Modul\Terminy\Entities\Udalost\DruhUdalosti
     */
    #[WithCast(EnumCast::class)]
    public DruhUdalosti $druh;

    /**
     * @var \Seka\Portal\Modul\Terminy\Entities\Udalost\StavUdalosti
     */
    #[WithCast(EnumCast::class)]
    public StavUdalosti $stav;

    /**
     * @var \Seka\Portal\Modul\Terminy\Entities\Udalost\StavUpozornenia
     */
    #[WithCast(EnumCast::class)]
    public StavUpozornenia $upozornenie;

    /**
     * @var int
     */
    public int $kapacita;

    /**
     * @var \Seka\Portal\Modul\Terminy\Entities\Udalost\StavRegistracie
     */
    #[WithCast(EnumCast::class)]
    public StavRegistracie $registracia;

    /**
     * @var \Seka\Portal\Modul\Terminy\Entities\Dtos\MiestoKonaniaDTO
     */
    public MiestoKonaniaDTO $miesto_konania;
}
