<?php

class Produto_Model_ValidacoesSubvencaoGrupos extends Agro_Db_Table_Abstract {
	protected $_schema = 'produto';
	protected $_name = 'validacoes_limites_subvencao_grupos';
	protected $_primary = 'id';
	public $_paginator = false;
	public $_order = 'ds_nome_funcionario';


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

		$Row->id_validacao = $data['id_validacao'];
		$Row->id_usuario = $data['id_usuario'];
		$Row->ds_nome_validacao = $data['ds_nome_validacao'];
		$Row->ds_ano = $data['ds_ano'];
		$Row->vl_limite_subvencao = ($data['vl_limite_subvencao'] ? Agro_Util::formatCurrencyDb($data['vl_limite_subvencao']) : 0);
		$Row->fl_ativo = ($data['fl_ativo'] ? 1 : 0);

		//temporariamente até poder retirar o campo da tabela
		$Row->id_cultura = 2;

		return $Row->save();
	}

	public function getGrupoLimiteSubvencao(int $idComercial, int $idCultura, int $idCorretor, $dsAno)
    {
        $dsAno = is_int($dsAno) ? "'{$dsAno}'" : $dsAno;
        $select = $this->select()->setIntegrityCheck(false)->distinct();
        $select->from(array('vlsg' => 'produto.validacoes_limites_subvencao_grupos'), array('id'));
        $select->join(
            array('vlsgu' => 'produto.validacoes_limites_subvencao_grupos_usuarios'),
            'vlsgu.id_validacao_subvencao_grupo = vlsg.id',
            null
        );
        $select->join(
            array('vlsgc' => 'produto.validacoes_limites_subvencao_grupos_culturas'),
            'vlsgc.id_validacao_subvencao_grupo = vlsg.id',
            null
        );
        $select->where("vlsg.id_usuario = ?", $idComercial);
        $select->where("vlsgu.id_usuario = ?", $idCorretor);
        $select->where("vlsgc.id_cultura = ?", $idCultura);
        $select->where("vlsg.ds_ano = ?", $dsAno);
        $select->where("vlsg.fl_ativo = ?", true);

        return Agro_Db_Table_Abstract::getDefaultAdapter()->fetchRow($select);
    }

	public function getData($where) {
	    $User = Zend_Auth::getInstance()->getIdentity();

		$sql = "
			select
				vls.*,
				seguro.soma_subvencao_utilizada(vls.id) as vl_subvencao_utilizada,
				fu.ds_nome_funcionario,
				vls.vl_limite_subvencao - seguro.soma_subvencao_utilizada(vls.id) as vl_disponivel_validacao
			from
				produto.validacoes_limites_subvencao_grupos vls
				inner join sistema.funcionarios fu on vls.id_usuario = fu.id_usuario
		    where
		        1 = 1
			";

		//(select vl_limite_subvencao from produto.validacoes_limites_subvencao_comercial where id_usuario=vls.id_usuario and ds_ano=to_number(vls.ds_ano,'9999')) - seguro.soma_subvencao_utilizada(vls.id) as vl_disponivel_total

		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";
		}

        if($User->id_departamento == 27){
            $sql .= " and vls.id_usuario = ".$User->id;
        }

		$sql .= ' order by fu.ds_nome_funcionario, vls.ds_nome_validacao';

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

	public function delete($id) {
		$this->_db->query("delete from produto.validacoes_limites_subvencao_grupos_culturas where id_validacao_subvencao_grupo={$id}");
		$this->_db->query("delete from produto.validacoes_limites_subvencao_grupos_usuarios where id_validacao_subvencao_grupo={$id}");
		$this->_db->query("delete from produto.validacoes_limites_subvencao_grupos where id={$id}");
		return true;
	}

}