<?php declare(strict_types=1);

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

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

            if (empty($params['idProduto'])) {
                throw new Exception('ID produto não informado.', 1);
            }

            if (!filter_var($params['idProduto'], FILTER_VALIDATE_INT)) {
                throw new InvalidArgumentException('ID produto 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_ProdutoConfig())->getConfiguracaoByDataCorte(
                (int) $params['idProduto'],
                DateTime::createFromFormat('Y-m-d', $dataCorte['dt_corte'])
            );
            
            $retorno = [
                'erro' => false,
                'ds_url_condicoes' => $configuracao['ds_url_condicoes'] ?? '',
				'ds_frase_restricoes' => $configuracao['ds_frase_restricoes'] ?? '',
                'ds_frase_risco' => $configuracao['ds_frase_risco'] ?? '',
                'ds_frase_padrao_orcamento' => $configuracao['ds_frase_padrao_orcamento'] ?? '',
                'id_modelo_vistoria_previa' => $configuracao['id_modelo_vistoria_previa'] ?? ''
            ];
        } 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));
    }
}