<?php

declare(strict_types=1);

namespace App\Dtos;

use App\Models\Informacia\Enums\StavInformacieEnum;
use Carbon\Carbon;
use Spatie\DataTransferObject\DataTransferObject;

/**
 * Class InformaciaDto
 *
 * DTO trieda sluziaca na prenos dat informacii v systeme
 *
 * @package App\Dtos
 * @author Radoslav Lukac <dev@seka.sk>
 */
final class InformaciaDto extends DataTransferObject
{
    use ModelToDtoTrait;

    /**
     * Jedinecny identifikator informacie
     *
     * @var int|null
     */
    public ?int $id;

    /**
     * Nadpis informacie
     *
     * @var string|null
     */
    public ?string $titulok;

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

    /**
     * Textovy obsah informacie
     *
     * @var string|null
     */
    public ?string $obsah;

    /**
     * Datum a cas planovaneho zverejnenia
     */
    public ?Carbon $planovany_cas_zverejnenia;

    /**
     * Aktualny stav informacie
     */
    public ?StavInformacieEnum $stav;

    /**
     * Indikator odoslania emailu na PEK
     *
     * @var bool
     */
    public bool $odoslat_email_na_pek = false;

    /**
     * Datum a cas skutocneho zverejnenia
     */
    public ?Carbon $cas_zverejnenia;

    /**
     * ID autora informacie
     *
     * @var int|null
     */
    public ?int $vytvoril_id;

    /**
     * Autor informacie
     */
    public ?PouzivatelDto $vytvoril;

    /**
     * Pouzivatelske role pre zverejnenie
     *
     * @var array|null
     */
    public ?array $zverejnit_pre_pouzivatelov_podla_role;

    /**
     * Indikator odoslania emailu pouzivatelom
     *
     * @var bool
     */
    public bool $odoslat_email_pouzivatelom = false;

    /**
     * Indikator odoslania push notifikacii
     *
     * @var bool
     */
    public bool $odoslat_push_notifikacie_pouzivatelom = false;

    /**
     * Indikator odporucaneho obsahu
     *
     * @var bool
     */
    public bool $odporucane = false;

    /**
     */
    public ?Carbon $created_at;

    /**
     */
    public ?Carbon $updated_at;

    /**
     */
    public ?Carbon $deleted_at;

    /**
     * @var string|null
     */
    public ?string $hash_id;
}
