<?

class Safra13_Model_LaudosFinaisUvaGeadaItensSegurados extends Agro_Db_Table_Abstract {
	protected $_schema = 'safra13';
	protected $_name = 'laudos_finais_uva_geada_itens_segurados';
	protected $_primary = 'id';
	public $_order = 'id_laudo_final_item_segurado';

	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) {
	    
	    // Busca avisos relacionados ao laudo final
		$select = $this->select();
		$select->setIntegrityCheck(false);
		$select->from(array('vlf'=>'sistema.vistorias_laudos_finais'), null);
		$select->join(array('va'=>'sinistro.vistorias_avisos'), 'va.id_vistoria = vlf.id_vistoria', 'va.id_aviso');
		$select->where('vlf.id_laudo_final = ?', $idLaudo);
		
		$arAvisos = $this->fetchAll($select)->toArray();
		$arIdAvisos = array();
		foreach($arAvisos as $aviso) {
		    $arIdAvisos[] = $aviso['id_aviso'];
		}
	    	    
		$select = $this->select();
		$select->setIntegrityCheck(false);
		$select->from(array('va'=>'sinistro.vistorias_avisos'), null);
		$select->join(array('vlp'=>'sistema.vistorias_laudos_preliminares'), 'vlp.id_vistoria = va.id_vistoria', null);
		$select->join(array('lp'=>'sinistro.laudos_preliminares'), 'lp.id = vlp.id_laudo_preliminar', null);
		$select->join(array('lpis'=>'sinistro.laudos_preliminares_itens_segurados'), 'lpis.id_laudo_preliminar = lp.id', false);
		$select->join(array('lpugis'=>'safra13.laudos_preliminares_uva_geada_itens_segurados'), 'lpugis.id_laudo_preliminar_item_segurado = lpis.id', '(nr_brotos_queimados + nr_brotos_inteiros) as nr_total_brotos');		
		
		$select->join(array('it'=>'seguro.itens_segurados'), 'it.id = lpis.id_item_segurado', array('id_proposta', 'id', 'nr_item_segurado', 'ds_item_segurado', 'vl_area', 'vl_lmga'));
		$select->join(array('v'=>'produto.variedades'),'v.id = it.id_variedade', 'ds_nome_variedade');
		
		$select->joinLeft(array('lfis'=>'sinistro.laudos_finais_itens_segurados'), 'lfis.id_item_segurado = it.id and lfis.id_laudo_final = '.$idLaudo, array('fl_nao_vistoriada', 'id_motivo_quadra_nao_vistoriada', 'vl_percent_colhido'));
		$select->joinLeft(array('lfugis'=>'safra13.laudos_finais_uva_geada_itens_segurados'), 'lfugis.id_laudo_final_item_segurado = lfis.id', array('nr_total_brotos_c_cacho', 'nr_total_brotos_s_cacho', 'vl_percent_dano'));
		$select->where('va.id_aviso in (?)', implode(',', $arIdAvisos));
		$select->group(array(
        	"it.id_proposta", 
        	"it.id", 
        	"it.nr_item_segurado", 
        	"it.ds_item_segurado", 
        	"it.vl_area", 
        	"it.vl_lmga", 
        	"v.ds_nome_variedade", 
        	"nr_total_brotos", 
        	"lfis.fl_nao_vistoriada", 
        	"lfis.id_motivo_quadra_nao_vistoriada", 
        	"lfis.vl_percent_colhido", 
        	"lfugis.nr_total_brotos_c_cacho", 
        	"lfugis.nr_total_brotos_s_cacho", 
        	"lfugis.vl_percent_dano" 	
		));
		$select->order('it.id');
		
		//die($select);
		
		return $this->fetchAll($select)->toArray();
	}

	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 safra13.laudos_finais_uva_geada_itens_segurados lfugis on lfugis.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 safra13.laudos_finais_uva_geada_itens_segurados lfugis on lfugis.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);
	}
}