<?php declare(strict_types=1);

class Produto_Model_ProdutoCoberturaConfiguracao extends Agro_Db_Table_Abstract
{
    protected $_schema = 'produto';
	protected $_name = 'produto_cobertura_configuracao';
	protected $_primary = ['id_produto', 'id_cobertura'];

    public function save(array $dados): array
    {
        $this->_db->query("
            UPDATE produto.produto_cobertura_configuracao 
            SET fl_ativo = FALSE
            WHERE id_produto = {$dados['id_produto']}
                AND id_cobertura = {$dados['id_cobertura']}
                AND fl_ativo IS TRUE
        ");

        $row = $this->createRow();

        $row->id_produto = $dados['id_produto'];
        $row->id_cobertura = $dados['id_cobertura'];
        $row->ds_frase_outros_riscos_excluidos = $dados['ds_frase_outros_riscos_excluidos'];
        $row->ds_frase_condicoes_particulares = $dados['ds_frase_condicoes_particulares'];
        
        return $row->save();
    }

    public function findByIdProduto(int $idProduto)
    {
        return $this->fetchRow(['id_produto' => $idProduto, 'fl_ativo' => true]);
    }

    public function getConfiguracoesAntigas(int $idProduto, int $idCobertura): Zend_Db_Table_Row
    {
        $row = $this->fetchRow(
            $this->select()
                ->from(['produto_cobertura_configuracao' => 'produto.produto_cobertura_configuracao'])
                ->where('id_produto = ?', $idProduto)
                ->where('id_cobertura = ?', $idCobertura)
                ->where('fl_ativo IS FALSE')
                ->order('id ASC')
                ->limit(1)
        );

        if (!empty($row)) {
            return $row;
        }

        $row = $this->fetchRow(
            $this->select()
                ->from(['produto_cobertura_configuracao' => 'produto.produto_cobertura_configuracao'])
                ->where('id_produto = ?', $idProduto)
                ->where('id_cobertura = ?', $idCobertura)
                ->where('fl_ativo IS TRUE')
        );

        return $row;
    }
}
