<?
/**
 * Controller
 * 
 * Laudo final Tomate de Mesa - Cobertura: Granizo / Safra13
 * 
 * @author Vinicius Berni
 * @date 11/08/2010
 *
 */
class Safra13_LftomatemesagranizoController extends Agro_Controller_Action{
	
	public function init(){
			
	}

	public function formAction(){
		// Model comum a todas as safras
		$Safra = new Produto_Model_Safras();
		// Usuario Logado
		$User = Zend_Auth::getInstance()->getIdentity();
		// VistoriaEmpresa
		$VistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
		// Revistoria
		$RevistoriaVistoria = new Sistema_Model_RevistoriasVistorias();
		// Motivo não realizada
		$ModelMotivoQuadraNaoVistoriada = new Sinistro_Model_MotivosQuadraNaoVistoriada();
		// Laudos Finais
		$ModelLaudosFinais = new Sinistro_Model_LaudosFinais();
		
		// Array com dados da tela
		$dados = $this->getRequest()->getParams();
		
		//Laudo Tomate
		$nomeModel = $Safra->getSafraModel($dados['id_proposta'],'LaudosFinaisTomateMesaGranizo');
		$ModelLaudoTomateMesaGranizo = new $nomeModel;
		
	
		// Se não tem laudo, salva...
		if(!$dados['id_laudo_final']) {
			$dados['id_laudo_final'] = $this->save($dados);
		}
		
		$laudos_finais = $ModelLaudosFinais->find($dados['id_laudo_final'])->current();
		
		$dados = array_merge($dados, $laudos_finais);
		
		$laudo_tomate = $ModelLaudoTomateMesaGranizo->getByLaudoFinal($dados['id_laudo_final']);
		
		$dados = array_merge($dados, $laudo_tomate);
		
		$dados['user_vistoria_mesma_empresa'] = $VistoriaEmpresa->checkUsuarioVistoriaMesmaEmpresa($User->id, $dados['id_vistoria']);

		$dados['has_revistoria'] = $RevistoriaVistoria->hasRevistoria($dados['id_vistoria']);	
		 
		if ($dados['id_revistoria']) {
			$ModelRevistoria = new Sistema_Model_Revistorias();
			
			$Revistoria = $ModelRevistoria->find($dados['id_revistoria'])->current();
			
			$dados['revistoria'] = array("id_revistoria" => $dados["id_revistoria"],
										 "ds_motivo" => $Revistoria["ds_motivo"],
										 "fl_realizada" => ($Revistoria["fl_realizada"] ? "S" : "N"),
										 "ds_motivo_nao_realizada" 	=> $Revistoria["ds_motivo_nao_realizada"]);
			
		} else {
			$dados['revistoria'] = false;
			
		}
		
		unset($dados["id_revistoria"]);
		
		$dados["motivo_nao_realizada"] = $ModelMotivoQuadraNaoVistoriada->fetchAll()->toArray();
		
		$dados["dados_quadra"] = $this->getDadosQuadra($dados);
		
		// Seta dados na view
		$this->view->dados = $dados;
		
		$this->view->user = $User;
	
	}
	
	public function save(array $dados){
		
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();
		
			/****************************************************/
			// Tabela sistema.revistorias
			/***************************************************/
			if ($dados['revistoria']) {
				$Revistoria = new Sistema_Model_Revistorias();			
				$data = array();
				if ($dados['revistoria']['fl_realizada'] == 'S') {
					$data['fl_realizada']  = 1; 
				} else {
					$data['fl_realizada']  = 0;
					$data['ds_motivo_nao_realizada'] = $dados['revistoria']['ds_motivo_nao_realizada'];
				}
			   	$Revistoria->update($data, 'id_vistoria = ' . $dados['revistoria']['id_revistoria']);
			}
			
			/****************************************************/
			// Tabela sinistro.laudos_finais
			/***************************************************/
			$LaudosFinais = new Sinistro_Model_LaudosFinais();

			$laudo = array();
			$laudo['id_processo'] = $dados['id_processo'];
			$laudo['id_cobertura'] = $dados['id_cobertura'];
			
	  		$laudo['fl_evento_nao_constatado'] = ($dados['fl_evento_nao_constatado'] ? 1 : 0);
	  		$laudo['ds_observacao'] = $dados['ds_observacao'];
	  		$laudo['fl_area_atingida'] = ($dados['fl_area_atingida'] ? $dados['fl_area_atingida'] : '');
	  		
  			$id_laudo_final = ($dados['id_laudo_final'] ? $dados['id_laudo_final'] : false);
  			
  			if ($id_laudo_final){
  				$laudo['id'] = $id_laudo_final;
  			}
  			
  			// Salva Laudo Final
  			$id_laudo_final = $LaudosFinais->save($laudo);
  			
  			$dados['id_laudo_final'] = $id_laudo_final;
  					
			/****************************************************/
			// Tabela sistema.vistorias_laudos_finais
			/***************************************************/
  			$VistoriasLaudosFinais = new Sistema_Model_VistoriasLaudosFinais();
  			
  			$RowVistoria = $VistoriasLaudosFinais->fetchRow(array("id_vistoria = {$dados['id_vistoria']}", "id_laudo_final=$id_laudo_final"));
  			
  			if (!$RowVistoria){
  				$Row = $VistoriasLaudosFinais->createRow();
				$Row->id_vistoria    = $dados['id_vistoria'];
				$Row->id_laudo_final = $id_laudo_final;
				$Row->save();
  			}
					
			/****************************************************/
			// Tabela safraX.laudos_finais_tomate_mesa_granizo
			/***************************************************/
	    	$Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($dados['id_proposta'],'LaudosFinaisTomateMesaGranizo');
			$LaudoTomateMesaGranizo = new $nomeModel;
			$LaudoTomateMesaGranizo->delete($id_laudo_final);
			
			$LaudoTomateMesaGranizo->save($dados);
			
			
			
	
			/****************************************************/
			// Tabela sinistro.laudos_finais_itens_segurados
			/***************************************************/
			//$SinistroItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
			//$SinistroItemSegurado->delete($id_laudo_final);
			
			/****************************************************/
			// Tabela sistema.vistorias_itens_segurados
			/***************************************************/
			//$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
			//$VistoriaItensSegurados->delete($dados['id_vistoria']);
										
			$Db->commit();
			
			return $id_laudo_final;
			
		} catch (Exception $e) {
			$Db->rollBack();
		}
	}

	public function savelaudoAction(){		
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$result = array("status" => true, "message" => MSG_SUCCESS, "execute" => "");
		
		try {
			$dados = $this->getRequest()->getParams();
			
			if ($this->save($dados)){
				$result['execute'] = "history.go(0);";
			
			} else {
				$result["status"] = false;
				$result["message"] = MSG_ERROR;
			}	
		} catch (Exception $e) {
			$result["status"] = false;
			$result["message"] = $e->getMessage();
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
	
	public function getDadosQuadra($dados) {
		$Safra = new Produto_Model_Safras();
		
		$nomeModel = $Safra->getSafraModel($dados['id_proposta'],'LaudosFinaisTomateMesaGranizo');
		
		$LaudosFinaisTomateMesaGranizo = new $nomeModel;
		
		$arr = array();
		$arr['id_cobertura'] = $dados['id_cobertura'];
		$arr['id_processo'] = $dados['id_processo'];
		$arr['id_laudo_final'] = $dados['id_laudo_final'];
		
		return $LaudosFinaisTomateMesaGranizo->getDadosItens($arr);
	}
	
	public function selecionaquadrasAction(){
		$this->getHelper('layout')->disableLayout();
		$Quadras = array();
		
		$ModelItensSegurados = new Seguro_Model_ItensSegurados();
		
		$id_proposta = $this->getRequest()->getParam("id_proposta");
		$id_laudo_final = $this->getRequest()->getParam("id_laudo_final");
		
		$ItensSegurados = $ModelItensSegurados->fetchAll("id_proposta = $id_proposta");
		
		if ($ItensSegurados){
			foreach ($ItensSegurados as $item){
				$Quadras[] = array("id" => $item->id, 'nome' => $item->ds_item_segurado);
			}
		
		} else {
			$Quadras = false;
			
		}
		
		$this->view->id_proposta = $id_proposta;
		
		$this->view->id_laudo_final = $id_laudo_final;
		
		$this->view->quadras = $Quadras;

	}
	
	public function salvaquadrasselecionadasAction(){		
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();

		$result = array("status" => true, "execute" => "");
		
		$dados = $this->getRequest()->getParams();
		
		$ModelItemSegurado = new Seguro_Model_ItensSegurados();
	
		$total = $ModelItemSegurado->getAreaTotal($dados['id_proposta']);
		
		$SumQuadrasSelecionadas = 0;
		
		$this->saveLfItensSegurados($dados['id_quadra'], $dados['id_laudo_final']);
		
		foreach ($dados['id_quadra'] as $id_quadra){
			$ItemSegurado = $ModelItemSegurado->find($id_quadra)->current();
			$SumQuadrasSelecionadas+= $ItemSegurado->vl_area;
		}
		
		if ($SumQuadrasSelecionadas == $total){
			
			$result['execute'] = "$('#fl_area_atingida_t').click(); $('#btnSalvarLaudo').click();";
			
		} else {
			$result['execute'] = "$('#btnSalvarLaudo').click();";
		}
				  
		$this->getResponse()->setBody(Zend_Json::encode($result));
		
	}

	public function settotalareaatingidaAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$ModelItensSegurados = new Seguro_Model_ItensSegurados();
		
		$result = array("status" => true, "execute" => "", "message" => "");
		
		$data = $this->getRequest()->getParams();
		
		$itens_segurados = array();
		
		try {
			$ItensSegurados = $ModelItensSegurados->fetchAll("id_proposta = {$data['id_proposta']}");
			
			foreach ($ItensSegurados as $item){
				$itens_segurados[] = $item['id'];
				
			}
			
			$this->saveLfItensSegurados($itens_segurados, $data['id_laudo_final']);
			
			$result['execute'] = "$('#btnSalvarLaudo').click();";
			
		} catch (Exception $e) {
			$result['status'] = false;
			$result['message'] = $e->getMessage();
			
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
	
	public function saveLfItensSegurados(array $itens_segurados, $id_laudo_final){
		$ModelLfItemSegurado = new Sinistro_Model_LaudosFinaisItensSegurados();
		
		$ModelLfItemSegurado->delete($id_laudo_final);
		
		foreach ($itens_segurados as $item){
			$dados = array();
			$dados['id_laudo_final'] = $id_laudo_final;
			$dados['id_item_segurado'] = $item;
			
			$ModelLfItemSegurado->save($dados);
		}
	}

	public function formclassificacaofrutosAction(){
		$this->getHelper('layout')->disableLayout();
		
		$dados = $this->getRequest()->getParams();
		
		$this->view->dados = $dados;
	}
	
	public function saveclassificacaofrutosAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$result = array("status" => true, "message" => MSG_SUCCESS, "execute" => "");
		
		$dados = $this->getRequest()->getParams();
		
		try {
			$result["message"] = implode("  -  ", $dados);
			
		} catch (Exception $e) {
			$result['status'] = false;
			$result["message"] = MSG_ERROR."\n\n".$e->getMessage();
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
	
	public function formtotalizacaoperdasAction(){
		$this->getHelper('layout')->disableLayout();
		
		$dados = $this->getRequest()->getParams();
		
		$this->view->dados = $dados;
	}
	
	public function savetotalizacaoperdasAction(){
		$this->getHelper('ViewRenderer')->setNoRender();
		$this->getHelper('layout')->disableLayout();
		
		$result = array("status" => true, "message" => MSG_SUCCESS, "execute" => "");
		
		$dados = $this->getRequest()->getParams();
		
		try {
			$result["message"] = implode("  -  ", $dados);
			
		} catch (Exception $e) {
			$result['status'] = false;
			$result["message"] = MSG_ERROR."\n\n".$e->getMessage();
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($result));
	}
}
