<?php

class Produto_Model_GestaoComissaoCulturas extends Agro_Db_Table_Abstract
{
    protected $_schema = 'produto';
    protected $_name = 'gestao_comissao_culturas';
    protected $_primary = 'id';

    public function deleteByGestaoComissao(int $idGestaoComissao)
    {
        parent::delete($idGestaoComissao, "id_gestao_comissao");
    }

    public function save(array $dados)
    {
        $row = $this->getRow($dados['id']);
        $row->id_gestao_comissao = !empty($dados['id_gestao_comissao']) ? $dados['id_gestao_comissao'] : $row->id_gestao_comissao;
        $row->id_cultura = !empty($dados['id_cultura']) ? $dados['id_cultura'] : $row->id_cultura;
        $row->save();

        return $row;
    }

    /**
     * Retornam os ids das culturas que estão vinculadas com a gestão de comissão informada
     *
     * @param int $idGestaoComissao
     * @return array
     */
    public function getIdCulturas(int $idGestaoComissao): array
    {
        $select = $this->select()->setIntegrityCheck(false);
        $select->from(['gcc' => "{$this->_schema}.{$this->_name}"], "json_agg(DISTINCT id_cultura) AS culturas");
        $select->where("id_gestao_comissao = ?", $idGestaoComissao);
        $rs = $this->_db->query($select)->fetch();

        return !empty($rs['culturas']) ? json_decode($rs['culturas'], true) : []; 
    }
}
