<?php

class Seguro_ConsultarzoneamentoController extends Agro_Controller_Action
{
    public function init()
    {
        $this->view->title = 'Seguro » Consultar Zoneamento';
    }

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

    public function produtotemzoneamentoregiaoAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $modelProdutosAtributos = new Produto_Model_ProdutosAtributos();
        $atributos = $modelProdutosAtributos->getAtributosFromProduto($this->getRequest()->getParam('idProduto'));
        $temZoneamentoRegiao = false;

        if (isset($atributos[143]) && (int)$atributos[143] === 1) {
            $temZoneamentoRegiao = true;
        }

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

    public function getcicloconsultazoneamentoAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $parametros = $this->getRequest()->getParams();
        $ciclos = $this->getCiclos($parametros);

        if (empty($ciclos)) {
            $retorno = "Data de plantio está em desacordo com o Zoneamento Agrícola";
            $this->getResponse()->setBody(Zend_Json::encode($retorno));

            return false;
        }

        $cicloRetorno = $this->getVariedade($parametros, $ciclos);

        if (empty($cicloRetorno)) {
            $retorno = "Variedade está em desacordo com o Zoneamento Agrícola";
            $this->getResponse()->setBody(Zend_Json::encode($retorno));

            return false;
        }

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

        return true;
    }

    private function getCiclos(array $parametros) : array
    {
        $modelCiclos = new Produto_Model_Ciclos();

        return $modelCiclos->getCicloConsultaZoneamento(
          $parametros['idProduto'],
          $parametros['idMunicipio'],
          $parametros['idTipoSolo'],
          $parametros['dataSemeadura']
        );
    }

    private function getVariedade(array $parametros, array $ciclos) : array
    {
        $modelVariedadesCiclos = new Produto_Model_VariedadesCiclos();
        $cicloRetorno = [];

        foreach ($ciclos as $ciclo) {
            $variedade = $modelVariedadesCiclos->getVariedadeCicloProdutoEstado(
              $parametros['idProduto'],
              $parametros['idVariedade'],
              $ciclo['id'],
              $parametros['idUf'],
              (int) $parametros['idRegiao']
            );

            if (!empty($variedade)) {
                $cicloRetorno = $ciclo;
                break;
            }
        }

        return $cicloRetorno;
    }

    public function getregiaoprodutoAction()
    {
        $this->getHelper('ViewRenderer')->setNoRender();
        $this->getHelper('layout')->disableLayout();

        $parametros = $this->getRequest()->getParams();
        $modelCiclos = new Produto_Model_Produtos();
        $regiao = $modelCiclos->getRegiaoProduto($parametros['idProduto'], $parametros['idMunicipio']);

        if (empty($regiao)) {
            $retorno = "Região de zoneamento não informada para o Município da propriedade.";
            $this->getResponse()->setBody(Zend_Json::encode($retorno));

            return false;
        }

        $regiao = (object) array_shift($regiao);

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

        return true;
    }
}
