<?php

class Produto_Model_ProdutosAtributos extends Agro_Db_Table_Abstract {
	protected $_schema = 'produto';
	protected $_name = 'produtos_atributos_rn';
	protected $_primary = array('id_grupo_atributo_rn', 'id_atributo_rn');
	
	public function save(array $values) {
		$Row = $this->find($values['id_grupo_atributo_rn'], $values['id_atributo_rn'])->current();
		if (!$Row) { $Row = $this->createRow(); } 
		
		$Row->id_grupo_atributo_rn = $values['id_grupo_atributo_rn'];
		$Row->id_atributo_rn = $values['id_atributo_rn'];
		$Row->ds_valor = $values['ds_valor'];
		$Row->fl_del = 0;
		
		return $Row->save();
	}
	
	public function deleteProdutoAtributo($idGrupo, $idAtributo=null) {
		if ($idAtributo) {
			$this->_db->query("update produto.produtos_atributos_rn set fl_del = true where id_grupo_atributo_rn = $idGrupo and id_atributo_rn = $idAtributo");
		} else {
			$this->_db->query("update produto.produtos_atributos_rn set fl_del = true where id_grupo_atributo_rn = $idGrupo");
		}
	}
	
	
	public function getAtributosFromProduto($id, $grupoPadrao = true, $tipo = 'p', $indexarPorChave = false, $somenteCheckados = false, $idUsuario = null) {
		$ret = array();
		
		if ($id) {
            $select = $this->select()->setIntegrityCheck(false);
            $select->from(array('pga' => 'produto.produtos_grupos_atributos_rn'));
            $select->join(array('pa' => 'produto.produtos_atributos_rn'), 'pa.id_grupo_atributo_rn = pga.id');
            $select->join(array('ar' => 'produto.atributos_rn'), 'ar.id = pa.id_atributo_rn');
            $select->where('pga.id_produto = ?', $id);
            $select->where('pga.fl_grupo_padrao = ?', $grupoPadrao === true ? 't' : 'f');
            $select->where('pga.ds_tipo = ?', $tipo);
            
            if ($somenteCheckados) {
            	$select->where('pa.fl_del = ?', 'f');
            }

            if (!empty($idUsuario)) {
                $select->join(array('pgu' => 'produto.produtos_grupos_atributos_rn_usuarios'), 'pgu.id_grupo_atributo_rn = pga.id', null);
                $select->where('pgu.id_usuario = ?', $idUsuario);
            }

			$Rs = $this->fetchAll($select);

			if ($Rs->count()) {
				foreach ($Rs as $row) {
					
					if ($indexarPorChave) {
						$ret[$row['ds_chave_rn']] = $row['ds_valor'];
						continue;
					}

					$ret[$row['id_atributo_rn']] = $row['ds_valor'];
				}
			}
		}
		
		return $ret;
	}
	
	public function getChildren($id_atributo) {
		$Rs = $this->_db->fetchAll("select * from produto.atributos_rn where id_parent = $id_atributo");
		return $Rs;
	}

	public function getTaxaReplantio($idProduto, $idUsuario, $idMunicipio, $idProponente, $isRenovacao = false)
	{
        $retorno = (new Produto_Model_Atributogrupos())->getAtributosProduto(
            $idProduto,
            $idUsuario,
            $idMunicipio,
            $idProponente,
            ($isRenovacao) ? 'PROD_PERCENT_TAXA_RENOVACAO_REPLANTIO' : 'PROD_PERCENT_TAXA_REPLANTIO',
            ['ppgar.ds_nome_grupo', 'ppar.ds_valor', 'par.ds_ordem'],
            1
        );

        if (empty($retorno)) {
        	return null;
        }

        return $retorno['ds_valor'];
	}
}
