<?

class Safra13_LfuvaquedaparreiralController extends Agro_Controller_Action{
	  
	public function init() {
 		$this->session = new Zend_Session_Namespace('laudo_final');
		$this->session->idVistoria = $this->session->idRevistoria ? $this->session->idRevistoria : $this->session->idVistoria;
	}

	public function formAction() {		
		$RevistoriaVistoria = new Sistema_Model_RevistoriasVistorias();
		$VistoriaEmpresa = new Sistema_Model_VistoriasEmpresas();
		$AvisoEvento = new Sinistro_Model_AvisosEventos();
		$Intensidade = new Sinistro_Model_Intensidades();
		$Cobertura = new Produto_Model_Coberturas();
		
		$params = $this->getRequest()->getParams();
		
		if ($params['id_laudo_final']){
			$this->view->id_laudo_final = $params['id_laudo_final'];
		
		} else {		
			$this->view->id_laudo_final = $this->saveLaudoFinal($params);
			$this->_redirect($this->getRequest()->getRequestUri()."/id_laudo_final/".$this->view->id_laudo_final);
		}

		foreach ($params as $key=>$value){
			$this->view->$key = $value;
			$this->session->$key = $value;
		}
		
		$this->view->formDadosVistoriaLF = new Sistema_Form_DadosVistoriaLaudoFinal2();
		$this->view->formAssinatura = new Sinistro_Form_AssinaturaLaudoPreliminar();

		$this->view->listDadosItens = array();
		$this->view->vistoriadores = array();

		$User = Zend_Auth::getInstance()->getIdentity();

		$this->view->userVistoriaMesmaEmpresa = true;
		
		if ($User->tp_usuario != 'F') {
			$Funcionario = new Sistema_Model_Funcionarios();
			
			$f = $Funcionario->fetchRow('id_usuario = '.$User->id);
			
			$idEmpresaUserLogado = $f['id_empresa'];
	
			$idEmpresaVistoria = $VistoriaEmpresa->getEmpresaByVistoria($params["id_vistoria"]);
			
			$this->view->userVistoriaMesmaEmpresa = $idEmpresaUserLogado == $idEmpresaVistoria ? true : false;
		}

		$eventosAvisos = $AvisoEvento->getEventosByPropostaCobertura($params["id_proposta"], $params["id_cobertura"]);
		
		$ev = array();
		
		foreach($eventosAvisos as $it) {
			if (!in_array($it['ds_nome_evento'], $ev)){
				$ev[] = $it['ds_nome_evento'];
			}
		}
		
		$this->view->eventosAvisos = implode(", ", $ev); 

		
		$eventosCoberturas = $Cobertura->getEventos($params["id_cobertura"]);
		$eventos = array();
		
		foreach($eventosAvisos as $it) {
			$eventos[$it['id_evento']] = $it['ds_nome_evento'];
		}
		 
		$this->view->eventosCoberturas = $eventos; 
		
		$combo = $Intensidade->getCombo(true,'ds_descricao');
		
		$options = '';
		foreach ($combo as $key => $value) {
			$options .= '<option value="' . $key .'">' . $value . '</option>';
		}
		
		$this->view->optionsIntensidade = $options;
		
		$this->view->hasRevistoria = $RevistoriaVistoria->hasRevistoria($this->session->idVistoria);
		
		if ($this->getRequest()->isPost()) {
			
			$errorMsg = '';
			
			if ($this->getRequest()->getParam('fl_realizada') != 'N') {
				
				$formAssinatura = $this->view->formAssinatura;
				$forms = array($formAssinatura);
	
				$camposAdicionais = array();
				
				if (!$this->getRequest()->getParam('fl_evento_nao_constatado')) {
					
					$camposAdicionais[] = array(
						'type'	  => 'text',
						'fields'  => 'fl_area_atingida',
						'label'   => 'Área atingida',
						'message' => MSG_ERROR_EMPTY
					);

					$camposAdicionais[] = array(
						'type'	  => 'text',
						'fields'  => 'fl_lavoura_condiz_proposta',
						'label'   => 'A lavoura condiz com a proposta do seguro?',
						'message' => MSG_ERROR_EMPTY
					);

					if ($this->getRequest()->getParam('fl_lavoura_condiz_proposta') == 'N') {
						$camposAdicionais[] = array(
							'type'	  => 'text',
							'fields'  => 'ds_n_condiz_motivo',
							'label'   => 'Motivo',
							'message' => MSG_ERROR_EMPTY
						);
					}	
					$camposAdicionais[] = array(
						'type'	  => 'text',
						'fields'  => 'fl_manutencao_estrutura',
						'label'   => 'Manutenção da estrutura',
						'message' => MSG_ERROR_EMPTY
					);
				}
	
				$errorMsg = $this->getAllFormErros($forms, $this->getRequest()->getPost(), $camposAdicionais);
			}
			
			if ($errorMsg) {
				$this->view->formDadosVistoriaLF->populate($this->getRequest()->getParams());
				$this->view->formAssinatura->populate($this->getRequest()->getParams());
				$this->populaCampos($this->getRequest()->getParams());
				$this->view->showMessage($errorMsg, 'error');
				
			} else {
				$this->save($this->getRequest()->getParams());
				
			}
			
			
		} else if ($params["id_laudo_final"]) {
			
			$this->populaDadosTela($params);
			
		}
		

		if ($params["id_revistoria"]) {
			$Revistoria = new Sistema_Model_Revistorias();
			$rs = $Revistoria->find($params["id_revistoria"])->current();

			$this->view->ds_motivo = $rs['ds_motivo'];
			$this->view->fl_realizada = $rs['fl_realizada'] ? 'S' : 'N';
			$this->view->ds_motivo_nao_realizada = $rs['ds_motivo_nao_realizada'];
		}
	} 
	
	public function saveLaudoFinal(array $post) {
		
		try {
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();

			/****************************************************/
			// Tabela sinistro.laudos_finais
			/***************************************************/
			$LaudosFinais = new Sinistro_Model_LaudosFinais();
			$LaudoFinal = $LaudosFinais->createRow();
			
			$LaudoFinal->id_processo = $post['id_processo'];
			$LaudoFinal->id_cobertura = $post['id_cobertura'];
  			$LaudoFinal->fl_evento_nao_constatado = 0;
  			$LaudoFinal->ds_observacao = '';
			$LaudoFinal->save();
				
			/****************************************************/
			// Tabela sistema.vistorias_laudos_finais
			/***************************************************/
			$VistoriasLaudosFinais = new Sistema_Model_VistoriasLaudosFinais();
			$Row = $VistoriasLaudosFinais->createRow();
			$Row->id_vistoria = $post['id_vistoria'];
			$Row->id_laudo_final = $LaudoFinal->id;
			$Row->save();

			$Db->commit();
			
			return $LaudoFinal->id;

		} catch (Exception $e) {
			$Db->rollBack();
			echo $e->getMessage();
		}
	}

	public function populaDadosTela($params) {

		$row = $this->getRow($params);
		
		if ($row) {
			$this->view->formDadosVistoriaLF->populate($row);
			$this->view->formAssinatura->populate($row);
		}

		$this->view->fl_evento_nao_constatado = $row['fl_evento_nao_constatado'];
		if (!$this->view->fl_evento_nao_constatado) {
			
			$this->view->fl_area_atingida     		= $row['fl_area_atingida'];
			$this->view->fl_lavoura_condiz_proposta = $row['fl_lavoura_condiz_proposta'] ? 'S' : 'N';
			$this->view->ds_n_condiz_motivo         = $row['ds_n_condiz_motivo'];
			$this->view->fl_manutencao_estrutura    = $row['fl_manutencao_estrutura'];
			$this->view->ds_problemas_identificados = $row['ds_problemas_identificados'];
  		}
		$this->view->ds_observacao = $row['ds_observacao'];
		
		$VistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
		$this->view->vistoriadores = $VistoriaFuncionario->getVistoriadoresByVistoria($params["id_vistoria"]);
	}

	public function getRow($params) {
		
		if ($params["id_laudo_final"]) {
			
		    $Safra = new Produto_Model_Safras();
			$nomeModel = $Safra->getSafraModel($params["id_proposta"],'LaudosFinaisUvaQuedaParreiral');
			
			$SafraX = new $nomeModel;
			
			$row = $SafraX->getDataLaudoFinal($params["id_laudo_final"]);

			return $row;
		}
	}

	public function save(array $post) {
		/**
		 * Inicia transação
		 */
		Agro_Db_Table_Abstract::getDefaultAdapter()->beginTransaction();
				
		$LaudosFinais = new Sinistro_Model_LaudosFinais();
		$VistoriaItensSegurados = new Sistema_Model_VistoriasItensSegurados();
		$SinistroItensSegurados = new Sinistro_Model_LaudosFinaisItensSegurados();
		$ItemRevistoria = new Sinistro_Model_LaudosFinaisItensSeguradosRevistoria();
		
		$Safra = new Produto_Model_Safras();
		
		$nomeModel = $Safra->getSafraModel($post["id_proposta"],'LaudosFinaisUvaQuedaParreiral');
		$LaudoUvaQuedaParreiral = new $nomeModel;
		
		$nomeModel = $Safra->getSafraModel($post["id_proposta"],'LaudosFinaisUvaQuedaParreiralItensSegurados');
		$Safra13ItensSegurados = new $nomeModel;
		
		$nomeModel = $Safra->getSafraModel($post["id_proposta"],'LaudosFinaisUvaQuedaParreiralItensSeguradosEventos');
		$Safra13EventosItens = new $nomeModel;
		
		try {
			/**
			 * Tabela sistema.revistorias
			 */
			if ($post["id_revistoria"]) {
				
				$Revistoria = new Sistema_Model_Revistorias();			
				$data = array();
				if ($post['fl_realizada'] == 'S') {
					$data['fl_realizada']  = 1; 
					$data['ds_motivo_nao_realizada'] = '';
				} else {
					$data['fl_realizada']  = 0;
					$data['ds_motivo_nao_realizada'] = $post['ds_motivo_nao_realizada'];
				}
			   	$Revistoria->update($data, 'id_vistoria = ' . $post["id_revistoria"]);
			}

			/**
			 * Tabela sinistro.laudos_finais
			 */
			$laudo 					= array();
			$laudo["id"] 			= $post["id_laudo_final"];
			$laudo['id_processo']  	= $this->session->idProcesso;
			$laudo['id_cobertura'] 	= $this->session->idCobertura;
			
			if ($post['fl_realizada'] == 'N') {
	  			$laudo['fl_evento_nao_constatado'] = 0;
	  			
			} else {
	  			$laudo['fl_evento_nao_constatado'] = $post['fl_evento_nao_constatado'] ? 1 : 0;
	  			$laudo['fl_assinatura_segurado']   = $post['fl_assinatura_segurado'] ? 1 : 0;
	  			$laudo['fl_assinatura_regulador']  = $post['fl_assinatura_regulador'] ? 1 : 0;
	  			$laudo['ds_observacao']            = $post['ds_observacao'];
			}

			$LaudosFinais->save($laudo);
			
			if ($post['fl_realizada'] != 'N') {
	
				if (!$post['fl_evento_nao_constatado']) {
					
					/**
					 * Tabela safra13.laudos_finais_uva_queda_parreiral
					 */
					$LaudoUvaQuedaParreiral->delete($post["id_laudo_final"], "id_laudo_final");
		
					$laudoQuedaParreiral = array();
					$laudoQuedaParreiral['id_laudo_final']             = $post["id_laudo_final"];
				  	$laudoQuedaParreiral['fl_area_atingida']           = $post['fl_area_atingida'];
					$laudoQuedaParreiral['fl_lavoura_condiz_proposta'] = $post['fl_lavoura_condiz_proposta'] == 'S' ? 1 : 0;
				  	$laudoQuedaParreiral['ds_n_condiz_motivo']         = $post['ds_n_condiz_motivo'];
				  	$laudoQuedaParreiral['fl_manutencao_estrutura']    = $post['fl_manutencao_estrutura'];
				  	$laudoQuedaParreiral['ds_problemas_identificados'] = $post['ds_problemas_identificados'];	

					$LaudoUvaQuedaParreiral->save($laudoQuedaParreiral);
					
					if (is_array($post['itens_segurados']) && count($post['itens_segurados']) > 0) {
	
						$SinistroItensSegurados->delete($post["id_laudo_final"]);
						$VistoriaItensSegurados->delete($post["id_vistoria"]);
						
						foreach ($post['itens_segurados'] as $item) {
							/**
							 * sistema.vistorias_itens_segurados
							 */		
							$itens = array();
							$itens['id_vistoria']      = $post["id_vistoria"];
							$itens['id_item_segurado'] = $item;
							$VistoriaItensSegurados->save($itens);
							
							/**
							 * sinistro.laudos_finais_itens_segurados
							 */
							$itens = array();
							$itens['id_laudo_final']    = $post["id_laudo_final"];
							$itens['id_item_segurado']  = $item;
							$itens['vl_percent_perdas'] = null;
							
						   	$id_laudo_final_item_segurado = $SinistroItensSegurados->save($itens);

							if ($post["id_revistoria"]) {
								/**
								 * sinistro.laudos_finais_itens_segurados_revistoria
								 */
								$itens = array();
								$itens['id_laudo_final_item_segurado'] = $id_laudo_final_item_segurado; 
								$itens['fl_substitui_laudo_anterior']  = $post['fl_substitui_laudo_anterior-' . $item] == 'S' ? 1 : 0;
							   	
								$ItemRevistoria->save($itens);
							}
							
							/**
							 * laudos_finais_uva_queda_parreiral
							 */
							$itens = array();
							$itens['id_laudo_final_item_segurado'] = $id_laudo_final_item_segurado; 
							
							if ($post['ds_coordenadas_s-'.$item]){
								$itens['ds_coordenadas_s'] = $post['ds_coordenadas_s-'.$item];
							}
							
							if ($post['ds_coordenadas_w-'.$item]){
								$itens['ds_coordenadas_w'] = $post['ds_coordenadas_w-'.$item];
							}
							
							if ($post['ds_estadio_fenologico-'.$item]){
								$itens['ds_estadio_fenologico'] = $post['ds_estadio_fenologico-'.$item];
							} 
							
							$itens['tp_conducao']                  = $post['tp_conducao-'.$item]; 
							$itens['id_intensidade']               = $post['id_intensidade-'.$item];
							
							if ($post['vl_percent_estrutura_afetada-'.$item]){
								$itens['vl_percent_estrutura_afetada'] = $post['vl_percent_estrutura_afetada-'.$item];
							}
							
							if ($post['vl_metros_lineares_caidos-'.$item]){
								$itens['vl_metros_lineares_caidos'] = $post['vl_metros_lineares_caidos-'.$item];
							}
							
							$itens['fl_rompimento']                = $post['fl_rompimento-'.$item] == 'S' ? 1 : 0;
							
							if ($post['vl_deslocamento_vertical-'.$item]){
								$itens['vl_deslocamento_vertical'] = $post['vl_deslocamento_vertical-'.$item];
							} else {
								$itens['vl_deslocamento_vertical'] = 0;
							}
							
							
							$Safra13ItensSegurados->insert($itens);

							if ($post['id_evento-'.$item]) {
								
								foreach ($post['id_evento-'.$item] as $it) {
									/**
									 * laudos_finais_uva_queda_parreiral_itens_segurados_eventos
									 */
									$itens = array();
									$itens['id_laudo_final_item_segurado'] = $id_laudo_final_item_segurado; 
									$itens['id_evento']                    = $it; 
		
									$Safra13EventosItens->insert($itens);
								}
							}
						}
					}
					
				} else {
					/**
					 * sinistro.laudos_finais_itens_segurados
					 */
					$SinistroItensSegurados->delete($post["id_laudo_final"]);

					/**
					 * sistema.vistorias_itens_segurados
					 */
					$VistoriaItensSegurados->delete($post["id_vistoria"]);

					/**
					 * safraX.laudos_finais_uva_queda_parreiral
					 */
					$LaudoUvaQuedaParreiral->delete($post["id_laudo_final"]);
				}
				
			} else {
				if ($post["id_laudo_final"]) {
					/**
					 * sistema.vistorias_itens_segurados
					 */
					$VistoriaItensSegurados->delete($post["id_vistoria"]);

					/**
					 * sinistro.laudos_finais_itens_segurados
					 */
					$SinistroItensSegurados->delete($post["id_laudo_final"]);

					/**
					 * safraX.laudos_finais_uva_queda_parreiral
					 */
					$LaudoUvaQuedaParreiral->delete($post["id_laudo_final"]);
				}
			}			
			
			Agro_Db_Table_Abstract::getDefaultAdapter()->commit();

			$this->populaDadosTela($post);
			
			if (!$post["id_laudo_final"]) {
				$this->view->idLaudoFinal = $post["id_laudo_final"];
			}
			
			$this->view->showMessage(MSG_SUCCESS, 'success');
			
		} catch (Exception $e) {
			Agro_Db_Table_Abstract::getDefaultAdapter()->rollBack();
			$this->populaCampos($post);
			$this->view->showMessage($e->getMessage(), 'error');
		}
	}
	
	public function populaCampos($post) {
		
		$VistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
		$this->view->vistoriadores = $VistoriaFuncionario->getVistoriadoresByVistoria($post['idVistoria']);

		if (array_key_exists('fl_evento_nao_constatado', $post)) {
			$this->view->fl_evento_nao_constatado = $post['fl_evento_nao_constatado'];
		} else {

			$this->view->fl_area_atingida     		= $post['fl_area_atingida'];
			$this->view->fl_lavoura_condiz_proposta = $post['fl_lavoura_condiz_proposta'];
			$this->view->ds_n_condiz_motivo         = $post['ds_n_condiz_motivo'];
			$this->view->fl_manutencao_estrutura    = $post['fl_manutencao_estrutura'];
			$this->view->ds_problemas_identificados = $post['ds_problemas_identificados'];

			foreach ($post['itens_segurados'] as $item) {
				$idItem = $item;
			
				$this->view->listDadosItens[$idItem]['ds_coordenadas_s']             = $post['ds_coordenadas_s-' . $idItem]; 
				$this->view->listDadosItens[$idItem]['ds_coordenadas_w']             = $post['ds_coordenadas_w-' . $idItem]; 
				$this->view->listDadosItens[$idItem]['ds_estadio_fenologico']        = $post['ds_estadio_fenologico-' . $idItem]; 
				$this->view->listDadosItens[$idItem]['tp_conducao']                  = $post['tp_conducao-' . $idItem]; 
				$this->view->listDadosItens[$idItem]['id_intensidade']               = $post['id_intensidade-' . $idItem];
				$this->view->listDadosItens[$idItem]['vl_percent_estrutura_afetada'] = $post['vl_percent_estrutura_afetada-' . $idItem];
				$this->view->listDadosItens[$idItem]['vl_metros_lineares_caidos']    = $post['vl_metros_lineares_caidos-' . $idItem];
				$this->view->listDadosItens[$idItem]['fl_rompimento']                = $post['fl_rompimento-' . $idItem];
				$this->view->listDadosItens[$idItem]['vl_deslocamento_vertical']     = $post['vl_deslocamento_vertical-' . $idItem];
				$this->view->listDadosItens[$idItem]['fl_substitui_laudo_anterior']  = $post['fl_substitui_laudo_anterior-' . $idItem];

				if ($post['id_evento-' . $idItem]) {
					$this->view->listDadosItens[$idItem]['id_evento'] = $post['id_evento-' . $idItem];
				} else {
					$this->view->listDadosItens[$idItem]['id_evento'] = array();
				}
			}			
		}
		$this->view->ds_observacao = $post['ds_observacao'];

		if ($this->session->idRevistoria) {
			$this->view->fl_realizada = $post['fl_realizada'];
			$this->view->ds_motivo_nao_realizada = $post['ds_motivo_nao_realizada'];
		}
	} 

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

		$LaudoFinal = new Sinistro_Model_LaudosFinais();
		$Safra = new Produto_Model_Safras();
		
		$data = array();
		
		$params = $this->getRequest()->getParams();
		
		if ($params["id_laudo_final"]) {
			// Busca os itens do laudo
	    	
			$nomeModel = $Safra->getSafraModel($params["id_proposta"],'LaudosFinaisUvaQuedaParreiralItensSegurados');
			$LaudoItens = new $nomeModel;

			// Busca os eventos relacionados ao item
			$nomeModel = $Safra->getSafraModel($params["id_proposta"],'LaudosFinaisUvaQuedaParreiralItensSeguradosEventos');
			$EventosItens = new $nomeModel;

			$arrayLaudoItem = $LaudoItens->getItensByLaudo($params["id_laudo_final"]);
			
			if (count($arrayLaudoItem) > 0) {
				
				foreach ($arrayLaudoItem as $item) {
					$id = $item['id'];

					$data['itensLaudo'][$id]['nr_item_segurado']             = $item['nr_item_segurado'];
					$data['itensLaudo'][$id]['ds_item_segurado']             = $item['ds_item_segurado'];
					$data['itensLaudo'][$id]['vl_area']                      = $item['vl_area'];
					$data['itensLaudo'][$id]['vl_lmga']                      = $item['vl_lmga'];
					$data['itensLaudo'][$id]['ds_nome_variedade']            = $item['ds_nome_variedade'];
					
					$data['itensLaudo'][$id]['ds_coordenadas_s']             = $item['ds_coordenadas_s']; 
					$data['itensLaudo'][$id]['ds_coordenadas_w']             = $item['ds_coordenadas_w']; 
					$data['itensLaudo'][$id]['ds_estadio_fenologico']        = $item['ds_estadio_fenologico']; 
					$data['itensLaudo'][$id]['tp_conducao']                  = $item['tp_conducao']; 
					$data['itensLaudo'][$id]['id_intensidade']               = $item['id_intensidade'];
					$data['itensLaudo'][$id]['vl_percent_estrutura_afetada'] = $item['vl_percent_estrutura_afetada'];
					$data['itensLaudo'][$id]['vl_metros_lineares_caidos']    = $item['vl_metros_lineares_caidos'];
					$data['itensLaudo'][$id]['fl_rompimento']                = $item['fl_rompimento'] ? 'S' : 'N';
					$data['itensLaudo'][$id]['vl_deslocamento_vertical']     = $item['vl_deslocamento_vertical'];
					$data['itensLaudo'][$id]['fl_substitui_laudo_anterior']  = $item['fl_substitui_laudo_anterior'] ? 'S' : 'N';
					
					$evt = $EventosItens->getEventos($item['id_laudo_final_item_segurado']);
					$eventos = array();
					foreach ($evt as $it) {
						$eventos[] = $it['id_evento'];
					}
					$data['eventosItem'][$id] = $eventos;
				}
			}
		}
		
		if ($params["id_revistoria"]) {
			$data['itensSegurados'] = $LaudoFinal->getItensRevistoria($params["id_proposta"], $params["id_revistoria"]);
			
		} else {
			$data['itensSegurados'] = $LaudoFinal->getItensDisponiveisLaudoFinal($params["id_proposta"]);
			
		}
		
		$this->getResponse()->setBody(Zend_Json::encode($data));
	}

	public function savedadosvistoriaAction() {
		$this->isAjax();
		
		$post = $this->getRequest()->getParams();
		
		$Model = new Sistema_Model_Vistorias();
				
		$message = array();
		
		$result = array("status" => true, "message" => "Vistoria salva com sucesso", "style" => "success", "itens_segurados" => array());
		
		if (!$post["dt_inicio"] || !$post["dt_fim"]){
			$message[] = "Prencha a data de início e fim corretamente.";
				
		} else {
			$dt_inicio =  strtotime(Agro_Util::formatDate($post["dt_inicio"], Zend_Date::W3C));
			$dt_fim = strtotime(Agro_Util::formatDate($post["dt_fim"], Zend_Date::W3C));
			$dt_sinistro = strtotime(Agro_Util::formatDate($Model->getDtSinistro($post["idVistoria"]), Zend_Date::W3C));
			
			if ($dt_fim < $dt_inicio){
				$message[] = "A data final da vistoria deve ser igual ou superior a de início.";
			}
			
			if ($dt_inicio < $dt_sinistro) {
				$message[] = "A data da vistoria não deve ser anterior a data do sinistro. O sinistro ocorreu em ".Agro_Util::formatDate($dt_sinistro);
			} 
		}
		
		if (!$post["idVistoriador"]){
			$message[] = "Informe ao menos um vistoriador.";	
		}
		
		if (count($message)){
			$result["status"] = false;
			$result["message"] = "Os seguintes itens impedem a operação:<br><ul><li>".implode("</li><li>", $message)."</li></ul>";
			$result["style"] = "alert";
			
		} else {
			try {
				$formDadosVistoriaLF = new Sistema_Form_DadosVistoriaLaudoFinal2;			
				$forms = array($formDadosVistoriaLF);
				$this->saveVistoriaFuncionario($post);				
				$LaudoFinal = new Sinistro_Model_LaudosFinais();
				
				if ($this->session->id_revistoria) {
					$result["itens_segurados"] = $LaudoFinal->getItensRevistoria($this->session->id_proposta, $this->session->id_revistoria);		
				} else {
					$result["itens_segurados"] = $LaudoFinal->getItensDisponiveisLaudoFinal($this->session->id_proposta);
				}
			} catch (Exception $e) {
				$result["status"] = false;
				$result["message"] = "Não foi possível realizar a operação.<br><ul><li>{$e->getMessage()}</li></ul>";
				$result["style"] = "error";
			}
		}
		$this->getResponse()->setBody(Zend_Json::encode($result));
	} 

	public function saveVistoriaFuncionario($post) {
		 			
		try {	
			$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
			$Db->beginTransaction();

			$vistoriador = explode(',', $post['idVistoriador']);
			$VistoriaFuncionarios = new Sistema_Model_VistoriasFuncionarios();
			$VistoriaFuncionarios->delete($post['idVistoria']);
			
			foreach ($vistoriador as $key => $value) {
				$funcionario = array();
				$funcionario['id_funcionario'] = $value; 
				$funcionario['id_vistoria']    = $post['idVistoria'];
				$VistoriaFuncionarios->insert($funcionario);
			}
			
			/****************************************/
			$vistoria = array();
			$vistoria['dt_inicio']   = Agro_Util::formatDate($post['dt_inicio'], Zend_Date::W3C); 
			$vistoria['dt_fim']      = Agro_Util::formatDate($post['dt_fim'], Zend_Date::W3C);
			$vistoria['id']          = $post['idVistoria'];
			
			$Vistorias = new Sistema_Model_Vistorias();
			$Vistorias->save($vistoria);

			$Db->commit();
		} catch (Exception $e) {
			$Db->rollback();
			throw new Exception($e->getMessage());
		}
	}

	public function printAction(){
		$Safra = new Produto_Model_Safras();
		$AvisoEvento = new Sinistro_Model_AvisosEventos();
		 $Intensidade = new Sinistro_Model_Intensidades();
		
		$params = $this->getRequest()->getParams();
		
		$nomeModel = $Safra->getSafraModel($params["id_proposta"],'LaudosFinaisUvaQuedaParreiralItensSegurados');
		$LaudoItens = new $nomeModel;
		
		$params = array_merge($params, $this->getRow($params));
	
		$VistoriaFuncionario = new Sistema_Model_VistoriasFuncionarios();
		$Funcionario = new Sistema_Model_Funcionarios();
		
		$Row = $VistoriaFuncionario->getVistoriadoresByVistoria($params["id_vistoria"]);
		
		$params["vistoriadores"] = array();
		
		foreach ($Row as $vistoriador) {
			$Func = $Funcionario->find($vistoriador["id_funcionario"])->current();
			
			$params["vistoriadores"][] = $Func["ds_nome_funcionario"];
			
		}
		
		$eventosAvisos = $AvisoEvento->getEventosByPropostaCobertura($params["id_proposta"], $params["id_cobertura"]);
		
		$params["eventosAvisos"] = array();
		
		foreach($eventosAvisos as $it) {
			if (!in_array($it['ds_nome_evento'], $params["eventosAvisos"])){
				$params["eventosAvisos"][] = $it['ds_nome_evento'];
			}
		}

		$params["itens"] = $LaudoItens->getItensByLaudo($params["id_laudo_final"]);

		$Int = $Intensidade->fetchAll("fl_ativo = true");

		$params["intencidades"] = array();
		
		foreach ($Int as $it){
			$params["intencidades"][$it->id] = $it->ds_intensidade;
		}
		
		$this->view->params = $params;
	
	}
}