<?php

class Sinistro_LaudofinalController extends Agro_Controller_Action{

    public function getModel() {
        return new Sinistro_Model_LaudosFinais();
    }

    /**
	 * Redireciona a página para o formulário de cadastro
	 * de laudo da cobertura inforada
	 */
	public function setlaudofinalAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$Lf = new Zend_Session_Namespace('laudo_final');

		$Lf->idVistoria   = $this->getRequest()->getParam('id_vistoria');
		$Lf->idCobertura  = $this->getRequest()->getParam('id_cobertura');
		$Lf->idProposta   = $this->getRequest()->getParam('id_proposta');
		$Lf->idProcesso   = $this->getRequest()->getParam('id_processo');
		$Lf->idLaudoFinal = $this->getRequest()->getParam('id_laudo_final');

		if ($Lf->idRevistoria) {
			$Lf->__unset('idRevistoria');
		}

		$idProposta  = $this->getRequest()->getParam('id_proposta');
		$idCobertura = $this->getRequest()->getParam('id_cobertura');

		// Busca o schema da safra
		$Safra = new Produto_Model_Safras();
		$schema = $Safra->getSafraModel($idProposta);

		//Busca o controller do form de cadastro do laudo.
		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		$controller = $LaudoFinal->getController($idProposta,$idCobertura,$schema);

		$url = '/' . $schema .'/' . $controller . '/form';

		if($this->getRequest()->getParam('id_laudo_final')){
			$url .= '/id/' . $this->getRequest()->getParam('id_laudo_final');
		}
		//echo $url;
		$this->_redirect($url);
	}

    public function formquadrasnaosalvasAction() {
        $this->getHelper('layout')->disableLayout();

        $idItem = $this->getRequest()->getParam('id_item');
        $idProposta = $this->getRequest()->getParam('id_proposta');
        $idLaudoFinal = $this->getRequest()->getParam('id_laudo_final');

        $ItensNaoSalvos = new Sinistro_Model_LaudosFinais();

        $teste = array();
        $teste[] = array('id'=>$idItem,'nr_item_segurado'=>$idItem);

        if ($this->session->idRevistoria) {
            $this->view->itensSegurados = $ItensNaoSalvos->getItensRevistoriadosNaoSalvos($idProposta, $idItem, $this->session->idRevistoria, null);
        } else {
            $this->view->itensSegurados = $ItensNaoSalvos->getItensNaoSalvos($idProposta, $idItem, $idLaudoFinal);
        }
    }

    public function salvaquadrasnaovistoriadasAction() {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $idLaudoFinal = $this->getRequest()->getParam('id_laudo_final');

        $arItensNaoVistoriados = array();
        $arItensNaoVistoriados = $this->getRequest()->getParam('id_motivo_quadra_nao_vistoriada');

        $LaudosFinaisItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();

        foreach ($arItensNaoVistoriados as $idItemNaoVistoriado=>$idMotivoNaoVistoriado) {
            if($idMotivoNaoVistoriado != '') {
                $LaudosFinaisItensSegurados->delete($idLaudoFinal, $idItemNaoVistoriado);
            }
            if($idItemNaoVistoriado && $idMotivoNaoVistoriado) {
                if($idMotivoNaoVistoriado != 0) {
                    $dados = array();
                    $dados['id_laudo_final'] = $idLaudoFinal;
                    $dados['id_item_segurado'] = $idItemNaoVistoriado;
                    $dados['fl_nao_vistoriada'] = true;
                    $dados['id_motivo_quadra_nao_vistoriada'] = $idMotivoNaoVistoriado;

                    $LaudosFinaisItensSegurados->save($dados);
                }
            }
        }

        $this->getResponse()->setBody(Zend_Json::encode(MSG_SUCESS));
    }

    public function setstatusAction() {
    	$this->isAjax();
    	$result = array('status' => false);

    	if ($this->getRequest()->getParam('status') && $this->getRequest()->getParam('id_laudo')) {
    		$LaudosFinais = new Sinistro_Model_LaudosFinais();
    		$Laudo = $LaudosFinais->find($this->getRequest()->getParam('id_laudo'))->current();

    		$Laudo->id_status = $LaudosFinais->getIdStatus($this->getRequest()->getParam('status'), 'LF');

    		$result['status'] = $Laudo->save();
    	}

    	$this->getResponse()->setBody(Zend_Json::encode($result));
    }

    public function loaditensseguradosparcialAction() {
        $this->getHelper('layout')->disableLayout();

        $params = $this->getRequest()->getParams();

        $ModelLaudosFinais = $this->getModel();
        $this->view->data = array();

        if($params['id_laudo_final']){
			$this->view->data['itens_segurados'] = $ModelLaudosFinais->getItensSeguradosLaudoFinal($params['id_proposta'], $params['id_cobertura'], $params['id_vistoria'], $params['id_laudo_final']);
        }else{
        	$this->view->data['itens_segurados'] = $ModelLaudosFinais->getItenSeguradosParcial($params['id_proposta'], $params['id_vistoria']);
        }
    }

    public function loaditensseguradoslaudofinalAction() {
        $this->getHelper('layout')->disableLayout();

        $params = $this->getRequest()->getParams();

        $ModelLaudosFinais = $this->getModel();
        $this->view->data = array();
       	$this->view->data['itens_segurados'] = $ModelLaudosFinais->getItensSeguradosLaudoFinal($params['id_proposta'], $params['id_cobertura'], $params['id_vistoria'], $params['id_laudo_final']);
        $this->view->data['id_laudo_final'] = $params['id_laudo_final'];
        $this->view->data['id_proposta'] = $params['id_proposta'];
        $this->view->data['id_processo'] = $params['id_processo'];
        $this->view->data['ds_module'] = $params['module_name'];
        $this->view->data['ds_controller'] = $params['controller_name'];
		$this->view->data['id_vistoria'] = $params['id_vistoria'];
		$this->view->data['id_cobertura'] = $params['id_cobertura'];
        $this->view->data['fl_vistoria_preliminar'] = $params['fl_vistoria_preliminar'];

    }

    public function deleteAction(){
    	$this->isAjax();

    	try {
    		$result = array("status"=>true, "message" => "Vistoria excluída com sucesso", "type"=>"success");

    		Agro_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();

    		$params = $this->getRequest()->getParams();

    		//Exclui itens segurados
		   	$ItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
		   	$ItensSegurados->delete($params["id"]);

			//Exclui relação de vistorias e laudos finais
		   	$VistoriaFinal = new Sistema_Model_VistoriasLaudosFinais();
		   	$VistoriaFinal->delete($params["id_vistoria"]);

		   	//deleta os arquivos do laudo
		   	$ModelLaudoFinalArquivos = new Sinistro_Model_LaudosFinaisArquivos();
		   	$ModelLaudoFinalArquivos->deleteArquivosLaudoFinal($params['id']);

		   	//Exclui o laudo
		   	$ModelLaudoFinal = $this->getModel();
		   	$ModelLaudoFinal->delete($params["id"]);

		   	//Exclui vistorias
   			$ModelVistoriaAgendamento = new Sistema_Model_VistoriasAgendamentos();
   			$ModelVistoriaAgendamento->deleteVistoriaAgendamento($params["id_vistoria"]);

   			$ModelVistoriaCobertura = new Sistema_Model_VistoriasCoberturas();
   			$ModelVistoriaCobertura->delete($params["id_vistoria"],'id_vistoria');

   			$ModelVistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
   			$ModelVistoriaEmpresa->delete($params["id_vistoria"]);

   			$ModelVistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
   			$ModelVistoriaFuncionario->delete($params["id_vistoria"]);

   			$ModelVistoriaItens = new Sistema_Model_VistoriasItensSegurados();
   			$ModelVistoriaItens->delete($params["id_vistoria"]);

   			$ModelVistoria = new Sistema_Model_Vistorias();
    		$ModelVistoria->delete($params["id_vistoria"]);

    		Agro_Db_Table_Abstract::getDefaultAdapter()->commit();

    	} catch (Exception $e) {
    		Agro_Db_Table_Abstract::getDefaultAdapter()->rollback();

    		if($e->getCode() == 23503){
				$result['message'] = "Atenção!\n\nEste laudo não pode ser excluído, pois está relacionado com uma nota fiscal de cobrança.\n\nSe realmente for necessário a correção, devolva o relatório de cobrança, oriente o perito a corrigir o laudo e a refazer a cobrança.";
				//$result['message'] = $e->getMessage();
				$result['status'] = false;
				$result['type'] = "alert";

			}else{
				$result['message'] = "Não foi possível excluir o laudo.\n\nErro:{$e->getMessage()}\n\n\n";
				$result['status'] = false;
				$result['type'] = "error";
			}

			Agro_Util::informaErroAgronet($e->getMessage());
    	}

    	$this->getResponse()->setBody(Zend_Json::encode($result));
    }

    public function OLD_deleteAction(){
    	$this->isAjax();

    	$ModelCobrancaVistorias = new Sinistro_Model_CobrancaRelatorioVistorias();

    	Zend_Db_Table::getDefaultAdapter()->begindTransaction();

    	try{

	    	$idVistoria = $this->getRequest()->getParam('id_vistoria');
	    	$idProcesso= $this->getRequest()->getParam('id_processo');
	    	$idProposta= $this->getRequest()->getParam('id_proposta');
			$idCobertura= $this->getRequest()->getParam('id_cobertura');
			$idLaudo = $this->getRequest()->getParam('id');

			$count = 0;
			$count = $ModelCobrancaVistorias->fetchAll("id_vistoria = $idVistoria")->count();

			if ($count <= 0){
				// Busca o schema da safra
				$Safra = new Produto_Model_Safras();
				$schema = $Safra->getSafraModel($idProposta);

				// Busca id do produto da proposta
				$Propostas = new Seguro_Model_Propostas();
				$Proposta = $Propostas->getProposta($idProposta);
				$idProduto = $Proposta['id_produto'];

				//Busca o controller
				$ModelProdutoLaudoFinal = new Produto_Model_LaudosFinais();
				$controller = $ModelProdutoLaudoFinal->getController($idProduto,$idCobertura);

		   		switch($schema){
		   			case 'safra13':
				   		switch($controller){
							case 'lfalhocebolacura':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisAlhoCebolaCura();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisAlhoCebolaCuraItensSegurados();
								$ModelCobertura3 = new Safra13_Model_LaudosFinaisAlhoCebolaCuraItensSeguradosAmostras();
								break;
							case 'lfalhocebolagranizo':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisAlhoCebolaGranizo();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisAlhoCebolaGranizoItensSegurados();
								$ModelCobertura3 = new Safra13_Model_LaudosFinaisAlhoCebolaGranizoItensSeguradosAmostras();
								break;
							case 'lffrutas1granizo':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisFrutas1Granizo();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisFrutas1GranizoItensSegurados();
								$ModelCobertura3 = new Safra13_Model_LaudosFinaisFrutas1GranizoItensSeguradosAmostras();
								break;
							case 'lfmacagranizo':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisMacaGranizo();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisMacaGranizoItensSegurados();
								$ModelCobertura3 = new Safra13_Model_LaudosFinaisMacaGranizoItensSeguradosAmostras();
								break;
							case 'lftomatemesagranizo':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisTomateMesaGranizo();
								break;
							case 'lfuvageada':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisUvaGeada();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisUvaGeadaItensSegurados();
								break;
							case 'lfuvagranizo':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisUvaGranizo();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisUvaGranizoItensSegurados();
								break;
							case 'lfuvaquedaparreiral':
								$ModelCobertura1 = new Safra13_Model_LaudosFinaisUvaQuedaParreiral();
								$ModelCobertura2 = new Safra13_Model_LaudosFinaisUvaQuedaParreiralItensSegurados();
								$ModelCobertura3 = new Safra13_Model_LaudosFinaisUvaQuedaParreiralItensSeguradosEventos();
								break;
						}
		   			break;
		   			case 'safra12':
				   		switch($controller){
							case 'lfalhocebolacura':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisAlhoCebolaCura();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisAlhoCebolaCuraItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisAlhoCebolaCuraItensSeguradosAmostras();
								break;
							case 'lfalhocebolagranizo':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisAlhoCebolaGranizo();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisAlhoCebolaGranizoItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisAlhoCebolaGranizoItensSeguradosAmostras();
								break;
							case 'lffrutas1granizo':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisFrutas1Granizo();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisFrutas1GranizoItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisFrutas1GranizoItensSeguradosAmostras();
								break;
							case 'lfmacagranizo':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisMacaGranizo();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisMacaGranizoItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisMacaGranizoItensSeguradosAmostras();
								break;
							case 'lftomatemesagranizo':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisTomateMesaGranizo();
								break;
							case 'lfuvageada':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisUvaGeada();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisUvaGeadaItensSegurados();
								break;
							case 'lfuvagranizo':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisUvaGranizo();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisUvaGranizoItensSegurados();
								break;
							case 'lfuvaquedaparreiral':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisUvaQuedaParreiral();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisUvaQuedaParreiralItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisUvaQuedaParreiralItensSeguradosEventos();
								break;
							case 'lfgraosmultirrisco':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisGraosMultirrisco();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisGraosMultirriscoItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisGraosMultirriscoItensSeguradosAmostras();
								break;
							case 'lfgraosreplantio':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisGraosReplantio();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisGraosReplantioItensSegurados();
								break;
							case 'lftcgeada':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisTCGeada();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisTCGeadaItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAntes();
								$ModelCobertura4 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAntesAmostra();
								$ModelCobertura5 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosApos();
								$ModelCobertura6 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAposAmostra();
								$ModelCobertura7 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAposEd();
								$ModelCobertura8 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAposEdAmostra();
								$ModelCobertura9 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAposPq();
								$ModelCobertura10 = new Safra12_Model_LaudosFinaisTCGeadaItensSeguradosAposPqAmostra();
								break;
							case 'lfgraosreplantio':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisGraosReplantio();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisGraosReplantioItensSegurados();
								break;
							case 'lftcgranizo':
								$ModelCobertura1 = new Safra12_Model_LaudosFinaisTCGranizo();
								$ModelCobertura2 = new Safra12_Model_LaudosFinaisTCGranizoItensSegurados();
								$ModelCobertura3 = new Safra12_Model_LaudosFinaisTCGranizoItensSeguradosAntes();
								$ModelCobertura4 = new Safra12_Model_LaudosFinaisTCGranizoItensSeguradosAntesAmostra();
								$ModelCobertura5 = new Safra12_Model_LaudosFinaisTCGranizoItensSeguradosApos();
								$ModelCobertura6 = new Safra12_Model_LaudosFinaisTCGranizoItensSeguradosAposAmostra();
								break;
				   		}
						break;
		   			case 'safra14':
		   				break;
		   			case 'safra15':
		   				break;

		   		}

		   		//Exclui o registro da tabela sinistro.laudos_finais_itens_segurados
		   		$ItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
		   		$ItensSegurados->delete($idLaudo);

		       		//Exclui o registro da tabela sistema.vistorias_laudos_finais
		   		$VistoriaFinal = new Sistema_Model_VistoriasLaudosFinais();
		   		$VistoriaFinal->delete($idVistoria);

		   		//Exclui o registro da tabela sinistro.laudos_finais
		   		$ModelLaudoFinal = $this->getModel();
		   		if($ModelLaudoFinal->delete($idLaudo)){

		   			$ModelVistoriaAgendamento = new Sistema_Model_VistoriasAgendamentos();
		   			$ModelVistoriaAgendamento->deleteVistoriaAgendamento($idVistoria);

		   			$ModelVistoriaCobertura = new Sistema_Model_VistoriasCoberturas();
		   			$ModelVistoriaCobertura->delete($idVistoria,'id_vistoria');

		   			$ModelVistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
		   			$ModelVistoriaEmpresa->delete($idVistoria,'id_vistoria');

		   			$ModelVistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
		   			$ModelVistoriaFuncionario->delete($idVistoria,'id_vistoria');

		   			$ModelVistoriaItens = new Sistema_Model_VistoriasItensSegurados();
		   			$ModelVistoriaItens->delete($idVistoria,'id_vistoria');

		   			$ModelVistoria = new Sistema_Model_Vistorias();
		    		$ModelVistoria->delete($idVistoria);

		    		$return['message'] = "Laudo excluído com sucesso!";
		    	}else{
		    		$return['message'] = "Erro ao excluir vistoria!";
		    	}

		   		//Exclui o laudo conforme a cobertura e cultura
		   		if($ModelCobertura1) $ModelCobertura1->delete($idLaudo);
		   		if($ModelCobertura2) $ModelCobertura2->delete($idLaudo);
		   		if($ModelCobertura3) $ModelCobertura3->delete($idLaudo);
		   		if($ModelCobertura4) $ModelCobertura4->delete($idLaudo);
		   		if($ModelCobertura5) $ModelCobertura5->delete($idLaudo);
		   		if($ModelCobertura6) $ModelCobertura6->delete($idLaudo);
		   		if($ModelCobertura7) $ModelCobertura7->delete($idLaudo);
		   		if($ModelCobertura8) $ModelCobertura8->delete($idLaudo);
		   		if($ModelCobertura9) $ModelCobertura9->delete($idLaudo);
		   		if($ModelCobertura10) $ModelCobertura10->delete($idLaudo);

		   		$return['message'] = "Laudo excluído com sucesso!";

		   		Zend_Db_Table::getDefaultAdapter()->commit();

			} else {
				$return['message'] = "Atenção!\n\n Este laudo não pode ser excluído, pois está relacionado com uma nota fiscal de cobrança.
									 \n\n Se realmente for necessário a correção, devolva o relatório de cobrança, oriente o perito a corrigir
									 o laudo e a refazer a cobrança.";
				Zend_Db_Table::getDefaultAdapter()->rollback();
			}

    	} catch (Exception $e){
    		if($e->getCode() == 23503){
				$return['message'] = "Atenção!\n\n Este laudo não pode ser excluído, pois está relacionado com uma nota fiscal de cobrança.
									 \n\n Se realmente for necessário a correção, devolva o relatório de cobrança, oriente o perito a corrigir
									 o laudo e a refazer a cobrança.";
			}else{
				$return['message'] = "Erro ao excluir o laudo. \n\nErro: {$e->getMessage()}";
			}
    		Zend_Db_Table::getDefaultAdapter()->rollback();
    	}
    	$this->getResponse()->setBody(Zend_Json::encode($return));
    }

	public function envialaudofinalAction() {
		$this->isAjax();
		$params = $this->getRequest()->getParams();

		$Model_Status = new Sistema_Model_Status();
		$Model_LaudosFinais = $this->getModel();
		$Model_LaudosFinaisIS = new Sinistro_Model_LaudosFinaisItensSegurados();

		/*
		 * Verifica se os laudos escaneados foram inserios para todos os itens segurados
		*/
		$flErroArquivo = false;
		$RowIS = $Model_LaudosFinaisIS->getLaudoEscaneado($params['id_laudo_final']);
		foreach($RowIS as $key => $laudoFisico){
			if($laudoFisico['ds_nome_laudo_fisico'] == null || $laudoFisico['ds_nome_laudo_fisico'] == ''){
				$flErroArquivo = true;
			}
		}

		if($flErroArquivo == true){
			$response = array('complete' => false, 'message' => 'Favor incluir o laudo escaneado em PDF em todos os talhões.');
		} else {		
			$idStatus = $Model_Status->getIdStatus('ENVIADO', 'LF');
			$RowIS = $Model_LaudosFinaisIS->getLaudoEscaneado($params['id_laudo_final']);
			$flErroArquivo = false;
	
			foreach($RowIS as $key => $laudoFisico){
				if($laudoFisico['ds_nome_laudo_fisico'] == null || $laudoFisico['ds_nome_laudo_fisico'] == ''){
					$flErroArquivo = true;
				}
			}
	
			if($flErroArquivo == true){
				$response = array('complete' => false, 'message' => 'Favor incluir o laudo escaneado em PDF em todos os talhões.');
			} else {
				$Row = $Model_LaudosFinais->getRow($params['id_laudo_final']);
				$Row->id_status = $idStatus;
				$Row->save();
	
				$response = array('complete' => true, 'message' => 'Laudo enviado com sucesso!');
			}
		}

		$this->getResponse()->setBody(Zend_Json::encode($response));
	}

	public function devolvelaudofinalAction() {
		$this->getHelper('layout')->disableLayout();
		$params = $this->getRequest()->getParams();

		$Model_Status = new Sistema_Model_Status();
		$idStatus = $Model_Status->getIdStatus('PENDENTE_ENVIO', 'LF');

		$Model_LaudosFinais = $this->getModel();

		$Row = $Model_LaudosFinais->getRow($params['id_laudo_final']);
		$Row->id_status = $idStatus;
		$Row->save();

		$url = '/'.$params['module_name'].'/'.$params['controller_name'].'/form/id_laudo_final/'.$params['id_laudo_final'].'/id_processo/'.$params['id_processo'];

		$this->_redirect($url);
	}

	public function iscompleteAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$params = $this->getRequest()->getParams();

		if ($params['id_laudo_final']){
			$Model_LaudosFinais = new Sinistro_Model_LaudosFinais();

			$LaudoFinal = $Model_LaudosFinais->getLaudoFinalGeneralizacao($params['id_laudo_final']);

			if (($LaudoFinal['ds_chave_status'] == 'AGUARDANDO_ENVIO' || $LaudoFinal['ds_chave_status'] == 'DEVOLVIDO') && $Model_LaudosFinais->isComplete($params['id_laudo_final'])) {

				$response = array('complete' => true);
			} else {
				$response = array('complete' => false);
			}

		} else {
			$response = array('complete' => false);
		}

		$this->getResponse()->setBody(Zend_Json::encode($response));
	}

	public function adicionaitenslaudofinalAction(){
		$this->getHelper('layout')->disableLayout();

		$ModelLfis = new Sinistro_Model_LaudosFinaisItensSegurados();
		$ModelIs = new Seguro_Model_ItensSegurados();

		$params = $this->getRequest()->getParams();

		$Rows = $ModelLfis->fetchAll("id_laudo_final=".$params["id_laudo_final"]);

		$itens_laudo = array();
		foreach ($Rows as $item){
			$itens_laudo[] = $item->id_item_segurado;
		}

		if (count($itens_laudo)){
			$ItensSegurados = $ModelIs->fetchAll("id_proposta={$params["id_proposta"]} and id not in (".implode(", ", $itens_laudo).")");
		} else {
			$ItensSegurados = $ModelIs->fetchAll("id_proposta={$params["id_proposta"]}");
		}

		$this->view->id_proposta 	 = $params["id_proposta"];
		$this->view->id_laudo_final  = $params["id_laudo_final"];
		$this->view->itens_segurados = $ItensSegurados;
	}

	public function insereitensnovosAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$params = $this->getRequest()->getParams();

		if ($params["id_item_segurado"]){
			$response = array("status" => false, "message"=>"");

			$ModelLfIs = new Sinistro_Model_LaudosFinaisItensSegurados();

			try {
				foreach ($params["id_item_segurado"] as $id_item_segurado){
					$Row = $ModelLfIs->createRow();
					$Row->id_laudo_final = $params["id_laudo_final"];
					$Row->id_item_segurado = $id_item_segurado;

					$Row->save();
				}

				$response["status"] = true;

			} catch (Exception $e) {
				$response["message"] = "Não foi possível atribuir o Item Segurado. \nErro: $e->getMessage()";
				Agro_Util::informaErroAgronet($e->getMessage());
			}
		} else {
			$response["message"] = "É necessário selecionar ao menos 1 item para inserção.";
		}

		$this->getResponse()->setBody(Zend_Json::encode($response));
	}


	public function replicadanositenslaudofinalAction(){
		$this->getHelper('layout')->disableLayout();

		$params = $this->getRequest()->getParams();

		$ModelLaudoFinal = new Sinistro_Model_LaudosFinais();

		$ItensSegurados = $ModelLaudoFinal->getItensSeguradosLaudoFinal($params['id_proposta'],$params['id_cobertura'],$params['id_vistoria'],$params['id_laudo_final']);

		$this->view->id_proposta 	 = $params["id_proposta"];
		$this->view->id_laudo_final  = $params["id_laudo_final"];
		$this->view->itens_segurados = $ItensSegurados;

	}

	public function concatenaitensseguradosAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$params = $this->getRequest()->getParams();

		$result = array("status"=>false, "itens"=>"");

		if ($params["id_item_segurado"]){
			$result["status"] = true;
			$result["itens"] = implode("-", $params["id_item_segurado"]);
		}

		$this->getResponse()->setBody(Zend_Json::encode($result));
	}

    public function loadlaudoescaneadoAction() {
        $this->getHelper('layout')->disableLayout();

        $params = $this->getRequest()->getParams();

        $ModelLaudosFinais = $this->getModel();
        $this->view->data = array();
        $this->view->laudoEscaneado = $ModelLaudosFinais->getLaudoEscaneado($params['id_laudo_final']);
    }


    public function enviatabletAction(){
    	$this->isAjax();
    	$ModelLaudosFinais = $this->getModel();
    	$ModelProposta     = new Seguro_Model_Propostas();

    	try {
    		$result = array("status"=>true, "message" => "Laudo transmitido com sucesso para o Tablet", "type"=>"success");

    		Agro_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();

    		//(1: Multiriesgo, 2: Granizo, 3: Incendio, 4: Viento, 5: Helada, 6: Otro, 7: Sequía, 8: Inundación)

    		switch($this->getRequest()->getParam('id_cobertura')){
    			case '18': $idEvento = 1; break;
    			case '1' : $idEvento = 2; break;
    			case '27': $idEvento = 3; break;
    			case '20': $idEvento = 4; break;
    			case '3' : $idEvento = 5; break;
    			case ''  : $idEvento = 7; break;
    			case ''  : $idEvento = 8; break;
    			default  : $idEvento = 6;
    		}

    		$Proposta   = $ModelProposta->find($this->getRequest()->getParam('id_proposta'))->current();
    		$RsVistoria = $ModelLaudosFinais->getDadosEnviaTablet($this->getRequest()->getParam('id_proposta'), $this->getRequest()->getParam('id_cobertura'), $this->getRequest()->getParam('id_vistoria'));

    		$arCoordenadas = explode(" , ", $RsVistoria['ds_coordenadas']);
    		$arLatitude    = explode(" ", $arCoordenadas[0]);
    		$arLongitude   = explode(" ", $arCoordenadas[1]);

    		$lat = $arLatitude[0]+((($arLatitude[1]*60)+($arLatitude[2]))/3600);
    		$log = $arLongitude[0]+((($arLongitude[1]*60)+($arLongitude[2]))/3600);

    		$xmlInspection ='<?xml version="1.0" encoding="utf-8"?>
								<Inspection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="LossInspection">
									<InspectionObservations>'.$RsVistoria["avisos"].'</InspectionObservations>
									<Establishment>
										<EstablishmentName>'.$RsVistoria["ds_nome_propriedade"].'</EstablishmentName>
										<TownId>'.$RsVistoria["id_municipio"].'</TownId>
										<DistrictId>'.$RsVistoria["id_estado"].'</DistrictId>
										<EstablishmentGPSLatitude>'.$lat.'</EstablishmentGPSLatitude>
										<EstablishmentGPSLongitude>'.$log.'</EstablishmentGPSLongitude>
										<EstablishmentObservation>'.$RsVistoria["ds_referencia_localizacao"].'</EstablishmentObservation>
									</Establishment>
									<Contact>
										<ContactMobile>'.$RsVistoria["ds_tel_celular"].'</ContactMobile>
										<ContactName>'.$RsVistoria["ds_nome_proponente"].'</ContactName>
										<ContactTelephone>'.$RsVistoria["ds_tel_residencia"].'</ContactTelephone>
									</Contact>
								  <Images/>
								  <Policies>
								    <Policy>
										<Insured>
											<InsuredName>'.$RsVistoria["ds_nome_proponente"].'</InsuredName>
											<InsuredTelephone>'.$RsVistoria["ds_tel_residencia"].'</InsuredTelephone>
										</Insured>
										<InspectionCompanyCode>1001777</InspectionCompanyCode>
										<PolicyNumber>'.$RsVistoria["nr_apolice"].'</PolicyNumber>
										<EventDate xsi:nil="true">'.$RsVistoria["dt_sinistro"].'</EventDate>
										<LossClaimDate xsi:nil="true">'.$RsVistoria["dt_criacao"].'</LossClaimDate>
										<PolicyEffectiveDate xsi:nil="true">'.$RsVistoria["dt_aceitacao"].'</PolicyEffectiveDate>
										<Events>
											<Event><EventId>'.$idEvento.'</EventId></Event>
										</Events>
										<OtherEventDescr>Otro</OtherEventDescr>
							      		<PolicyCoverages>
							          		<Coverage>
												<CoverageAffectedArea>true</CoverageAffectedArea>
							          			<CoverageInsuredArea>true</CoverageInsuredArea>
							          			<CoveragePercentage>100.0</CoveragePercentage>
							          			<EventId>'.$idEvento.'</EventId>
							          			<CoverageExcess>false</CoverageExcess>
							        		</Coverage>
							      		</PolicyCoverages>
								    </Policy>
								  </Policies>
								  <RequestedShares>';

								foreach($Proposta->unidades(false) as $item) {
    								$xmlInspection .= '
										<RequestedShare xsi:type="LossRequestedShare">
											<ShareArea>'.$item["IS_AREA"].'</ShareArea>
											<ShareAffectedArea>'.$item["IS_AREA"].'</ShareAffectedArea>
											<ShareName>'.$item["IS_ITEM"].'</ShareName>
											<CropTypeId>9999</CropTypeId>
											<SharePotentialYield>'.$item["IS_PRODUTIVIDADE"].'</SharePotentialYield>
											<SowedDate xsi:nil="true">'.$item["IS_DATA_SEMEADURA"].'</SowedDate>
											<InsuredAmountPerUnitMetric>P</InsuredAmountPerUnitMetric>
											<InsuredAmountPerUnit>0</InsuredAmountPerUnit>
										</RequestedShare>
    								';
    							}

    		$xmlInspection .= '</RequestedShares>
							</Inspection>';


    		$xmlInspection64 = base64_encode($xmlInspection);
    		$user            = "wwTkG/uIQ+5WdWOYcu/IG2wwTakUr7xK"; //crypt("inspectorAgroNet");
    		$password        = "G7405ibF82gnlZ49wHu0ig=="; //crypt("pass12345");

    		$xml = '
				    <CreateNewInspection xmlns="http://tempuri.org/">
				      <userName>'.$user.'</userName>
				      <userPassword>'.$password.'</userPassword>
				      <newInspection>'.$xmlInspection64.'</newInspection>
				    </CreateNewInspection>
    		';

    		require_once(APPLICATION_PATH . "/../library/Agro/nusoap/nusoap.php");

    		$client = new nusoap_client('http://www.taghgestion.com.ar:8131/SynchronizationBR.asmx');
    		$client->soap_defencoding = 'utf-8';
    		$client->xml_encoding = 'utf-8';
    		$client->decode_utf8 = false;

    		$arr = array('CreateNewInspection' => array(
    				'userName'      => $user,
    				'userPassword'  => $password,
    				'newInspection' => $xmlInspection64)
    		);

			try{
				$client->debug_flag=true;
				$msg = $client->serializeEnvelope($xml);
				$result = $client->send($msg, "http://tempuri.org/CreateNewInspection");

				print_r(base64_decode($result['CreateNewInspectionResult']));
			}catch(Exception $e){
				dump($e);
			}

    		Agro_Db_Table_Abstract::getDefaultAdapter()->commit();

    	} catch (Exception $e) {
    		Agro_Db_Table_Abstract::getDefaultAdapter()->rollback();


   			$result['message'] = "Não foi possível enviar o laudo.\n\nErro:{$e->getMessage()}\n\n\n";
   			$result['status'] = false;
   			$result['type'] = "error";

    		Agro_Util::informaErroAgronet($e->getMessage());
    	}

    	$this->getResponse()->setBody(Zend_Json::encode($result));
    }



}
