<?php

class Produto_Model_Validacoeszoneamento extends Agro_Db_Table_Abstract {
	protected $_schema = 'produto';
	protected $_name = 'validacoes_zoneamento_graos';
	protected $_primary = 'id';
	public $_paginator = false;
	public $_order = 'id_produto';


	public function save(array $data) {
		$Row = $this->getRow($data['id']);

		$Row->id_ciclo = $data['id_ciclo'];
		$Row->id_produto = $data['id_produto'];
		$Row->id_tipo_solo = ($data['id_tipo_solo'] ? $data['id_tipo_solo'] : null);
		$Row->id_validacao = $data['id_validacao'];
		$Row->dt_inicial = Agro_Util::formatDate($data['dt_inicial'], Zend_Date::W3C);
		$Row->dt_final = Agro_Util::formatDate($data['dt_final'], Zend_Date::W3C);
		$Row->dt_inicio_restricao = Agro_Util::formatDate($data['dt_inicio_restricao'], Zend_Date::W3C);
		$Row->dt_termino_restricao = Agro_Util::formatDate($data['dt_termino_restricao'], Zend_Date::W3C);

		return $Row->save();
	}

	public function getData($where) {
		$sql = "
			select
				ts.ds_tipo_solo,
				zg.id,
				zg.fl_ativo,
				zg.id_validacao,
				p.ds_nome_produto,
				c.ds_nome_ciclo,
				ts.ds_chave,
				s.ds_nome_safra,
				zg.dt_inicial,
				zg.dt_final
			from
				produto.validacoes_zoneamento_graos zg inner join
				produto.produtos p  on zg.id_produto = p.id inner join
				produto.ciclos c on zg.id_ciclo = c.id left join
				produto.tipo_solo ts on zg.id_tipo_solo = ts.id inner join
				produto.safras s on p.id_safra = s.id left join
				produto.validacoes_zoneamento_graos_municipios zgm on zg.id = zgm.id_validacao_zoneamento_graos
			where
				1=1";

		if (is_array($where)) {
			foreach ($where as $clause) {
				$field = $clause['field'];
				$operator = $clause['operator'];
				$value = $clause['value'];

				$sql .= " and  $field $operator $value ";
			}
		} elseif ($where != '') {

			$sql .= " and $where";
		}

		$sql .= '
			group by ts.ds_tipo_solo,
				 zg.id,
				 zg.id_produto,
				 zg.fl_ativo,
				 zg.id_validacao,
				 zg.id_tipo_solo,
				 zg.id_ciclo,
				 p.ds_nome_produto,
				 c.ds_nome_ciclo,
				 ts.ds_chave,
				 s.ds_nome_safra,
				 s.id,
				 zg.dt_inicial,
				zg.dt_final
		order by s.id, zg.id_produto, zg.id_tipo_solo, id_ciclo ';

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

	public function remove($idValidacaoZoneamento) {
	    if($idValidacaoZoneamento){
	        $sql = "delete from produto.validacoes_zoneamento_graos where id=".$idValidacaoZoneamento;
	        return $this->_db->query($sql);
        }
	}
	
	public function removeByProduto($idProduto) {
		if($idProduto){
			$sql = "delete from produto.validacoes_zoneamento_graos where id_produto=".$idProduto;
			return $this->_db->query($sql);
		}
	}
}