<?php

class Safra14_Model_Lvp001 extends Agro_Db_Table_Abstract {
	protected $_schema = 'safra14';
	protected $_name = 'lvp001';
	protected $_primary = 'id';
	public $_order = 'id';
	

	public function save(array $dados){

		$dados = $this->__prepararDados($dados);

		if ($this->validar($dados)){

			$ModelPrevia = new Seguro_Model_VistoriaPreviaEmpresa();
			$id_proposta_vistoria = $ModelPrevia->saveLaudo($dados);

			if ($id_proposta_vistoria){
				try {

					$Row = $this->getRow($dados['id_laudo']);

	    		    $Row->id_proposta_vistoria = $id_proposta_vistoria;
	    		    $Row->ds_local = $dados['ds_local'];
	    		    $Row->dt_laudo = Agro_Util::formatDate($dados['dt_laudo'], Zend_Date::W3C);
	    		    $Row->hr_laudo = $dados['hr_laudo'];
	    		    $Row->ds_observacao = $dados['ds_observacao'];
	    		    $Row->ds_vistoriador = $dados['ds_vistoriador'];
	    		    $Row->fl_reavaliacao = $dados['fl_reavaliacao'];
	    		    $Row->dt_reavaliacao = $dados['dt_reavaliacao'] ? Agro_Util::formatDate($dados['dt_reavaliacao'], Zend_Date::W3C) : null;
	    		    $Row->fl_acompanhante = $dados['fl_acompanhante'];
	    		    $Row->ds_acompanhante = $dados['ds_acompanhante'] ? $dados['ds_acompanhante'] : null;
	    		    $Row->cpf_acompanhante = $dados['cpf_acompanhante'] ? $dados['cpf_acompanhante'] : null;

	    		    $id_laudo = $Row->save();

					$ModelLvpIS = new Safra14_Model_Lvp001ItensSegurados();
					$dados['id_laudo_previa'] = $id_laudo;
					$ModelLvpIS->save($dados);	    		    

					$data = array(
						'dt_laudo' => Agro_Util::formatDate($dados['dt_laudo'], Zend_Date::W3C)
					);
					$ModelPrevia->update($data, 'id = '.$id_proposta_vistoria);

					$this->setMessage("Laudo Cadastrado com Sucesso!");

					return $id_laudo;

				} catch (Exception $e) {
					$this->setMessage($e->getMessage());
					return false;
				}
			} else {
				$this->setMessage($ModelPrevia->getMessages());
				return false;
			}
		}
	}

	public function validar($dados){

		$messages = array();

		if(!count($dados['amostras'])){
			$messages[] = "Preencha ao menos uma quadra."; 
		}

		if(!$dados['ds_vistoriador']){
			$messages[] = "Informe o vistoriador do laudo.";
		}

		if(!$dados['ds_local']){
			$messages[] = "Preencha o local do laudo.";
		}
		
		if(!$dados['dt_laudo']){
			$messages[] = "Preencha a data do laudo.";
		}
		
		if(!$dados['hr_laudo']){
			$messages[] = "Preencha a hora do laudo.";
		}

		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 __prepararDados($dados){

		$return = array();
		for($i = 0; $i < 30; $i++){
			if($dados["nr_quadra"][$i]){
				$return["amostras"][$i] = array(
					"id"								=> $dados["id"][$i],
					"nr_quadra" 						=> $dados["nr_quadra"][$i],
					"id_variedade" 						=> $dados["id_variedade"][$i],
					"ds_coordenadas" 					=> $dados["ds_coordenadas"][$i],
					"tipo_solo" 						=> $dados["tipo_solo_".$i],
					"vl_altitude" 						=> $dados["vl_altitude"][$i],
					"dt_inicio_semeadura"				=> ($dados["dt_inicio_semeadura"][$i] ? $dados["dt_inicio_semeadura"][$i] : 0),
					"dt_final_semeadura" 				=> ($dados["dt_final_semeadura"] ? $dados["dt_final_semeadura"][$i] : 0),
					"vl_area_declarada" 				=> ($dados["vl_area_declarada"][$i] ? $dados["vl_area_declarada"][$i] : 0),
					"vl_area_vistoriada" 				=> ($dados["vl_area_vistoriada"][$i] ? $dados["vl_area_vistoriada"][$i] : 0),
					"vl_area_asseguravel" 				=> ($dados["vl_area_asseguravel"][$i] ? $dados["vl_area_asseguravel"][$i] : 0),
					"vl_area_excluida" 					=> ($dados["vl_area_excluida"][$i] ? $dados["vl_area_excluida"][$i] : 0),
					"vl_rendimento_proposta" 			=> ($dados["vl_rendimento_proposta"][$i] ? $dados["vl_rendimento_proposta"][$i] : 0),
					"vl_rendimento_estimado" 			=> ($dados["vl_rendimento_estimado"][$i] ? $dados["vl_rendimento_estimado"][$i] : 0)
				);			
			}
		}
		
		$return['novo']							= $dados['novo'];
		$return['id_laudo']						= $dados['id_laudo'];
		$return['id_proposta_vistoria']			= $dados['id_proposta_vistoria'];
		$return['id_proposta'] 					= $dados['id_proposta'];
		$return['ds_local'] 	 				= $dados['ds_local'];
		$return['dt_laudo'] 	 				= $dados['dt_laudo'];
		$return['hr_laudo'] 	 				= $dados['hr_laudo'];
		$return['ds_observacao'] 				= $dados['ds_observacao'];
		$return['fl_reavaliacao'] 				= $dados['fl_reavaliacao'];
		$return['dt_reavaliacao'] 				= $dados['dt_reavaliacao'];
		$return['fl_acompanhante'] 				= $dados['fl_acompanhante'];
		$return['ds_acompanhante'] 				= $dados['ds_acompanhante'];
		$return['cpf_acompanhante'] 			= $dados['cpf_acompanhante'];
		$return['ds_vistoriador']				= $dados['ds_vistoriador'];

		return $return;
	}

	public function getLaudo($id_proposta_vistoria){
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array("lp" => "seguro.propostas_vistorias_previas"),array('id', 'id_vistoria', 'id_status', 'id_status_analise', 'dt_alteracao as data_alteracao'));
		$select->join(array("lvp" => $this->_schema.".".$this->_name),'lp.id = lvp.id_proposta_vistoria','*');

		$select->where('lp.id = ?', $id_proposta_vistoria);

		$Rs = $this->getAdapter()->fetchRow($select);

		return $Rs;
	}

	public function getDadosLaudo($id_proposta_vistoria){

		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array("vp" => "seguro.propostas_vistorias_previas"),array('id as id_laudo_previa_proposta_vistoria','id_vistoria'));
		$select->joinLeft(array("ve" => "sistema.vistorias_empresas"),'ve.id_vistoria = vp.id_vistoria','id_empresa');		
		$select->joinLeft(array("lvp001" => $this->_schema.".".$this->_name),'vp.id = lvp001.id_proposta_vistoria',array('ds_local','dt_laudo','hr_laudo','ds_observacao','ds_vistoriador','id as id_laudo','fl_reavaliacao','dt_reavaliacao','fl_acompanhante','ds_acompanhante','cpf_acompanhante'));
		$select->where('lvp001.id_proposta_vistoria = ?', $id_proposta_vistoria);

		$Rs = $this->getAdapter()->fetchRow($select);
		return $Rs;
	}

	public function existeLaudo($id_proposta){
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array("lp" => "seguro.propostas_vistorias_previas"));
		$select->join(array("lvp" => $this->_schema.".".$this->_name),'lp.id = lvp.id_proposta_vistoria');
		$select->where('lp.id_proposta = ?', $id_proposta);

		$Rs = $this->_db->fetchAll($select);

		if(count($Rs)){
			return true;
		}

		return false;
	}

	public function getIdLaudo($id_proposta_vistoria){
		$select = $this->select()->setIntegrityCheck(false);
		$select->from(array("lvp001" => $this->_schema.".".$this->_name),'id');		
		$select->where('lvp001.id_proposta_vistoria = ?', $id_proposta_vistoria);

		$id_laudo = $this->getAdapter()->fetchOne($select);

		return $id_laudo;
	}
	
	
	public function atualizaObservacaoLaudo($dados){
		$this->_db->query("update safra14. set id_role = 1 where id = $id");
	}

}
