<?php

class Zend_View_Helper_MontaUnidadesProposta extends Zend_View_Helper_Abstract {
	
	public function montaUnidadesProposta($atributos, $respostas=false, $checkboxes=0, $disabled=0) {
		$Session = new Zend_Session_Namespace('carrega_proposta');
		$Proposta = new Zend_Session_Namespace('proposta');
		
		$Currency = new Zend_Currency();
		$Currency->setFormat(array('display' => Zend_Currency::NO_SYMBOL));
		
		if ($Session->premio['propriedades']['PROD_PRODUCAO_GARANTIDA']['ds_valor']) {
			$Model = new Comercializacao_Model_TaxasAgrupamentoMunicipios();
			$produtividadeEstimada = $Model->getProdutividadeEstimada($Session->premio['agrupamento'], $Proposta->segurado['id_municipio_propriedade']);
		}
		$aumentar = false;
		if (is_array($respostas)):
			foreach ($respostas as $nro => $resposta):
				if($nro == 0) {
					$aumentar = true;
				}
				if($aumentar) {
					$nro++;
				}
				if ($resposta['IS_LMGA_PARCIAL']) {
					$resposta['IS_LMGA_PARCIAL'] = $this->view->currency($resposta['IS_LMGA_PARCIAL']);
				}
				?>
				<tr id="tr_unidade_<?=$nro?>">
					<?php if($checkboxes): ?>
					<td align="center">
						<input type="checkbox" name='ckeck_unidade_<?=$nro?>' id="ckeck_unidade_<?=$nro?>" class="checkbox_unidade" value="<?=$nro?>" />
					</td>
					<?php endif;?>
					<td align="center"><?=$nro?></td>
					<? foreach ($atributos as $atributo): ?>
						<td align="center">
							<?
							if ($atributo['ds_chave_rn'] == 'IS_PRODUCAO_GARANTIDA') {
								$resposta[$atributo['ds_chave_rn']] = $produtividadeEstimada;
							}
							
							?>
							<?=$this->getElement($atributo, $resposta, $nro,$disabled);?>
						</td>
					<? endforeach; ?>
				</tr>
				<?
			endforeach;
		else:
			?>
			<tr id="tr_unidade_{0}">
				<?php if($checkboxes): ?>
				<td align="center">
					<input type="hidden" name="unidade[{0}][ID]" value="" />
					<input type="checkbox" id="ckeck_unidade_{0}" class="checkbox_unidade" value="{0}" />
				</td>
				<?php endif;?>
				<td align="center">{0}</td>
				
				
				<? foreach ($atributos as $atributo): ?>
					<?
					$resposta = false;
					if ($atributo['ds_chave_rn'] == 'IS_PRODUCAO_GARANTIDA') {
						$resposta[$atributo['ds_chave_rn']] = $produtividadeEstimada;
					}
					?>
					<td align="center"><?=$this->getElement($atributo, $resposta,$disabled);?></td>
				<? endforeach; ?>
			</tr>
			<?
		endif;
	}
	
	public function getElement($atributo, $resposta=false, $item=false, $disabled=false) {
		$Element = new Agro_Element();
		if($disabled) {
			$Element->setDisabled();
		}
		$Element->setType($atributo['ds_chave_tipo_atributo']);
		$Element->setValue($resposta[$atributo['ds_chave_rn']]);
		
		if ($atributo['fl_required']) {
			$Element->setClass($atributo['ds_chave_tipo_atributo'] . ' element_required');
		} else {
			$Element->setClass($atributo['ds_chave_tipo_atributo']);
		}
		
		if ($atributo['ds_chave_tipo_atributo'] == 'data') {
			$Element->setSize(11);
		}
		
		if ($item) {
			$name = "unidade[$item][{$atributo['ds_chave_rn']}]";
			if($disabled) {
				$name = "unidade_disabled[$item][{$atributo['ds_chave_rn']}]";
			}
			$Element->setName($name);
		} else {
			$Element->setName("unidade[{0}][{$atributo['ds_chave_rn']}]");
		}
		
		switch ($atributo['ds_chave_tipo_atributo']) {
			case 'lookup':
				$Element->setOptions($this->getOptions($atributo));
				break;
				
			default:
				$Element->setOptions($atributo['ds_valores_opcoes']);
				break;
		}
		
		return $Element->get();
	}
	
	public function getOptions($atributo) {
		$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
		
		$select = $Db->select();
		$select->distinct(true);
		$select->from("{$atributo['ds_schema']}.{$atributo['ds_table']}", array($atributo['ds_option_value'], $atributo['ds_option_text']));
		$select->order($atributo['ds_option_text']);
		
		
		if ($atributo['ds_option_filter']) {
			$session = new Zend_Session_Namespace($atributo['ds_option_filter']);
			$select->where("{$atributo['ds_option_filter']} = ?", $session->value);
		}
		
		$Rs = $Db->fetchAll($select);
		
		if ($Rs) {
			$options = array();
			foreach ($Rs as $Row) {
				$options[$Row[$atributo['ds_option_value']]] = $Row[$atributo['ds_option_text']];
			}
		}
		
		return $options;
	}
}