			<?php
/**
 * Model
 * 
 * Laudo final Tipo LF024 / Safra16 - Arroz Irrigado - Ventos Fortes
 * 
 * @author Samir Ortiz
 * @date 18/11/2013
 *
 */
class Safra16_Model_Lf024ItensSeguradosAmostras extends Agro_Db_Table_Abstract {
	protected $_schema 	= 'safra16';
	protected $_name 	= 'lf024_itens_segurados_amostras';
	protected $_primary = 'id';
	public 	  $_order 	= 'nr_amostra';
		
	public function save($dados) { 
		$ModelIS = new Safra16_Model_Lf024ItensSegurados();

		$dados = $this->prepararDados($dados);

		if ($this->validar($dados)){
		
			$dados = $this->calcular($dados);
			
			$dados["id_laudo_final_item_segurado"] = $ModelIS->save($dados);

			if ($dados["id_laudo_final_item_segurado"]){
				try {
					$this->delete($dados["id_laudo_final_item_segurado"], "id_laudo_final_item_segurado");

					$amostra["nr_amostra"] = 1;
					$amostra["id_laudo_final_item_segurado"] = $dados["id_laudo_final_item_segurado"];
					$amostra["tipo_conducao"] = $dados['amostras']['tipo_conducao'];
					$amostra["evento_comunicado"] = $dados['amostras']['evento_comunicado'];
					$amostra["fl_evento_ocorrido"] =$dados['amostras']['fl_evento_ocorrido'];
					$amostra["evento_intensidade"] = $dados['amostras']['evento_intensidade'];
					$amostra["vl_percent_estrutura_afetada_latada"] = $dados['amostras']['vl_percent_estrutura_afetada_latada'];
					$amostra["vl_percent_metros_lineares_caidos_espaldeira"] = $dados['amostras']['vl_percent_metros_lineares_caidos_espaldeira'];
					$amostra["fl_rompimento_cabos_ancoras_postes"] = $dados['amostras']['fl_rompimento_cabos_ancoras_postes'];
					$amostra["vl_deslocamento_vertical_abaixamento_latada"] = $dados['amostras']['vl_deslocamento_vertical_abaixamento_latada'];
					$amostra["estrutura_manutencao"] = $dados['amostras']['estrutura_manutencao'];
					$amostra["ds_estrutura_problemas_identificados"] = $dados['amostras']['ds_estrutura_problemas_identificados'];
					
					$this->insert($amostra);

					$this->setMessage("Laudo salvo com sucesso.");

					return $dados["id_laudo_final_item_segurado"];

				} catch (Exception $e) {
					$this->setMessage($e->getMessage());
					return false;
				}
			} else {
				$this->setMessage($ModelIS->getMessages());
				return false;
			}
		}
	}

	public function validar($dados){
		$messages = array();
		
		if(count($dados['amostras']) < 1){
			$messages[] = "Preencha ao menos uma amostra."; 
		}
		
		if (count($messages)){
			$this->setMessage("Os itens citados abaixo são de preenchimento obrigatório:<ul><li>".implode("</li><li>", $messages)."</li></ul>");
			return false;

		} else {
			return true;
		}
	}	

	
	public function calcular($dados){

		//calcula porcaria nenhuma, só retorna pro save =)

		return $dados;
	}
	
	
	public function prepararDados($dados){

		$return = array();
		
		$return["id_laudo_final"] 						= $dados["id_laudo_final"];
    	$return["id_vistoria"] 							= $dados["id_vistoria"];
    	$return["id_cobertura"] 						= $dados["id_cobertura"];
    	$return["fl_vistoria_preliminar"] 				= $dados["fl_vistoria_preliminar"];
	    $return["id_item_segurado"] 					= $dados["id_item_segurado"];
	    $return["id_proposta"] 							= $dados["id_proposta"];
	    $return["id_processo"]							= $dados["id_processo"];
	    $return["fl_nao_vistoriada"] 					= $dados["fl_nao_vistoriada"];
	    $return["id_motivo_quadra_nao_vistoriada"] 		= $dados["id_motivo_quadra_nao_vistoriada"];
	    $return["id_laudo_final_item_segurado"]	 		= $dados["id_laudo_final_item_segurado"]; 
	    $return["fl_avalia_danos_anteriores"] 			= $dados["fl_avalia_danos_anteriores"]; 
	    $return["vl_percent_colhido"] 					= $dados["vl_percent_colhido"];
	    $return["ds_coordenadas_geograficas"] 			= $dados["ds_coordenadas_geograficas"];
	    $return["fl_assinatura_segurado"] 				= $dados["fl_assinatura_segurado"];
	    $return["ds_observacao_assinatura_segurado"]	= $dados["ds_observacao_assinatura_segurado"]; 
    	$return["fl_assinatura_regulador"] 				= $dados["fl_assinatura_regulador"];
	    $return["ds_observacao_assinatura_regulador"]	= $dados["ds_observacao_assinatura_regulador"]; 
	    $return["ds_observacao"]						= $dados["ds_observacao"]; 
	    $return["dt_vistoria_data"] 					= $dados["dt_vistoria_data"];
	    $return["dt_vistoria_hora"] 					= $dados["dt_vistoria_hora"];
	    $return["dt_vistoria_minutos"] 					= $dados["dt_vistoria_minutos"];
	    $return["dt_vistoria"] 							= Agro_Util::joinDtVistoria($dados["dt_vistoria_data"], $dados["dt_vistoria_hora"], $dados["dt_vistoria_minutos"]);
	    $return["vistoriadores"] 						= $dados["vistoriadores"];
		$return['id_estadio_fenologico'] 				= $dados['id_estadio_fenologico'];
		$return['vl_area'] 								= $dados['vl_area'];
		
		$return["amostras"] = array();


		$return["amostras"] = array(
			"tipo_conducao" 								=> ($dados["tipo_conducao"] ? $dados["tipo_conducao"] : null),
			"evento_comunicado" 	      					=> ($dados["evento_comunicado"] ? $dados["evento_comunicado"] : null),
			"fl_evento_ocorrido"							=> ($dados["fl_evento_ocorrido"] ? $dados["fl_evento_ocorrido"] : 0),
			"evento_intensidade" 							=> ($dados["evento_intensidade"] ? $dados["evento_intensidade"] : null),
			"vl_percent_estrutura_afetada_latada"			=> ($dados["vl_percent_estrutura_afetada_latada"] ? $dados["vl_percent_estrutura_afetada_latada"] : null),
			"vl_percent_metros_lineares_caidos_espaldeira" 	=> ($dados["vl_percent_metros_lineares_caidos_espaldeira"] ? $dados["vl_percent_metros_lineares_caidos_espaldeira"] : null),
			"fl_rompimento_cabos_ancoras_postes" 	  		=> ($dados["fl_rompimento_cabos_ancoras_postes"] ? $dados["fl_rompimento_cabos_ancoras_postes"] : 0),
			"vl_deslocamento_vertical_abaixamento_latada" 	=> ($dados["vl_deslocamento_vertical_abaixamento_latada"] ? $dados["vl_deslocamento_vertical_abaixamento_latada"] : null),
			"estrutura_manutencao" 	  						=> ($dados["estrutura_manutencao"] ? $dados["estrutura_manutencao"] : null),
			"ds_estrutura_problemas_identificados" 	  		=> ($dados["ds_estrutura_problemas_identificados"] ? $dados["ds_estrutura_problemas_identificados"] : null)
		);
		
		return $return;
	}	

	
	public function get($idLaudoFinalItemSegurado){
	 	$ModelLfIS = new Sinistro_Model_LaudosFinaisItensSegurados();
		$ModelIS = new Seguro_Model_ItensSegurados();
        
		/*
		 * Busca dados globais
		 */
		$dados = $ModelLfIS->getDataLaudoFinalItemSegurado($idLaudoFinalItemSegurado);
        
		/*
		 * Busca dados especialização
		 */			
		if (!$dados['fl_nao_vistoriada']) {
    		$select = $this->select()->setIntegrityCheck(false);
            $select->from(array("lfisX" => "$this->_schema.lf024_itens_segurados") , array('vl_percent_total_perda_final','id_estadio_fenologico'));
            $select->where('id_laudo_final_item_segurado = ?', $idLaudoFinalItemSegurado);
            
            $especializacao = $this->fetchRow($select);
            $especializacao = ($especializacao ? $especializacao->toArray() : array());
            
            $dados = array_merge($dados, $especializacao);
        }
        
        /*
         * Busca Amostras
         */
        $dados["amostras"] = array();

        if (!$dados['fl_nao_vistoriada']) {
            $amostras = $this->fetchAll("id_laudo_final_item_segurado = $idLaudoFinalItemSegurado");
            $amostras = ($amostras ? $amostras->toArray() : array());
            
            foreach ($amostras as $amostra){

            	$dados["amostras"][$amostra["nr_amostra"]] = $amostra;
            }
        }

        return $dados;
	}
}