<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Entities\Import\ValueObjects;

use JsonSerializable;
use Illuminate\Contracts\Support\Arrayable;

/**
 *
 */
final class Subor implements Arrayable, JsonSerializable
{
    /**
     * @var string
     */
    private string $subor_nazov;

    /**
     * @var string
     */
    private string $subor_povodne_umiestnenie;

    /**
     * @var string
     */
    private string $subor_presunuty_do;

    /**
     * @var int
     */
    private int $subor_velkost;

    /**
     * @param string $subor_nazov
     * @param string $subor_povodne_umiestnenie
     * @param string $subor_presunuty_do
     * @param int    $subor_velkost
     */
    public function __construct(string $subor_nazov, string $subor_povodne_umiestnenie, string $subor_presunuty_do, int $subor_velkost)
    {
        $this->subor_nazov = $subor_nazov;
        $this->subor_povodne_umiestnenie = $subor_povodne_umiestnenie;
        $this->subor_presunuty_do = $subor_presunuty_do;
        $this->subor_velkost = $subor_velkost;
    }

    /**
     * @return string
     */
    public function nazov(): string
    {
        return $this->subor_nazov;
    }

    /**
     * @return string
     */
    public function povodneUmiestnenie(): string
    {
        return $this->subor_povodne_umiestnenie;
    }

    /**
     * @return string
     */
    public function presunutyDo(): string
    {
        return $this->subor_presunuty_do;
    }

    /**
     * @return int
     */
    public function velkost(): int
    {
        return $this->subor_velkost;
    }

    /**
     * @return string
     */
    public function jsonSerialize(): string
    {
        return json_encode($this->toArray());
    }

    /**
     * @return array
     */
    public function toArray(): array
    {
        return [
            'nazov' => $this->subor_nazov,
            'povodne_umiestnenie' => $this->subor_povodne_umiestnenie,
            'presunuty_do' => $this->subor_presunuty_do,
            'velkost' => $this->subor_velkost,
        ];
    }
}
