<?

class Sinistro_Model_LiquidacoesCanceladas extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'liquidacoes_canceladas';
	protected $_primary = 'id';
	public $_order = 'id';

	public function save($dados){
		$ModelChamados = new Atendimento_Model_Chamado();
		$ModelTiposChamado = new Atendimento_Model_TipoChamado();
		$ModelProcessos = new Sinistro_Model_Processos();
		$ModelLiquidacoes = new Sinistro_Model_Liquidacoes();
		$ModelProcessoObs = new Sinistro_Model_ProcessosObservacoes();
		$ModelChamadosDestinatarios = new Atendimento_Model_ChamadoDestinatario();

		try{
			$Liquidacao = $ModelLiquidacoes->find($dados['id_liquidacao'])->current();

			/**
			 * Salva Log exclusão liquidação
			 */
			$Row = $this->getRow($dados['id']);
			$Row->id_liquidacao = $dados['id_liquidacao'];
			$Row->ds_motivo = $dados["motivo_exclusao"];

			$Row->save();

			/*
			 * Salva Obs no Processo
			 */
			$Obs = $ModelProcessoObs->createRow();
			$Obs->id_processo = $Liquidacao->id_processo;
			$Obs->ds_observacao = "<b>Excluiu</b> a liquidação nº $Liquidacao->id.<br><b>Motivo: </b>$Row->ds_motivo";
			$Obs->ds_nome_arquivo = $dados['ds_nome_arquivo'];
			$Obs->save();		
			
			/**
			*	Envia chamado para a nobre se a liquidação já foi enviada
			*/
			if ($Liquidacao->id_status == Agro_Util::status("ENVIADA_SEGURADORA", "LIQUIDACOES")){
				$Processo = $ModelProcessos->find($Liquidacao->id_processo)->current();

				$Chamado = $ModelChamados->createRow();

				$Chamado->id_proposta = $Processo->id_proposta;
				$Chamado->id_departamento = 23;
				$Chamado->id_status = Agro_Util::status("NOVO_CHAMADO", "CH");
				$Chamado->id_prioridade = 3;

				$TipoChamado = $ModelTiposChamado->fetchRow("ds_chave = 'SEGURADORA_EXCLUSAO_LIQUIDACAO'");
				$Chamado->id_tipo_chamado = $TipoChamado->id;

				$User = Zend_Auth::getInstance()->getIdentity();

				if ($Processo->id_usuario_responsavel_liquidacao){
					$Chamado->id_responsavel = $Processo->id_usuario_responsavel_liquidacao;

				} else {
					$Chamado->id_responsavel = ($TipoChamado->id_responsavel ? $TipoChamado->id_responsavel : $User->id);
				}

				$Chamado->ds_descricao = "A liquidação nº $Liquidacao->id foi excluída por $User->ds_nome_usuario.\n Motivo: {$dados["motivo_exclusao"]}";

				$id_chamado = $Chamado->save();

				if (!$id_chamado){
					return false;
				}

				$Destinatario = $ModelChamadosDestinatarios->createRow();
				$Destinatario->id_chamado = $id_chamado;
				$Destinatario->ds_tipo_destinatario = "S";

				if (!$Destinatario->save()){
					return false;

				}

			}

			return true;

		}catch (Exception $e){
			$this->setMessage($e->getMessage());
			return false;
		}

	}

}




