<?php

declare(strict_types=1);

class Sinistro2_Model_VistoriadorDespesaDTO
{
    /**
     * @var int|null
     */
    private $id;

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

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

    /**
     * @var float
     */
    private $valorDespesa;

    /**
     * @var DateTime
     */
    private $dataDespesa;

    public function __construct(
        int $idFuncionario,
        int $idParametroTipoDespesa,
        float $valorDespesa,
        DateTime $dataDespesa,
        ?int $id = null
    ) {
        $this->idFuncionario = $idFuncionario;
        $this->idParametroTipoDespesa = $idParametroTipoDespesa;
        $this->valorDespesa = $valorDespesa;
        $this->dataDespesa = $dataDespesa;
        $this->id = $id;
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getIdFuncionario(): int
    {
        return $this->idFuncionario;
    }

    public function getIdParametroTipoDespesa(): int
    {
        return $this->idParametroTipoDespesa;
    }

    public function getValorDespesa(): float
    {
        return $this->valorDespesa;
    }

    public function getDataDespesa(): DateTime
    {
        return $this->dataDespesa;
    }

    public function setIdFuncionario(int $idFuncionario): void
    {
        $this->idFuncionario = $idFuncionario;
    }

    public function setIdParametroTipoDespesa(int $idParametroTipoDespesa): void
    {
        $this->idParametroTipoDespesa = $idParametroTipoDespesa;
    }

    public function setValorDespesa(float $valorDespesa): void
    {
        $this->valorDespesa = $valorDespesa;
    }

    public function setDataDespesa(DateTime $dataDespesa): void
    {
        $this->dataDespesa = $dataDespesa;
    }

    public static function fromArray(array $params): Sinistro2_Model_VistoriadorDespesaDTO
    {
        return new self(
            (int) $params['id_funcionario'],
            (int) $params['id_parametro_tipo_despesa'],
            (float) $params['vl_despesa'],
            DateTime::createFromFormat('d/m/Y', $params['dt_despesa']),
            !empty($params['id']) ? (int) $params['id'] : null
        );
    }
}

?>