<?php

class Endosso_View_Helper_Questionario extends Zend_View_Helper_Abstract
{
    private $_questions = false;
    private $_answers = false;
    private $perguntasIgnorar = [];
    private $preposto;
    private $propriedades;

    public function questionario($questoes, $respostas, array $perguntasIgnorar = [], $preposto, $propriedades): void
    {
        $this->_questions = $questoes;
        $this->_answers = $respostas;
        $this->perguntasIgnorar = $perguntasIgnorar;
        $this->preposto = $preposto;
        $this->propriedades = $propriedades;

        $this->questoes();
        $this->js();
    }

    private function questoes()
    {
        $i = 1;
        if (count($this->_questions)) {
            foreach ($this->_questions as $questao) {
                $validaDeclaracaoPreposto = $questao['ds_chave_rn'] == 'QUEST_DECLARACAO_SUBLOGIN' && is_null($this->preposto) && isset($this->preposto);
                $validaDeclaracaoPreposto = $validaDeclaracaoPreposto || ($questao['ds_chave_rn'] == 'QUEST_DECLARACAO_SUBLOGIN' && (!$this->preposto['ds_vinculo_declaraco'] || !$this->preposto['id_prepostos_frase_declaracao']));
                $validaDeclaracaoPreposto = $validaDeclaracaoPreposto || ($questao['ds_chave_rn'] == 'QUEST_DECLARACAO_SUBLOGIN' && (!$this->propriedades['PROD_DECLARACAO_SUBLOGIN']));

                if (in_array($questao['ds_chave_rn'], $this->perguntasIgnorar) || $validaDeclaracaoPreposto) {
                    continue;
                }
                
                echo "<fieldset class='q-{$questao['ds_chave_rn']}'>";
                echo "<legend>$i) {$questao['ds_descricao_atributo']}</legend>";

                echo Agro_Util::montaElemento($questao, $this->_answers[$questao['ds_chave_rn']]);

                if (count($questao['chields'])) {
                    $this->filhos($questao['chields'], $questao);
                }
                echo "</fieldset>";
                $i++;
            }
        }
    }

    private function filhos($questoes, $pai)
    {
        $i = 1;
        if (count($questoes)) {
            foreach ($questoes as $questao) {
                if ($this->_answers[$pai['ds_chave_rn']] == $questao['ds_parent_value']) {
                    $display = 'show';
                } else {
                    $display = 'hide';
                }

                echo "<fieldset class='q-{$questao['ds_chave_rn']} $display'>";
                echo "<legend>$i) {$questao['ds_descricao_atributo']}</legend>";

                echo Agro_Util::montaElemento($questao, $this->_answers[$questao['ds_chave_rn']]);
                echo "</fieldset>";

                $i++;
            }
        }
    }

    public function js()
    {
        ?>
      <script>
        $(document).ready(function () {
            <?
            foreach ($this->_questions as $questao) {
                echo self::evento($questao);
            }
            ?>
        });
      </script>
        <?
    }

    public function evento($questao)
    {
        ?>
      $('.<?= $questao['ds_chave_rn'] ?>').click(function () {  <?
        if (count($questao['chields'])) {
            if (is_array($questao['chields'])) {
                foreach ($questao['chields'] as $chield) {
                    echo self::clausula($chield);
                }
            }

            if (is_array($questao['chields'])) {
                foreach ($questao['chields'] as $chield) {
                    echo self::evento($chield);
                }
            }
        }
        ?>
      });
        <?
    }

    public function clausula($questao)
    {
        ?>
      $('[name="questionario\[<?= $questao['ds_chave_rn'] ?>\]"]').val('');

      if ($(this).val() == '<?= $questao['ds_parent_value'] ?>') {
      $('.q-<?= $questao['ds_chave_rn'] ?>').attr('style','display:block');
      } else {
      $('.q-<?= $questao['ds_chave_rn'] ?>').attr('style','display:none');
      }
        <?
    }
}