<?php

namespace App\Mappers;

use App\Services\JWT\UsuarioLogado;
use App\Utils\DateUtils;
use App\ViewModels\Orcamento\OrcamentoCienteDetalheRegistrationViewModel\OrcamentoClienteDetalheRegistrationViewModelBuilder;
use App\ViewModels\Orcamento\OrcamentoCienteDetalheRegistrationViewModel\OrcamentoClienteDetalheRegistarionViewModel;
use App\ViewModels\Orcamento\OrcamentoClienteDetalheRequestRequisicaoViewModel\OrcamentoCienteDetalheRequestRequisicaoViewModel;
use App\Entities\OrcamentoClienteDetalhe\OrcamentoClienteDetalhe;
use App\ViewModels\Orcamento\OrcamentoClienteItemDetalhe\OrcamentoClienteItemDetalhe;

class OrcamentoClienteDetalheMapper {

	public static function getOrcamentoClienteDetalheRegistrationVMFromArray(array $data): OrcamentoClienteDetalheRegistarionViewModel {

		$dataCriacao = DateUtils::today();
		$horaCriacao = DateUtils::now_time();
		$criadoPor = UsuarioLogado::getUsuarioId();

		$orcamentoClienteDetalhe = OrcamentoClienteDetalheRegistarionViewModel::builder()->setIdProcedimentoValor( $data ['id_procedimento_valor'] )
			->setQuantidade( $data ['quantidade'] ?? 1)
			->setValorUnidade( $data ['valor'] )
			->setCriadoPor( $criadoPor )
			->setDataCriacao( $dataCriacao )
			->setHoraCriacao( $horaCriacao )
			->build();

		return $orcamentoClienteDetalhe;

	}
	
	public static function getOrcamentoClienteDetalheFromObjRegistrationVM(OrcamentoClienteDetalheRegistarionViewModel $objvm): OrcamentoClienteDetalhe {
		
		$dataAtualizacao = DateUtils::today();
		$horaAtualizacao = DateUtils::now_time();
		$criadoPor = UsuarioLogado::getUsuarioId();
		
		$orcamenteDetalhe = OrcamentoClienteDetalhe::builder()->setCriadoPor($objvm->getCriadoPor())
		->setDataCriacao($objvm->getDataCriacao())
		->setHoraCriacao($objvm->getHoraCriacao())
		->setIdConvenioProcedimento($objvm->getIdConvenioProcedimento())
		->setIdOrcamento($objvm->getIdOrcamento())
		->setIdProcedimento($objvm->getIdProcedimento())
		->setIdProcedimentoValor($objvm->getIdProcedimentoValor())
		->setQuantidade($objvm->getQuantidade())
		->setValorUnidade($objvm->getValorUnidade())
		->setValor($objvm->getValor())
		->build();
		return $orcamenteDetalhe;
		
	}
	
	
	public static function getOrcamentoClienteDetalheToRequisicaoVM(array $dados): OrcamentoClienteItemDetalhe {
		
		$dataAtualizacao = DateUtils::today();
		$horaAtualizacao = DateUtils::now_time();
		$atualizadoPor = UsuarioLogado::getUsuarioId();
		
		$orcamenteDetalhe = OrcamentoClienteItemDetalhe::builder()->setId($dados['id'])
		->setDataCriacao($dados['data_criacao'])
		->setHoraCriacao($dados['hora_criacao'])
		->setIdConvenioProcedimento($dados['id_convenio_procedimento'])
		->setIdOrcamento($dados['id_orcamento'])
		->setIdProcedimento($dados['id_procedimento'])
		->setIdProcedimentoValor($dados['id_procedimento_valor'])
		->setQuantidade($dados['quantidade'])
		->setValorUnidade($dados['valor_unidade'])
		->setValor($dados['valor'])
		->build();
		return $orcamenteDetalhe;
		
	}
	
	
	public static function initOrcamentoClienteItemDetalhe():OrcamentoClienteItemDetalhe {
		$orcamenteDetalhe = OrcamentoClienteItemDetalhe::builder()->setId(0)
		->setDataCriacao('')
		->setHoraCriacao('')		
		->setIdConvenioProcedimento(0)
		->setIdOrcamento(0)
		->setIdProcedimento(0)
		->setIdProcedimentoValor(0)		
		->setQuantidade(0)
		->setValorUnidade(0)
		->setValor(0)
		->build();
		return $orcamenteDetalhe;
	}
	
	public static function OrcamentoClienteItemDetalheToArray(OrcamentoClienteItemDetalhe $obj):array {
		
		$respArray = array();
		
		$respArray['id'] = $obj->getId() ?? 0;
		$respArray['criadoPor'] = $obj->getCriadoPor() ?? 0;
		$respArray['dataCriacao'] = $obj->getDataCriacao() ?? '';
		$respArray['horaCriacao'] = $obj->getHoraCriacao() ?? '';
		$respArray['idOrcamento'] = $obj->getIdOrcamento() ?? 0;
		$respArray['idProcedimento'] = $obj->getIdProcedimento() ?? 0;
		$respArray['idProcedimentoValor'] = $obj->getIdProcedimentoValor() ?? 0;
		$respArray['idConvenioProcedimento'] = $obj->getIdConvenioProcedimento() ?? 0;
		$respArray['idTipoProcedimento'] = $obj->getIdTipoProcedimento() ?? 0;
		$respArray['idTipoConvenio'] = $obj->getIdTipoConvenio() ?? 0;
		$respArray['idUnidade'] = $obj->getIdUnidade() ?? 0;
		$respArray['idConvenio'] = $obj->getIdConvenio() ?? 0;
		$respArray['listIdRequisicao'] = $obj->getListIdRequisicao();
		$respArray['listIdComandaItem'] = $obj->getListIdComandaItem();
		$respArray['procedimento'] = $obj->getProcedimento() ?? '';
		$respArray['tipoProcedimento'] = $obj->getTipoProcedimento() ?? '';
		$respArray['tipoConvenio'] = $obj->getTipoConvenio() ?? '';
		$respArray['codConvenio'] = $obj->getCodConvenio() ?? '';
		$respArray['quantidade'] = $obj->getQuantidade() ?? 0;
		$respArray['valorUnidade'] = $obj->getValorUnidade() ?? 0;
		$respArray['valor'] = $obj->getValor() ?? 0;
		$respArray['atualizadoPor'] = $obj->getAtualizadoPor() ?? 0;
		$respArray['dataAtualizacao'] = $obj->getDataAtualizacao() ?? '';
		$respArray['horaAtualizacao'] = $obj->getHoraAtualizacao() ?? '';
		$respArray['statusProcedimentoValor'] = $obj->getStatusProcedimentoValor() ?? 0;
		
		return $respArray;
		
	}
	

}

