<?php

class Agro_View_Helper_QuestionarioView extends Zend_View_Helper_Abstract {
	private $_proposta, $_questoes, $_respostas, $_preposto, $_propriedades = null;

	public function questionarioView($Proposta, $context = '') {
		$this->_proposta = $Proposta;
		$this->_questoes = $Proposta->questionario();
		$this->_respostas = $Proposta->respostas();
		$this->_preposto = $Proposta->preposto();
		$this->_propriedades = $Proposta->atributos('PROPRIEDADE');
		$this->_sede = $Proposta->propriedade();

		$this->_montaQuestoes($this->_questoes, $context);
	}

	private function _montaQuestoes($questoes, $context = '') {
		if (is_array($questoes)) {
			?><ol><?

			$num = 1;
			$index = 1;
			foreach ($questoes as $chave => $questao) {
				
				if($context == 'previa'){ 
					// if($num == 5 || $num == 7 || $num == 9 || $num == 10){ // perguntas antigas
					/* fixado as perguntas
					 * - Há outro seguro sobre a mesma área? 
					 * - As áreas declaradas nas Unidades Seguradas da proposta representam toda a área cultivada desta cultura na propriedade?
					 *     - Proposta Complementar
					 *     - Outro
					 * - O proponente possui outra lavoura/pomar desta cultura no mesmo município?
					 */
					if ($chave == 'QUEST_OUTRO_SEGURO' || $chave == 'QUEST_AREA_DECLARADA' || $chave == 'QUEST_OUTRA_LAVOURA' || //questões
						$chave == 'QUEST_AREA_DECLARADA_PROP_COMPLEMENTAR' || $chave == 'QUEST_AREA_DECLARADA_OUTRO') { // subquestões

						$pergunta = $questao['ds_descricao_atributo'];
						$resposta = $this->_montaOpcoes($questao);

						if ($chave == 'QUEST_DECLARACAO_SUBLOGIN' && $this->_preposto) {
							$frase = $this->_preposto['ds_frase'];
							$frase = str_replace('{X}', $this->_preposto['ds_vinculo_declaraco'], $frase);
							$pergunta = $frase;
						}
						
						?><li><?
							echo $index.". ".$pergunta." <b>".$resposta."</b>";
		
							if (is_array($questao['chields']) &&
								count($questao['chields']) //&&
								// ($this->_respostas[$questao['ds_chave_rn']] == $questao['ds_validar_campo_valor']) //removido para fixar as chields
							) {
								$this->_montaQuestoes($questao['chields'], $context);
							}
						?></li><?
											
						$index++;
					}
					$num++;					
				
				}else{
					$exibeCadPro = false;
					$pergunta = $questao['ds_descricao_atributo'];
					$resposta = $this->_montaOpcoes($questao);

					if (
						$questao['ds_chave_rn'] == 'QUEST_LOCALIZACAO_TALHAO'
						&& !array_key_exists('QUEST_LOCALIZACAO_TALHAO', $this->_respostas)
					) {
						continue;
					}
					
					//valida a apresentação da questão de declaração
					//valida se foi passado parametro
					$validaDeclaracaoPreposto = $questao['ds_chave_rn'] == 'QUEST_DECLARACAO_SUBLOGIN' && is_null($this->_preposto) && isset($this->_preposto);
					//valida se foi informado a declaração no login do preposto
					$validaDeclaracaoPreposto = $validaDeclaracaoPreposto || ($questao['ds_chave_rn'] == 'QUEST_DECLARACAO_SUBLOGIN' && (!$this->_preposto['ds_vinculo_declaraco'] || !$this->_preposto['id_prepostos_frase_declaracao']));
					//valida dse foi selecionada a inclusão da declaração na configuração das propriedades
					$validaDeclaracaoPreposto = $validaDeclaracaoPreposto || ($questao['ds_chave_rn'] == 'QUEST_DECLARACAO_SUBLOGIN' && (!$this->_propriedades['PROD_DECLARACAO_SUBLOGIN']));
					//verifica se a questão cadpro está configurada para aparecer para o estado do PR (sim PR fixo porque quiseram assim, não tenho culpa)
					if (($this->_propriedades['PROD_CADPRO'] == 1) && ($this->_sede['ds_sigla'] == 'PR')) { // && ($questao['ds_chave_rn'] == 'QUEST_CADPRO_VALOR')) {
						$exibeCadPro = true;
					}
					
					if ($questao['ds_chave_rn'] == 'QUEST_CADPRO_VALOR' && !$exibeCadPro && empty($resposta)) {
						continue;
					}
					
					if ($questao['ds_chave_rn'] == 'QUEST_ZONEAMENTO_ENQUADRADO_MAPA' || $questao['ds_chave_rn'] == 'QUEST_SUBVENCAO_ESTADUAL_CONFIRMADA' || $validaDeclaracaoPreposto) {
						continue;
					}

					if ($chave == 'QUEST_DECLARACAO_SUBLOGIN' && $this->_preposto) {
                        $frase = $this->_preposto['ds_frase'];
                        $frase = str_replace('{X}', $this->_preposto['ds_vinculo_declaraco'], $frase);
                        $pergunta = $frase;
					}
						
					?><li id="li_questionario_<?=$chave?>"><?
						echo $pergunta." <b>".$resposta."</b>";
	
						if (is_array($questao['chields']) && count($questao['chields']) && ($this->_respostas[$questao['ds_chave_rn']] == $questao['ds_validar_campo_valor'])) {
							$this->_montaQuestoes($questao['chields']);
						}
					?></li><?
					$num++;
				}
			}

			?></ol><?
		}
	}

	private function _montaOpcoes($atributo) {
		$resposta = ($this->_respostas[$atributo['ds_chave_rn']] ? $this->_respostas[$atributo['ds_chave_rn']] : '0');

		switch ($atributo['ds_chave_tipo_atributo']) {
			case 'select':
			case 'lookup':
			case 'radio':
				$options = $this->_arrayOptions($atributo['ds_valores_opcoes']);
				$resposta = $options[$resposta];
				break;
		}

		return $resposta;
	}

	private function _arrayOptions($str) {
		$ret = false;

		if (strpos($str, '|')) {
			$options = explode('|', $str);

			$ret = array();
			if (is_array($options) && count($options)) {
				foreach ($options as $option) {
					$a = explode(':', $option);
					$ret[$a[0]] = $a[1];
				}
			}
		}

		return $ret;
	}

}