<?php

class Produto_ValidacoesiniciocoberturaController extends Agro_Controller_Action
{
    protected $_backAfterSave = false;

    public function beforeSave()
    {
        if ((int)$this->_requestParams['id_tipo_validacao'] === Produto_Model_TiposValidacoesInicioCobertura::ID_DATA_FIXA) {
            $this->getRequest()->setParam('ds_descricao', $this->_requestParams['ds_descricao_data']);
        }
    }

    public function getFilter()
    {
        $parametros = $this->getRequest()->getParams();
        $where = [];

        if (!empty($parametros['ds_nome'])) {
            $where[] = [
                'field' => 'pvic.ds_nome',
                'operator' => 'ilike',
                'value' => "%{$parametros['ds_nome']}%"
            ];
        }

        if (!empty($parametros['id_cultura'])) {
            $where[] = [
                'field' => 'pvic.id_cultura',
                'operator' => '=',
                'value' => $parametros['id_cultura']
            ];
        }

        if (!empty($parametros['id_tipo_validacao'])) {
            $where[] = [
                'field' => 'pvic.id_tipo_validacao',
                'operator' => '=',
                'value' => $parametros['id_tipo_validacao']
            ];
        }

        if (!empty($parametros['fl_ativo'])) {
            $where[] = [
                'field' => 'pvic.fl_ativo',
                'operator' => '=',
                'value' => $parametros['fl_ativo'] === 'true' ? 't' : 'f'
            ];
        }

        return $where;
    }

    public function getForm()
    {
        return new Produto_Form_ValidacoesInicioCobertura();
    }

    public function getModel()
    {
        return new Produto_Model_ValidacoesInicioCobertura();
    }

    public function getmunicipiosvalidacaoAction()
    {
        $this->isAjax();

        $this->_return['estadosMunicipios'] = [];
        $estadosMunicipios = (new Produto_Model_ValidacoesInicioCoberturaMunicipios())->getMunicipiosValidacao(
            (int)$this->_requestParams['id_validacao_inicio_cobertura']
        )->toArray();

        foreach ($estadosMunicipios as $estadoMunicipio) {
            if (!array_key_exists($estadoMunicipio['sigla_estado'], $this->_return['estadosMunicipios'])) {
                $dados = new stdClass();
                $dados->sigla_estado = $estadoMunicipio['sigla_estado'];
                $dados->municipios = [];

                $this->_return['estadosMunicipios'][$estadoMunicipio['sigla_estado']] = $dados;
            }

            $this->_return['estadosMunicipios'][$estadoMunicipio['sigla_estado']]->municipios[] = $estadoMunicipio['id_municipio'];
        }

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

    public function getmunicipiosvinculadosoutrasvalidacoesAction()
    {
        $this->isAjax();

        $this->_return['municipios'] = $this->getModel()->getMunicipiosVinculadosOutrasValidacoes(
            (int)$this->_requestParams['id_validacao_inicio_cobertura'],
            (int)$this->_requestParams['id_cultura'],
        )->toArray();

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

    public function init()
    {
        $this->view->title = "Produto » Validações » Início de Cobertura";
    }

    public function salvarmunicipiosAction()
    {
        $this->isAjax();

        $adapter = Agro_Db_Table_Abstract::getDefaultAdapter();
        $this->_return['mensagem'] = 'Manutenção concluída com sucesso.';

        try {
            $adapter->beginTransaction();

            if (!(new Produto_Model_ValidacoesInicioCoberturaMunicipios())->salvarMunicipios($this->_requestParams)) {
                throw new Exception('Erro ao salvar os municípios.');
            }

            $adapter->commit();
        } catch (Exception $erro) {
            $adapter->rollBack();

            $this->_return['erro'] = true;
            $this->_return['mensagem'] = $erro->getMessage();
        }

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