<?php declare(strict_types=1);

class Agro_Essor_Plug_Dto_FormulariosResquest
{
    public int $codigoTipoDocumento;
    public int $codigoDominio;
    public int $codigoTratamento;
    public int $idEndosso;
    public string $nomeArquivo;
    public int $codigoObservacao;
    public string $numeroReferencia;
    public string $base64;

    public function __construct(
        int $codigoTipoDocumento,
        int $codigoDominio,
        int $codigoTratamento,
        int $idEndosso,
        string $nomeArquivo,
        int $codigoObservacao,
        string $numeroReferencia,
        string $base64
    ) {
        $this->codigoTipoDocumento = $codigoTipoDocumento;
        $this->codigoDominio = $codigoDominio;
        $this->codigoTratamento = $codigoTratamento;
        $this->idEndosso = $idEndosso;
        $this->nomeArquivo = $nomeArquivo;
        $this->codigoObservacao = $codigoObservacao;
        $this->numeroReferencia = $numeroReferencia;
        $this->base64 = $base64;
    }

    public function toArray(): array
    {
        return [
            'codigoTipoDocumento' => (int) $this->codigoTipoDocumento,
            'codigoDominio' => (int) $this->codigoDominio,
            'codigoTratamento' => (int) $this->codigoTratamento,
            'idEndosso' => (int) $this->idEndosso,
            'nomeArquivo' => $this->nomeArquivo,
            'codigoObservacao' => (int) $this->codigoObservacao,
            'numeroReferencia' => $this->numeroReferencia,
            'base64' => $this->base64
        ];
    }

    public static function fromArray(array $data): self
    {
        return new self(
            (int) $data['codigoTipoDocumento'],
            (int) $data['codigoDominio'],
            (int) $data['codigoTratamento'],
            (int) $data['idEndosso'],
            $data['nomeArquivo'],
            (int) $data['codigoObservacao'],
            $data['numeroReferencia'],
            $data['base64']
        );
    }
}