<?

class Safra12_Model_LaudosFinaisGraosMultirriscoItensSegurados extends Agro_Db_Table_Abstract {
	protected $_schema = 'safra12';
	protected $_name = 'laudos_finais_graos_multirrisco_itens_segurados';
	protected $_primary = 'id';
	public $_order = 'id_laudo_final_item_segurado';

	public function find($idLaudoFinal, $idItem) {
		$select = $this->select();
		$select->setIntegrityCheck(false);
		$select->from(array('item'=>'sinistro.laudos_finais_itens_segurados'), array('id as id_laudo_final_item_segurado', 'id_item_segurado', 'dt_vistoria', 'vl_percent_perdas', 'ds_observacao', 'fl_assinatura_regulador', 'fl_assinatura_segurado','vl_percent_colhido'));
		$select->joinLeft(array('it'=>"$this->_schema.$this->_name"),'it.id_laudo_final_item_segurado = item.id', array('vl_rendimento_obtido_kg_ha', 'vl_rendimento_obtido_sacos_ha', 'vl_rendimento_final_ton_ha','tp_amostragem'));
		$select->where('item.id_laudo_final = ?', $idLaudoFinal);
		$select->where('item.id_item_segurado = ?', $idItem);
		
		if ($this->fetchRow($select)) {
			return $this->fetchRow($select)->toArray();
		} else {
			return array();
		}
	}

	public function delete($idLaudoFinalItemSegurado) {
		$sql = "delete from {$this->_schema}.{$this->_name} where id_laudo_final_item_segurado = $idLaudoFinalItemSegurado";
		$this->_db->query($sql);
	}

	public function getItensByLaudo($idLaudo) {
		$select = $this->select();
		$select->setIntegrityCheck(false);
		$select->from(array('lf'=>'sinistro.laudos_finais'), false);
		$select->join(array('lfit'=>'sinistro.laudos_finais_itens_segurados'), 'lfit.id_laudo_final = lf.id', '*');
		$select->joinLeft(array('gmit'=>$this->_schema . '.' . $this->_name), 'gmit.id_laudo_final_item_segurado = lfit.id', array('vl_rendimento_final_ton_ha'));
		$select->join(array('it'=>'seguro.itens_segurados'), 'it.id = lfit.id_item_segurado', array('vl_area', 'nr_item_segurado', 'ds_item_segurado', 'vl_lmga'));
		$select->join(array('v'=>'produto.variedades'), 'v.id = it.id_variedade', 'ds_nome_variedade');
		$select->where('lf.id = ?', $idLaudo);

		return $this->fetchAll($select)->toArray();
	}

	public function getItensNaoSalvos($idProposta, $idItem, $idVistoria) {
		$select = "
				SELECT 	
					it.id_proposta,
					it.id,
					it.nr_item_segurado,
					it.ds_item_segurado,
					it.vl_area,
					it.vl_lmga,
					v.ds_nome_variedade
				FROM 
						   seguro.itens_segurados AS it
					INNER JOIN produto.variedades     AS v  ON  
							v.id = it.id_variedade	
					INNER JOIN sinistro.laudos_preliminares_itens_segurados AS lpis ON
							lpis.id_item_segurado = it.id
					INNER JOIN sistema.vistorias_itens_segurados AS vis ON
							vis.id_item_segurado = it.id
					INNER JOIN sistema.vistorias_laudos_preliminares AS vlp ON
							vlp.id_vistoria = vis.id_vistoria and vlp.id_laudo_preliminar = lpis.id_laudo_preliminar
		
				WHERE
					    it.id_proposta = $idProposta
					AND vis.id_vistoria IN (
								select 
									id_vistoria	
								from
									sinistro.vistorias_avisos va
									inner join sistema.vistorias v on 
										v.id = va.id_vistoria
									inner join sistema.tipos_vistoria tv on
										tv.id = v.id_tipo
								where
									id_aviso in (
											SELECT 
												id_aviso
											FROM
												sinistro.vistorias_avisos
											WHERE
												id_vistoria = $idVistoria
									)
									and tv.ds_chave_tipos_vistoria='PRELIMINAR'
							)
					AND it.id NOT IN (
							SELECT 
								lfis.id_item_segurado
							FROM
							           seguro.itens_segurados                 AS it 
							INNER JOIN sinistro.laudos_finais_itens_segurados AS lfis ON
									lfis.id_item_segurado = it.id
							WHERE 
								it.id_proposta = $idProposta
							)	
					AND it.id != $idItem
				order by it.id
		";

		return $this->_db->fetchAll($select);
	}

	public function getItensRevistoriadosNaoSalvos($idProposta, $idItem, $idRevistoria) {
		$select = "
				SELECT 	
					it.id_proposta,
					it.id,
					it.nr_item_segurado,
					it.ds_item_segurado,
					it.vl_area,
					it.vl_lmga,
					v.ds_nome_variedade
				FROM 
						   seguro.itens_segurados AS it
					INNER JOIN produto.variedades AS v  ON  
							v.id = it.id_variedade	
					INNER JOIN sinistro.laudos_finais_itens_segurados AS lfis ON
							lfis.id_item_segurado = it.id
					INNER JOIN sistema.vistorias_itens_segurados AS vis ON
							vis.id_item_segurado = it.id
					INNER JOIN sistema.vistorias_laudos_finais AS vlf ON
							vlf.id_vistoria = vis.id_vistoria and vlf.id_laudo_final = lfis.id_laudo_final
		
				WHERE
					    it.id_proposta = $idProposta
					AND vis.id_vistoria IN (
								SELECT 
									rv.id_vistoria
								FROM
									sistema.revistorias_vistorias rv
								WHERE
									rv.id_revistoria = $idRevistoria
							)
					AND it.id NOT IN (
							SELECT 
								lfis.id_item_segurado
							FROM
							           seguro.itens_segurados                 AS it 
							INNER JOIN sinistro.laudos_finais_itens_segurados AS lfis ON
									lfis.id_item_segurado = it.id
							WHERE 
								it.id_proposta = $idProposta
							)	
					AND it.id != $idItem
				order by it.id
		";

		return $this->_db->fetchAll($select);
	}

	public function getMaiorPercentColhidoLF($idProposta, $idCobertura, $idItem, $dtVistoria) {

		$select = "
				select 
					max(lfis.vl_percent_colhido) as vl_percent_colhido
				from
					sinistro.avisos av
					inner join sinistro.vistorias_avisos va on va.id_aviso = av.id
					inner join sistema.vistorias_coberturas vc on vc.id_vistoria = va.id_vistoria
					inner join sistema.vistorias_laudos_finais vlf on vlf.id_vistoria = va.id_vistoria
					inner join sinistro.laudos_finais_itens_segurados lfis on lfis.id_laudo_final = vlf.id_laudo_final
					inner join safra12.laudos_finais_graos_multirrisco_itens_segurados lfgmis on lfgmis.id_laudo_final_item_segurado = lfis.id
				where
					av.id_proposta = $idProposta and
					vc.id_cobertura = $idCobertura and
					lfis.id_item_segurado = $idItem and
					lfis.dt_vistoria < '$dtVistoria'
		";	
	
		return $this->_db->fetchOne($select);
	}
		
	public function getMaiorPercentColhidoRevistoria($idProposta, $idCobertura, $idItem, $dtVistoria) {

		$select = "
				select 
					max(lfis.vl_percent_colhido) as vl_percent_colhido
				from
					sinistro.avisos av
					inner join sinistro.vistorias_avisos va on va.id_aviso = av.id
					inner join sistema.vistorias_coberturas vc on vc.id_vistoria = va.id_vistoria
					inner join sistema.revistorias_vistorias rv on rv.id_vistoria = va.id_vistoria
					inner join sistema.vistorias_laudos_finais vlf on vlf.id_vistoria = rv.id_revistoria
					inner join sinistro.laudos_finais_itens_segurados lfis on lfis.id_laudo_final = vlf.id_laudo_final
					inner join sinistro.laudos_finais_itens_segurados_revistoria lfisrv on lfisrv.id_laudo_final_item_segurado = lfis.id
					inner join safra12.laudos_finais_graos_multirrisco_itens_segurados lfgmis on lfgmis.id_laudo_final_item_segurado = lfis.id
				where
					av.id_proposta = $idProposta and
					vc.id_cobertura = $idCobertura and
					lfis.id_item_segurado = $idItem and
					lfis.dt_vistoria < '$dtVistoria' and
					lfisrv.fl_substitui_laudo_anterior = true
		";	
	
		return $this->_db->fetchOne($select);
	}
}