<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Entities\Zaznam\DTOs;

use DateTimeInterface;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Udaje;
use Spatie\LaravelData\Data;

/**
 * Class ZaznamDTO
 *
 * @package Seka\Portal\Modul\Statistiky\Entities\Zaznam\DTOs
 */
final class ZaznamDTO extends Data
{
    /**
     * @var \Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt
     */
    public Subjekt $subjekt;

    /**
     * @var string
     */
    public string $kodPracoviska;

    /**
     * @var \DateTimeInterface
     */
    public DateTimeInterface $datum;

    /**
     * @var \Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Udaje
     */
    public Udaje $udaje;

    /**
     * @param \Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt $subjekt
     * @param string                                                             $kodPracoviska
     * @param \DateTimeInterface                                                 $datum
     * @param \Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Udaje   $udaje
     *
     * @return \Seka\Portal\Modul\Statistiky\Entities\Zaznam\DTOs\ZaznamDTO
     */
    public static function create(Subjekt $subjekt, string $kodPracoviska, DateTimeInterface $datum, Udaje $udaje): ZaznamDTO
    {
        return new self([
            'subjekt' => $subjekt,
            'kodPracoviska' => $kodPracoviska,
            'datum' => $datum,
            'udaje' => $udaje,
        ]);
    }
}
