<?php

class Seguro_Model_VistoriaPreviaHistorico extends Agro_Db_Table_Abstract {
	protected $_schema = 'seguro';
	protected $_name = 'propostas_vistorias_previas_historico';
	protected $_primary = 'id';
	public $_order = 'dt_criacao';

	public function save(array $dados) {

		try {
			
			if (!array_key_exists('id_status', $dados)) {
				$PropostaVistoria = new Seguro_Model_VistoriaPrevia();
				$Vistoria = $PropostaVistoria->fetchRow("id = ".$dados['id_proposta_vistoria']);
				$dados['id_status'] = $Vistoria->id_status;
			}
			
			if ((!array_key_exists('id_empresa_historico', $dados)) || empty($dados['id_empresa_historico'])) {
				$PropostaVistoria = new Seguro_Model_VistoriaPrevia();
				$Vistoria = $PropostaVistoria->fetchRow("id = ".$dados['id_proposta_vistoria']);
				$VistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
				$Empresas = $VistoriaEmpresa->fetchRow("id_vistoria = ". $Vistoria->id_vistoria);
				$dados['id_empresa_historico'] = $Empresas->id_empresa;
			}
			
			$Row = $this->createRow();
			
			$Row->id_proposta_vistoria = $dados['id_proposta_vistoria'];
			$Row->id_status = $dados['id_status'];
			$Row->id_status_analise = $dados['id_status_analise'];
			$Row->ds_motivo = $dados['ds_motivo'];
			$Row->id_empresa = $dados['id_empresa_historico'];

			if (isset($dados['fl_necessario_endosso'])) {
				$Row->fl_necessario_endosso = $dados['fl_necessario_endosso'];
			}
			if (isset($dados['ds_justificativa_dispensa'])) {
				$Row->ds_justificativa_dispensa = $dados['ds_justificativa_dispensa'];
			}

            if (array_key_exists('id_status_alteracao', $dados)) {
                $Row->id_status_alteracao = $dados['id_status_alteracao'];
            }

            if (isset($dados['id_pendencia'])) {
                $Row->id_pendencia = $dados['id_pendencia'];
            }

			$Row->save();

			return $Row;
		} catch (Exception $e) {
			return $e->getMessage();
		}
	}

	public function getHistoricoByVistoria($idVistoria) {

		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('pvph' => $this->_schema.".".$this->_name), array('dt_criacao','ds_motivo','ds_justificativa_dispensa', 'id_status as id_status_historico', 'id_status_analise'));
		$select->join(array('sa' => 'sistema.status'), 'sa.id = pvph.id_status', array('ds_status', 'ds_chave as ds_chave_status'));
		$select->join(array('saa' => 'sistema.status'), 'saa.id = pvph.id_status_analise', 'ds_status as ds_status_analise');
		$select->join(array('u' => 'sistema.usuarios'), 'u.id = pvph.id_usuario_criacao', 'u.ds_nome_usuario');
		$select->join(array('e' => 'sistema.empresas'), 'e.id = pvph.id_empresa', 'e.ds_nome_fantasia');
		$select->join(array('pvp' => 'seguro.propostas_vistorias_previas'), 'pvp.id = pvph.id_proposta_vistoria', false);
		$select->joinLeft(array('vf' => 'sistema.vistorias_funcionarios'), 'vf.id_vistoria = pvp.id_vistoria', false);
		$select->joinLeft(array('f' => 'sistema.funcionarios'), 'f.id = vf.id_funcionario', false);
		$select->joinLeft(array('usu' => 'sistema.usuarios'), 'usu.id = f.id_usuario', 'usu.ds_nome_usuario as usuario_perito');
		$select->where('pvph.id_proposta_vistoria = ?', $idVistoria);
		$select->order('pvph.dt_criacao DESC');

		$Rs = $this->fetchAll($select);
		
		return $Rs;
	}

	public function todosArquivosFotoTransferidos(int $idPropostaVistoria): bool
	{
		$query = $this
			->select()
			->setIntegrityCheck(false)
			->from(array('pvph' => $this->_schema.".".$this->_name), 'id')
			->where('id_proposta_vistoria = ?', $idPropostaVistoria)
			->where('id_status = ?', Sistema_Model_Status::VP_TRANSMITIDA)
			->where('id_usuario_criacao = ?', 2068)
			->where('ds_motivo = \'Todos arquivos foto recebidos.\'');

		$rs = $this->fetchAll($query);

		if (count($rs) > 0) {
			return true;
		}

		return false;
	}
}