<?php
class Sinistro2_Model_LaudosPerito extends Agro_Db_Table_Abstract {
	protected $_schema = 'sinistro';
	protected $_name = 'v_laudos_peritos';
	protected $_primary = 'id';
	public $_order = array("chave");
	public $_columnExcel = array(
		'chave' => 'Código',
		'id_safra' => 'Safra',
		'laudo' => 'Laudo',
		'produto/cobertura' => 'Produto/Cobertura',
		'digitavel'	=> 'Digitável'
	);	
	
	//SELECT laudos_peritos.id, laudos_peritos.chave, laudos_peritos.laudo, laudos_peritos.arquivo, laudos_peritos.tipo, laudos_peritos.fl_ativo, laudos_peritos.id_grupamento_cultura, gc.ds_nome_grupamento_cultura, gc.ds_chave_grupamento_cultura
	//produtos_coberturas.id_laudo, produtos_coberturas.produto_cobertura, produtos_coberturas.id_safra, produtos_coberturas.fl_ativo, produtos_coberturas.id_produto, produtos_coberturas.id_cobertura, produtos_coberturas.tipo
	public function buscaProdutosCoberturas($id_laudo, $tipo, $id_safra = ''){

		$safra = $id_safra ? " and id_safra = $id_safra " : "";

		if ($tipo == "Laudo Prévia"){
			$sql = "select ds_nome_produto from produto.produtos p where id_tipo_vistoria_previa = $id_laudo $safra;";
			
			$Row = $this->_db->fetchAll($sql);
			
			$prod_cob = array();
			
			if ($Row){
				foreach ($Row as $item){
					$prod_cob[] = str_ireplace("AgroBrasil ", "", $item["ds_nome_produto"]);
				}
			
				$prod_cob = array_unique($prod_cob);
			
				return '<div style="text-align: left; width: 20%;"><ul><li>'.implode("</li><li>", $prod_cob).'</li></ul></div>';
			
			} else {
				return false;
			
			}
			
			
		} else {
			$sql = "select produto_cobertura from sinistro.v_produto_cobertura_por_laudo where id_laudo = $id_laudo and tipo = '$tipo' $safra;";
			
			$Row = $this->_db->fetchAll($sql);
			
			$prod_cob = array();
			
			if ($Row){
				foreach ($Row as $item){
					$prod_cob[] = str_ireplace("AgroBrasil ", "", $item["produto_cobertura"]);
				}
			
				$prod_cob = array_unique($prod_cob);
			
				return '<div style="text-align: left; width: 20%;"><ul><li>'.implode("</li><li>", $prod_cob).'</li></ul></div>';
			
			} else {
				return false;
			
			}	
		}	
	}
	
	public function buscaLaudos($filter){
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array("l"=>"sinistro.v_produto_cobertura_por_laudo"), array("id_laudo"));
		
		if (array_key_exists("id_safra", $filter)){
			$Select->where("id_safra = {$filter['id_safra']}");
		}
		
		if (array_key_exists("id_produto", $filter)){
			$Select->where("id_produto = {$filter['id_produto']}");
		}
		
		if (array_key_exists("id_cobertura", $filter)){
			$Select->where("id_cobertura = {$filter['id_cobertura']}");
		}

		$Rows = $this->_db->fetchAll($Select);
		
		$result = array();
		foreach ($Rows as $laudo){
			$result[] = $laudo["id_laudo"];
		}

		$result = array_unique($result);
		
		return (count($result) ? $result : false);
	}
	
	public function buscaProdutosCoberturasExcel($id_laudo, $tipo, $id_safra = ''){

		$safra = $id_safra ? " and id_safra = $id_safra " : "";
		
		if ($tipo == "Laudo Prévia"){
			$sql = "select ds_nome_produto from produto.produtos p where id_tipo_vistoria_previa = $id_laudo $safra";
			
			$Row = $this->_db->fetchAll($sql);
			
			$prod_cob = array();
			
			if ($Row){
				foreach ($Row as $item){
					$prod_cob[] = str_ireplace("AgroBrasil ", "", $item["ds_nome_produto"]);
				}
			
				$prod_cob = array_unique($prod_cob);
			
				return implode(",", $prod_cob);
			
			}
			
			
		} else {
			$sql = "select produto_cobertura from sinistro.v_produto_cobertura_por_laudo where id_laudo = $id_laudo and tipo = '$tipo' $safra;";
			
			$Row = $this->_db->fetchAll($sql);
			
			$prod_cob = array();
			
			if ($Row){
				foreach ($Row as $item){
					$prod_cob[] = str_ireplace("AgroBrasil ", "", $item["produto_cobertura"]);
				}
			
				$prod_cob = array_unique($prod_cob);

				return implode(", ", $prod_cob);
			
			}
		}	
	}	
	
	public function isDigitavel($tipo_laudo, $id_safra, $ds_chave){

		try{
			$existe = null;
			
			$Select = $this->select()->setIntegrityCheck(false);

			if($tipo_laudo == 'Laudo Preliminar'){
				$Select->from(array("tlp" => "sinistro.tipo_laudo_preliminar"), 'ds_chave');
				$Select->where("tlp.ds_chave = '".$ds_chave."'");
				$Select->where("tlp.id_safra = '".$id_safra."'");
				$Select->where("tlp.fl_ativo = true");
				
				$Row = $this->_db->fetchOne($Select);	

				if($Row){
					$Select = $this->select()->setIntegrityCheck(false);
					$Select->from(array("safraX" => "safra".$id_safra.".".strtolower($Row)), 'id');
					$Select->limit(1);
					$check = $this->_db->fetchOne($Select);
					
					return true;
	
				}

			}else{
				$Select->from(array("tlf" => "sinistro.tipo_laudo_final"), 'ds_chave');
				$Select->where("tlf.ds_chave = '".$ds_chave."'");
				$Select->where("tlf.id_safra = '".$id_safra."'");
				$Select->where("tlf.fl_ativo = true");
				
				$Row = $this->_db->fetchOne($Select);
				
				if($Row){

					$Select = $this->select()->setIntegrityCheck(false);
					$Select->from(array("safraX" => "safra".$id_safra.".".strtolower($Row)), 'id');
					$Select->limit(1);
					$check = $this->_db->fetchOne($Select);
					return true;
						
				}

			}

			return false;

		}catch (Exception $e){ 
			return false;
		}

	}
	
	
	public function getArquivoPreenchimentoLaudo($produto, $idEvento, $coberturaPrincipal, $idCoberturas){
		
		$sqlLaudosPerito = $this->select()->distinct(true)->setIntegrityCheck(false);
		$sqlLaudosPerito->from(array("l"=>"sinistro.v_produto_cobertura_por_laudo"), array("id_laudo"));
		$sqlLaudosPerito->join("produto.coberturas_eventos", "l.id_cobertura = coberturas_eventos.id_cobertura", array());
		$sqlLaudosPerito->where("l.id_safra = {$produto['id_safra']}");
		$sqlLaudosPerito->where("l.id_produto = {$produto['id']}");
		$sqlLaudosPerito->where("coberturas_eventos.id_evento = ?", $idEvento);
		$sqlLaudosPerito->where("l.id_cobertura in (".$coberturaPrincipal['id'].(count($idCoberturas) > 0 ? ",".implode(',',$idCoberturas) : "").")");
		$sqlLaudosPerito->where("l.fl_ativo = 't'");
		//$sqlLaudosPerito->where("l.id_cobertura = {$coberturaPrincipal['id']}");
		
		$RowLaudos = $this->fetchAll($sqlLaudosPerito)->toArray();
		
		return $RowLaudos;
	}
	
	
}
