<?

class Sinistro_LaudopreliminarController extends Agro_Controller_Action{
    
	public function getModel() {
        return new Sinistro_Model_LaudosPreliminares();
    }
	/**
	 * Redireciona a página para o formulário de cadastro
	 * de laudo da cobertura inforada
	 */
	public function setlaudopreliminarAction() {
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$Lp = new Zend_Session_Namespace('laudo_preliminar');
		$Lp->idVistoria  = $this->getRequest()->getParam('id_vistoria');
		$Lp->idCobertura = $this->getRequest()->getParam('id_cobertura');
		$Lp->idProposta  = $this->getRequest()->getParam('id_proposta');
		$Lp->idProcesso  = $this->getRequest()->getParam('id_processo');
			
		$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.
		$LaudoPreliminar = new Sinistro_Model_LaudosPreliminares();
		$controller = $LaudoPreliminar->getController($idProposta,$idCobertura,$schema);
		
		$url = '/' . $schema .'/' . $controller . '/form';
		
		if($this->getRequest()->getParam('id_laudo_preliminar')){
			$url .= '/id/' . $this->getRequest()->getParam('id_laudo_preliminar');
		}
		//echo $url;
		$this->_redirect($url);
	}
	
    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_LaudosPreliminaresItensSegurados();
		   	$ItensSegurados->delete($params["id"], "id_laudo_preliminar");
		
			//Exclui relação de vistorias e laudos preliminares
		   	$VistoriaPreliminar = new Sistema_Model_VistoriasLaudosPreliminares();
		   	$VistoriaPreliminar->delete($params["id_vistoria"]);

		   	$ModelLaudoPreliminar = $this->getModel();
		   	
		   	//deleta os arquivos do laudo
		   	$ModelLaudoPreliminar->deleteArquivo($params["id"]);
		   	
		   	//Exclui o laudo
		   	$ModelLaudoPreliminar->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"],'id_vistoria');
   			
   			$ModelVistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
   			$ModelVistoriaFuncionario->delete($params["id_vistoria"],'id_vistoria');
    		
   			$ModelVistoriaItens = new Sistema_Model_VistoriasItensSegurados();
   			$ModelVistoriaItens->delete($params["id_vistoria"],'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\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.\n\n\n";
				$result['status'] = false;
				$result['type'] = "alert";
				
			}else{
				$result['message'] = "Não foi possível excluir o laudo. \n\nErro:{$e->getMessage()}";
				$result['status'] = false;
				$result['type'] = "error";
			}
    	}
    	
    	$this->getResponse()->setBody(Zend_Json::encode($result));
    }
    
    public function OLD_deleteAction(){
    	$this->isAjax();
 
    	$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');		
		
		// 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
		$ModelProdutoLaudoPreliminar = new Produto_Model_LaudosPreliminares();
		$controller = $ModelProdutoLaudoPreliminar->getController($idProduto,$idCobertura);		
		
    
   		switch($schema){
   			case 'safra13':
		   		switch($controller){
					case 'fhgranizos':
						$ModelCobertura1 = new Safra13_Model_FHGranizos();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresFrutasHortalicasItensSegurados();

						break;
					case 'lpgraos':
						$ModelCobertura1 = new Safra13_Model_LaudosPreliminaresGraos();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresGraosItensSegurados();
						break;
					case 'lpuvageada':
						$ModelCobertura1 = new Safra13_Model_LaudosPreliminaresUvaGeada();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresUvaGeadaItensSegurados();;
						break;
					case 'lpreplantio':
						$ModelCobertura1 = new Safra13_Model_LaudosPreliminaresReplantio();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresReplantioItensSegurados();
						break;
				}   				
   			break;
   			case 'safra12':
		   		switch($controller){
					case 'fhgranizos':
						$ModelCobertura1 = new Safra13_Model_FHGranizos();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresFrutasHortalicasItensSegurados();
						break;
					case 'lpgraos':
						$ModelCobertura1 = new Safra13_Model_LaudosPreliminaresGraos();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresGraosItensSegurados();
						break;
					case 'lpuvageada':
						$ModelCobertura1 = new Safra13_Model_LaudosPreliminaresUvaGeada();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresUvaGeadaItensSegurados();;
						break;
					case 'lpreplantio':
						$ModelCobertura1 = new Safra13_Model_LaudosPreliminaresReplantio();
						$ModelCobertura2 = new Safra13_Model_LaudosPreliminaresReplantioItensSegurados();
						break;					
		   		}											
				break;
   			case 'safra14':
   				break;
   			case 'safra15':
   				break;
   		
   		}		
		
   		$Preliminar = new Sistema_Model_VistoriasLaudosPreliminares();
   		$Preliminar->delete($idVistoria,'id_vistoria');
   		
   		$ItensSegurados = new Sinistro_Model_LaudosPreliminaresItensSegurados();
   		$ItensSegurados->deleteItensLaudoPreliminar($idLaudo,'id_vistoria');
   		
   		if($ModelCobertura1) $ModelCobertura1->delete($idLaudo);
   		if($ModelCobertura2) $ModelCobertura2->delete($idLaudo,'id_laudo_preliminar_item_segurado');
		
		$ModelLaudoPreliminar = $this->getModel();
		$ModelVistoria = new Sistema_Model_Vistorias();
    	
		if($ModelVistoria->delete($idVistoria)){
			
   			$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');		
			
    		$ModelLaudoPreliminar->delete($idLaudo);
    		$return['message'] = "Dados excluídos com sucesso!";
    	}else{
    		$return['message'] = "Erro ao excluir vistoria!";
    	}

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

    public function envialaudopreliminarAction() {
        $this->getHelper('layout')->disableLayout();
        $params = $this->getRequest()->getParams(); 
        
        $Model_Status = new Sistema_Model_Status();
        $idStatus = $Model_Status->getIdStatus('ENVIADO', 'LAUDOS_PRELIMINARES');
        
        $Model_LaudosPreliminares = $this->getModel();
        
        $Row = $Model_LaudosPreliminares->getRow($params['id_laudo_preliminar']);
        $Row->id_status = $idStatus;
        $Row->save();
        
        $url = '/'.$params['module_name'].'/'.$params['controller_name'].'/form/id/'.$params['id_laudo_preliminar'].'/id_processo/'.$params['id_processo'].'/enviado/1';
        
        $this->_redirect($url);     
    }
    
    public function envialaudopreliminarajaxAction() {
        $this->isAjax();
    	
    	$this->getHelper('layout')->disableLayout();
        $params = $this->getRequest()->getParams(); 
        
        $return = array("status"=>true, "message"=>"Laudo enviado");
        
        try {
			$Model_Status = new Sistema_Model_Status();
	        $idStatus = $Model_Status->getIdStatus('ENVIADO', 'LAUDOS_PRELIMINARES');
	        
	        $Model_LaudosPreliminares = $this->getModel();
	        
	        $Row = $Model_LaudosPreliminares->getRow($params['id_laudo_preliminar']);
	        $Row->id_status = $idStatus;
	        $Row->save();
			        	
        } catch (Exception $e) {
        	$return["status"] = false;
        	$return["message"] = $e->getMessage();
        }
        
        $this->getResponse()->setBody(Zend_Json::encode($return));
    }
    
    public function devolvelaudopreliminarAction() {
        $this->getHelper('layout')->disableLayout();
        $params = $this->getRequest()->getParams(); 
        
        $Model_Status = new Sistema_Model_Status();
        $idStatus = $Model_Status->getIdStatus('PENDENTE_ENVIO', 'LAUDOS_PRELIMINARES');
        
        $Model_LaudosPreliminares = $this->getModel();
        
        $Row = $Model_LaudosPreliminares->getRow($params['id_laudo_preliminar']);
        $Row->id_status = $idStatus;
        $Row->save();
        
        $url = '/'.$params['module_name'].'/'.$params['controller_name'].'/form/id/'.$params['id_laudo_preliminar'].'/id_processo/'.$params['id_processo'];
        
        $this->_redirect($url);     
    }
    
    public function loaditensseguradosparcialAction() {
        $this->getHelper('layout')->disableLayout();
        
        $params = $this->getRequest()->getParams();
        
        $ModelLaudosFinais = $this->getModel();
        $this->view->data = array();
        $this->view->data['itens_segurados'] = $ModelLaudosFinais->getItenSeguradosParcial($params['id_proposta'],$params['id_vistoria']);
    }
}