<?php

namespace App\Classes\Modules\Documents\DataTransferObjects;

use App\Classes\General\Interfaces\DataTransferObject;
use App\Classes\Modules\Documents\Services\ConvertsBase64ToFile;

class DocumentObject implements DataTransferObject
{

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

    /** @var array */
    private $files;

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

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

    /** @var string|null */
    private $path;

    /**
     * DocumentObject constructor.
     * @param string $document_type
     * @param array $files
     * @param string $reference
     * @param int $status
     * @param null|string $path
     */
    public function __construct(string $document_type, array $files, string $reference, int $status, ?string $path = '')
    {
        $this->document_type = $document_type;
        $this->files = $files;
        $this->reference = $reference;
        $this->status = $status;
        $this->path = $path;
    }


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

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

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


    /**
     * @return array
     * @throws \App\Classes\Exceptions\MalformedRequestException
     */
    public function getFiles(): array
    {
        return (new ConvertsBase64ToFile($this->path))->convert($this->files);
    }



}