<?php declare (strict_types=1);

class Produto_CondicaoespecialconfiguracaoController extends Agro_Controller_Action
{
    public function buscatextospordatacorteAction()
    {
        $this->isAjax();

        try {
            $params = $this->getRequest()->getParams();

            if (empty($params['idCondicaoEspecial'])) {
                throw new Exception('ID condição especial não informado.', 1);
            }

            if (!filter_var($params['idCondicaoEspecial'], FILTER_VALIDATE_INT)) {
                throw new InvalidArgumentException('ID condição especial deve ser um inteiro.', 1);
            }
            
            if (
                empty($params['idConfiguracaoDataCorte'])
                || !filter_var($params['idConfiguracaoDataCorte'], FILTER_VALIDATE_INT)
            ) {
                throw new Exception('Data de corte não informada.', 1);
            }
            
            $dataCorte = (new Produto_Model_ConfiguracaoDataCorte())
                ->find((int) $params['idConfiguracaoDataCorte'])
                ->current();
            
            if (empty($dataCorte)) {
                throw new Exception('Data de corte não encontrada.', 1);
            }
           
            $configuracao = (new Produto_Model_CondicaoEspecialConfiguracao())->getConfiguracaoPorData(
                (int) $params['idCondicaoEspecial'],
                DateTime::createFromFormat('Y-m-d', $dataCorte['dt_corte'])
            );
            
            $retorno = [
                'erro' => false,
                'ds_condicao_especial' => $configuracao['ds_condicao_especial'] ?? ''
            ];
        } catch (Exception $e) {
            $mensagem = $e->getCode() == 1 ? $e->getMessage() : 'Erro ao buscar textos.';

            $retorno = [
                'erro' => true,
                'mensagem' => $mensagem
            ];
        }

        $this->getResponse()->setBody(Zend_Json::encode($retorno));
    }
}