<?php

class Produto_Model_Rotinas extends Agro_Db_Table_Abstract {
	protected $_schema = 'produto';
	protected $_name = 'produtos';
	protected $_primary = array('id');

	public function insereGrupoZoneamento($dados){
        $ModelZoneamento = new Produto_Model_Validacoeszoneamento();

        $Zoneamento = $ModelZoneamento->createRow();
		$Zoneamento->id_validacao  = 4;
		$Zoneamento->id_produto    = $dados['id_produto'];
		$Zoneamento->id_ciclo 	   = $dados['id_ciclo'];
		if($dados['id_solo']){
		    $Zoneamento->id_tipo_solo  = $dados['id_solo'];
		}
		$Zoneamento->dt_inicial = date("Y-m-d", strtotime($dados['dt_inicio']));
		$Zoneamento->dt_final = date("Y-m-d", strtotime($dados['dt_fim']));

		$Zoneamento->dt_inicio_restricao = $dados['dt_inicio_restricao'] != '' ? date("Y-m-d", strtotime($dados['dt_inicio_restricao'])) : null;
		$Zoneamento->dt_termino_restricao = $dados['dt_termino_restricao'] != '' ? date("Y-m-d", strtotime($dados['dt_termino_restricao'])) : null;

        try {
            return $Zoneamento->save();
        } catch (Exception $e) {
            die($e);
            $this->setMessage($e->getMessage());
            return false;
        }
	}

	public function insereHabilitacaoMunicipio($dados){
        $Habilitacoes = new Produto_Model_Validacoeszoneamentomunicipios();
        return $Habilitacoes->save($dados);
	}

    public function insereHabilitacaoMunicipioLote(array $dados){
        try{
            if (!empty($dados)) {
                $sql = "INSERT INTO produto.validacoes_zoneamento_graos_municipios (
                              id_validacao_zoneamento_graos,
                              id_municipio,
                              vl_altitude,
                              id_sistema_plantio,
                              id_usuario_criacao,
                              dt_criacao
                        ) VALUES 
                        " . implode(', ', $dados) . "
                        ";
                $result = $this->_db->query($sql);
            }

            return true;

        }catch (Exception $e){
            return false;
        }
    }

	public function removeHabilitacao($dados){
        $Habilitacoes = new Produto_Model_Habilitacoes();
        return $Habilitacoes->remove($dados['id_corretor'], $dados['id_produto'], $dados['id_estado'], $dados['id_municipio']);
	}

	public function removeZoneamento($idProduto, $idCiclo, $idTipoSolo, $idMunicipio, $dtInicial, $dtFinal){
	
		try{

			if($idTipoSolo){
		        $sql_solo = "id_tipo_solo = ".$idTipoSolo." and";
		    }
	
	        $sql = "select
	                    id
	                from
	                     produto.validacoes_zoneamento_graos
	                where
	        			id_produto = $idProduto and
	        			id_ciclo = $idCiclo and
	        			".$sql_solo."
	        			id in (
	    					select id_validacao_zoneamento_graos
	    					from produto.validacoes_zoneamento_graos_municipios
	    					where id_municipio=$idMunicipio
	        			) and
	        			dt_inicial = '".date("Y-m-d", strtotime($dtInicial))."' and
						dt_final   = '".date("Y-m-d", strtotime($dtFinal))."'
	        		";
	        $idValidacaoZoneamento = $this->_db->fetchOne($sql);
	        $Zoneamento = new Produto_Model_Validacoeszoneamento();
	        $Zoneamento->remove($idValidacaoZoneamento);
	        
	        return true;
	        
		}catch (Exception $e){
			return false;
		}
	}

    public function removeZoneamentoByMunicipioProduto($idProduto, $idMunicipio){

        try{
            $sql = "delete
	                from
	                     produto.validacoes_zoneamento_graos
	                where
	        			id_produto = $idProduto and
	        			id in (
	    					select id_validacao_zoneamento_graos
	    					from produto.validacoes_zoneamento_graos_municipios
	    					where id_municipio=$idMunicipio
	        			)
	        		";
            $result = $this->_db->query($sql);

            return true;

        }catch (Exception $e){
            return false;
        }
    }
	
	public function removeZoneamentoUF($idProduto, $idEstado){
		try{
			$Zoneamento = new Produto_Model_Validacoeszoneamento();
			
			if($idEstado > 0){
				$sql = "
					select 
					   vz.id
					from 
					    produto.validacoes_zoneamento_graos vz
					    inner join produto.validacoes_zoneamento_graos_municipios vzm on vzm.id_validacao_zoneamento_graos = vz.id
					    inner join sistema.municipios m on m.id = vzm.id_municipio
					    inner join sistema.estados e on e.id = m.id_estado
					where
						vz.id_produto=".$idProduto." and
						m.id_estado = ".$idEstado."
					group by 
					    vz.id, vz.id_produto, e.ds_sigla, m.id_estado					
				";
	
				$rsZoneamento = $this->_db->fetchAll($sql);
				
				foreach($rsZoneamento as $zoneamento){
					$Zoneamento->remove($zoneamento['id']);
				}
			} else {
				$Zoneamento->removeByProduto($idProduto);
			}

			return true;
			 
		}catch (Exception $e){
			return false;
		}
	}
	
	public function removeCiclos($idProduto){
	    try{
	        $Ciclos = new Produto_Model_VariedadesCiclos();
	        $Ciclos->delete($idProduto);
	        
	        return true;
	        
	    } catch (Exception $e) {
	        return false;
	    }
	}
}
