<?php namespace App\Mappers;

use App\Entities\DocumentoAnexo\DocumentoAnexo;
use App\Services\EncryptService;
use App\Services\JWTService;
use App\Utils\Collections\GeneralCollection;
use App\ViewModels\DocumentoAnexo\DocumentoAnexoListViewModel\DocumentoAnexoListViewModel;
use App\ViewModels\DocumentoAnexo\DocumentoAnexoRegistrationViewModel\DocumentoAnexoRegistrationViewModel;

class DocumentoAnexoMapper
{
    public static function getDocumentoAnexoRegistrationVMFromArray (array $data, string $url) : DocumentoAnexoRegistrationViewModel {
        return DocumentoAnexoRegistrationViewModel::builder()
            ->setDescricao($data['descricao'])
            ->setIdCliente($data['id_cliente'])
            ->setIdPet($data['id_pet'])
            ->setCriadoEm($data['criado_em'])
            ->setUrl($url)
            ->build();
    }
    public static function getDocumentoAnexoFromDocumentoAnexoRegistrationVM (DocumentoAnexoRegistrationViewModel $procedimento_registration_vm) : DocumentoAnexo {
        return DocumentoAnexo::builder()
            ->setDescricao($procedimento_registration_vm->getDescricao())
            ->setIdCliente($procedimento_registration_vm->getIdCliente())
            ->setIdPet($procedimento_registration_vm->getIdPet())
            ->setCriadoEm($procedimento_registration_vm->getCriadoEm())
            ->setUrl($procedimento_registration_vm->getUrl())
            ->build();
    }

# ----------------------------------------------------------------------------------------------------------------#

    public static function getDocumentoAnexoListVMCollectionFromArray (array $response_array) : GeneralCollection {
        $arquivo_details_vm_collection = new GeneralCollection();
        foreach ($response_array as $row) {
            $key = "HLuM5EYw5cd0vdJR9yLlM6wt2vte5iniQBqE70nZuhK=";
            if(file_exists($row['arquivo']) === true){
                $get_file = file_get_contents($row['arquivo']);
            }else{
                $get_file = '';
            }
            $encrypt = new EncryptService();

            $msg_decrypted = $encrypt->my_decrypt($get_file, $key);
            $base64 = base64_encode($msg_decrypted);

            $procedimento_details_vm = DocumentoAnexoMapper::getDocumentoAnexoListVMFromArray($row);
            $arquivo_details_vm_collection->push($procedimento_details_vm);
        }
        return $arquivo_details_vm_collection;
    }

    public static function getDocumentoAnexoDetailsVMFromArray (array $arquivo, $file) : DocumentoAnexoListViewModel {
        return DocumentoAnexoListViewModel::builder()
            ->setId($arquivo['id'])
            ->setIdCliente($arquivo['id_cliente'])
            ->setIdPet($arquivo['id_pet'])
            ->setCriadoEm($arquivo['criado_em'])
            ->setDescricao($arquivo['descricao'])
            ->setUrl($file)
            ->build();
    }

    public static function getDocumentoAnexoListVMFromArray (array $arquivo) : DocumentoAnexoListViewModel {
        return DocumentoAnexoListViewModel::builder()
            ->setId($arquivo['id'])
            ->setIdCliente($arquivo['id_cliente'])
            ->setIdPet($arquivo['id_pet'])
            ->setDescricao($arquivo['descricao'])
            ->setCriadoEm($arquivo['criado_em'])
            ->setUrl([])
            ->build();
    }

    public static function getDocumentoAnexoDetailsArrayFromProcedimentoDetailsVMCollection (GeneralCollection $paciente_details_vm_collection) : array {
        return $paciente_details_vm_collection->toArray();
    }

# ----------------------------------------------------------------------------------------------------------------#


}