<?php

class Sinistro2_Model_ProcessosObservacoes extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'processos_observacoes';
	protected $_primary = array('id');
	public $_order = 'id_processo';
	
	public function save($dados){

		try{
			$ModelEmpresas = new Sistema_Model_Empresas();
			$empresa = $ModelEmpresas->getNomeEmpresaById($dados['id_empresa_vistoriadora']);
			
			if($dados['ds_empresa_atual']){
				$observacao = 'Processo transferido da empresa '.$dados['ds_empresa_atual'].' para a empresa '.$empresa.' conforme observação abaixo: <br>'.$dados['ds_observacao'];
			}else{
				$observacao = 'Processo transferido para a empresa '.$empresa.' conforme observação abaixo: <br>'.$dados['ds_observacao'];
			}
			
			$Row = $this->createRow();
			$Row->id_processo = $dados['id_processo'];
			$Row->ds_observacao = $observacao;
	
			$Row->save();
		
		}catch (Exception $e){
			die($e);
		}
	}
	
	public function saveObservacaoExclusao($dados){
	
		try{
			$observacao = 'Arquivo '.$dados['ds_nome_arquivo'].' foi excluído por '.$dados['ds_nome_usuario'];
	
			$Row = $this->createRow();
			$Row->id_processo = $dados['id_processo'];
			$Row->ds_observacao = $observacao;
	
			$Row->save();
	
		}catch (Exception $e){
			die($e);
		}
	}	
	
	public function getObservacoesByProcesso($idProcesso) {
		if ($idProcesso) {
			$select = $this->select()->setIntegrityCheck(false);
			$select->from(array('po' => 'sinistro.processos_observacoes'), array('po.id as id_observacao','po.ds_observacao',"to_char(po.dt_criacao, 'DD/MM/YYYY HH24:MI:SS') as dt_entrada", 'ds_nome_arquivo', 'id_tipo_observacao'));
			$select->join(array('u'  => 'sistema.usuarios'),'u.id = po.id_usuario_criacao','u.ds_nome_usuario as ds_nome_funcionario');
			$select->where("po.id_processo = ?", $idProcesso);
			$select->where("po.fl_ativo = true");
			$select->order(array('po.dt_criacao desc'));
			
			return $this->_db->fetchAll($select);
		} else {
			return false;			
		}
	}
	
	public function validaObservacaoCobranca($idProcesso, $dsObservacao, $data, $idVistoria) {
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array('po' => 'sinistro.processos_observacoes'));
		$select->join(array('vp' => 'sinistro.vistorias_processos'), 'po.id_processo = vp.id_processo', false);
		$select->where('po.id_processo = ?', $idProcesso);
		$select->where('ds_observacao = ?', $dsObservacao);
		$select->where("to_char(po.dt_criacao, 'DD/MM/YYYY') = ?", $data);
		$select->where('vp.id_vistoria = ?', $idVistoria);
		return $this->fetchAll($select)->count();
	}

	public function deletarObservacaoDiferencaIndenizacao(int $idProcesso)
	{
		$rs = $this->_db->fetchAll(
			$this->select()
				->setIntegrityCheck(false)
				->where('id_processo = ?', $idProcesso)
				->where("ds_nome_arquivo LIKE '%DIFERENCA_INDENIZACAO%'")
		);

		$ids = array_column($rs, 'id');

		if (!empty($ids)) {
			$this->delete($ids);
		}
	}
}