<?php


namespace App\Mappers;

use App\Utils\Collections\GeneralCollection;
use App\ViewModels\Fila\FilaClienteDetailsViewModel\FilaClienteDetailsViewModel;
use App\ViewModels\Fila\FilaEspecialidadeDetailsViewModel\FilaEspecialidadeDetailsViewModel;

class FilaEspecialidadeMapper {

	public static function getFilaEspecialidadeDetailsVMFromArray(array $fila): FilaEspecialidadeDetailsViewModel {

		return FilaEspecialidadeDetailsViewModel::builder()->setIdRequisicaoProcedimento( $fila ['id_requisicao_procedimento'] )
			->setIdCliente( $fila ['id_cliente'] )
			->setIdPessoa( $fila ['id_pessoa'] )
			->setIdMedico( $fila ['id_medico'] )
			->setNomePessoa( $fila ['nome_pessoa'] )
			->setIdPet( $fila ['id_pet'] )
			->setDataNascimentoPet( $fila ['data_nascimento_pet'] )
			->setNomePet( $fila ['nome_pet'] )
			->setNomeRaca( $fila ['nome_raca'] )
			->setNomeEspecie( $fila ['nome_especie'] )
			->setDataCriacao( $fila ['data_criacao'] )
			->setHoraCriacao( $fila ['hora_criacao'] )
			->setStatusSala( $fila ['status_sala'] )
			->setAgendamentoData( $fila ['agendamento_data'] )
			->setAgendamentoHora( $fila ['agendamento_hora'] )
		->build();

	}

	public static function getFilaEspecialidadeDetailsVMCollectionFromArray(array $response_array): GeneralCollection {

		$fila_details_vm_collection = new GeneralCollection();
		foreach ( $response_array as $row ) {
			$fila_details_vm = FilaEspecialidadeMapper::getFilaEspecialidadeDetailsVMFromArray( $row );
			$fila_details_vm_collection->push( $fila_details_vm );
		}
		return $fila_details_vm_collection;

	}

	public static function getFilaEspecialidadesDetailsArrayFromFilaEspecialidadeDetailsVMCollection(GeneralCollection $paciente_details_vm_collection): array {

		return $paciente_details_vm_collection->toArray();

	}

	# ---------------------------------------------------- FILA CLIENTE ----------------------------------------------------- #
	public static function getFilaClienteDetailsVMFromArray(array $fila): FilaClienteDetailsViewModel {

		return FilaCLienteDetailsViewModel::builder()->setIdRequisicaoProcedimento( $fila ['id_requisicao_procedimento'] )
			->setIdCliente( $fila ['id_cliente'] )
			->setIdPessoa( $fila ['id_pessoa'] )
			->setNomePessoa( $fila ['nome_pessoa'] )
			->setIdPet( $fila ['id_pet'] )
			->setDataNascimentoPet( $fila ['data_nascimento_pet'] )
			->setNomePet( $fila ['nome_pet'] )
			->setNomeRaca( $fila ['nome_raca'] )
			->setNomeEspecie( $fila ['nome_especie'] )
			->setDataCriacao( $fila ['data_criacao'] )
			->setHoraCriacao( $fila ['hora_criacao'] )
			->build();

	}

	public static function getFilaClienteDetailsVMCollectionFromArray(array $response_array): GeneralCollection {

		$fila_details_vm_collection = new GeneralCollection();
		foreach ( $response_array as $row ) {
			$fila_details_vm = FilaEspecialidadeMapper::getFilaEspecialidadeDetailsVMFromArray( $row );
			$fila_details_vm_collection->push( $fila_details_vm );
		}
		return $fila_details_vm_collection;

	}

	public static function getFilaClientesDetailsArrayFromFilaClienteDetailsVMCollection(GeneralCollection $paciente_details_vm_collection): array {

		return $paciente_details_vm_collection->toArray();

	}

}