<?php

class Agro_View_Helper_UnidadesViewPrevia extends Zend_Controller_Action_Helper_Abstract {
	private $_proposta = null;
	private $_print = false;
	private $_linhas = 54;
	private $user = null;
	private $adjacentTablesData;

	private function buildAdjacentTablesData()
	{
		if (!empty($this->adjacentTablesData)) {
			return;
		}

		$this->adjacentTablesData['IS_TIPO_SOLO'] = (new Produto_Model_Tiposolo())->getCombo(true, 'ds_tipo_solo');
	}

	public function unidadesViewPrevia($Proposta, $print=false, $context = array(), $id_proposta_vistoria) {
		$this->user = Zend_Auth::getInstance()->getIdentity();
		$this->_proposta = $Proposta;
		$this->_print = $print;

		$this->buildAdjacentTablesData();
	
		$coberturas = $this->_proposta->coberturas_contratadas('adicional');
		$atributos = $this->_proposta->atributos_rn('UNIDADE_SEGURADA');
		$unidades = $this->_proposta->itens_segurados();
		$produto = $this->_proposta->produto();

		if ($this->_print) {
			// Calcula os totais
			$totalCoberturas = count($coberturas) > 0 ? count($coberturas) : 1;
			$totalUnidades = count($unidades);
			$totalLinhas = ($totalCoberturas*$totalUnidades);

			$totalPaginas = ceil($totalLinhas / $this->_linhas);
			$paginas = $this->_separa_unidades($totalPaginas, $unidades, count($coberturas), true);
		} else {
			$this->_linhas = count($unidades) * ($totalCoberturas);
			$totalPaginas = 1;
			$paginas = $this->_separa_unidades($totalPaginas, $unidades, count($coberturas), false);
		}

		if (is_array($paginas)) {

			foreach ($paginas as $pagina => $unidades) {
			    $this->_cabecalho($totalPaginas, $pagina, $produto, $context, $id_proposta_vistoria);

				$this->_open();
				
				$this->_header($atributos, $context);
				
				if (count($unidades)) {
					$this->_body($unidades, $atributos, $coberturas, $produto, $context);
				}

				$this->_close();
			}
		}
	
	}

	private function _separa_unidades($total, $unidades, $coberturas, $quebra=true) {
		 $return = array();

		 $pagina = 1;
		 $count  = 1;

		 for($i=0; $i<count($unidades); $i++){
		     if(is_array($unidades[$i])){
    		 	 $return[$pagina][] = $unidades[$i];
    		     $count++;

    		     if(($count * $coberturas > $this->_linhas) && $quebra){
    		         $pagina++;
    		         $count = 1;
    		     }
		     }
		 }
		 return $return;
	}

	private function _open() {
		?>
		<table width="100%" cellpadding="0" cellspacing="1" class="gadget <?=($this->_print ? 'no-view' : 'no-print')?>">
		<thead><tr><th>Anexos 1 - Descrição do Risco</th></tr></thead>
		<tbody>
		<tr><td><table width="100%" cellpadding="1" cellspacing="0" class="gadget">
		<?
	}

	private function _header($atributos, $context) {
	    $questionarios = $this->_proposta->respostas();
		?>
		<thead>
			<tr>
				<th>Item</th>
				<? foreach ($atributos as $atributo): ?>
					<?
					if ($questionarios['QUEST_PRODUTIVIDADE_DECLARADA'] == 1 || $questionarios['QUEST_PRODUTIVIDADE_DECLARADA'] == 2) {
						if ($atributo['ds_chave_rn'] == 'IS_PRODUCAO_PLANTA' or $atributo['ds_chave_rn'] == 'IS_NRO_PLANTAS') {
							continue;
						}
					}

					if($atributo['ds_chave_rn'] == 'IS_PRODUCAO_GARANTIDA' || $atributo['ds_chave_rn'] == 'IS_VALOR_TONELADA' || $atributo['ds_chave_rn'] == 'IS_LMGA_PARCIAL' || $atributo['ds_chave_rn'] == 'IS_PREMIO_PARCIAL'){
						continue;
					}



					if ($atributo['ds_chave_rn'] == 'IS_COORDENADAS_GEOGRAFICAS' || $atributo['ds_chave_rn'] == 'IS_LOCAL') {
						continue;
					}

					if (
						$atributo['ds_chave_rn'] == 'IS_TIPO_SOLO'
						|| $atributo['ds_chave_rn'] == 'IS_TIPO_SOLO_AD'
					) {
						continue;
					}

					if ($atributo['ds_chave_rn'] == 'IS_PREMIO_PARCIAL' && Zend_Auth::getInstance()->getIdentity()->tp_usuario == 'V') {
						break;
					}

					?>
					<th align="center"><?=$atributo['ds_descricao_atributo']?></th>
				<? endforeach; ?>

				<? if($context['visualizacao'] == 'avisosinistro'): ?>
					<th align="center">Encerramento de Colheita</th>
				<? endif; ?>
			</tr>
		</thead>
		<?
	}

	private function _body($unidades, $atributos, $coberturas, $produto, $context) {
		$principal = $this->_proposta->coberturas_contratadas('principal');
		$propriedade = $this->_proposta->propriedade();
		$questionarios = $this->_proposta->respostas();

		$Validacoes = new Produto_Model_Validacoes();
		$arValidacoes = $Validacoes->getValidacaoProduto($this->_proposta->id_produto);

		$flValidaZoneamento = false;
		foreach ($arValidacoes as $VerificaValidacao) {
		    if ($VerificaValidacao->ds_chave == 'VALIDACAO_ZONEAMENTO') {
		        $flValidaZoneamento = true;
		    }
		}

		?><tbody><?
			if (is_array($unidades)) {
				foreach ($unidades as $unidade) {
					$background2 = '';
					$background = '';

					if ($flValidaZoneamento == true && $unidade['is_produtividade'] > 0 && $unidade['is_ciclo_variedade'] && $this->user->tp_usuario == 'F') {
						$rsZoneamento = $Validacoes->verificaZoneamento(
								($questionarios['QUEST_TIPO_SOLO'] ? $questionarios['QUEST_TIPO_SOLO'] : $unidade['IS_TIPO_SOLO']),
								$this->_proposta->id_produto,
								$unidade['is_ciclo_variedade'],
								$propriedade['id_municipio'],
								$unidade['is_data_semeadura'],
								$unidade['is_altitude'],
								$unidade['is_id_sistema_plantio']
								);
						
						if ($rsZoneamento['status'] == false) {
							$background = '#FFBBBC';
							$background2 = '#FFDDDE';
						}
					}

					?><tr><?
						?><td style="background:<?=$background?>"align="center"><?=$unidade['is_item'];?></td><?

						foreach ($atributos as $atributo) {
							if ($questionarios['QUEST_PRODUTIVIDADE_DECLARADA'] == 1 || $questionarios['QUEST_PRODUTIVIDADE_DECLARADA'] == 2) {
								if ($atributo['ds_chave_rn'] == 'IS_PRODUCAO_PLANTA' or $atributo['ds_chave_rn'] == 'IS_NRO_PLANTAS') {
									continue;
								}
							}

							if ($atributo['ds_chave_rn'] == 'IS_COORDENADAS_GEOGRAFICAS' || $atributo['ds_chave_rn'] == 'IS_LOCAL') {
								continue;
							}

							if ($atributo['ds_chave_rn'] == 'IS_PRODUCAO_GARANTIDA') {
								continue;
								$vl_lmga_parcial = Agro_Util::formatCurrencyDb($unidade['is_lmga_parcial']);
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency($unidade['is_producao_garantida'],3);
							}

							if ($atributo['ds_chave_rn'] == 'IS_PRODUTIVIDADE') {
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency($unidade['is_produtividade'],3);
							}

							if ($atributo['ds_chave_rn'] == 'IS_AREA') {
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency($unidade['is_area']);
							}

							if ($atributo['ds_chave_rn'] == 'IS_VALOR_TONELADA') {
								continue;
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency($unidade['is_valor_tonelada']);
							}

							if ($atributo['ds_chave_rn'] == 'IS_PREMIO_PARCIAL' /* && Zend_Auth::getInstance()->getIdentity()->tp_usuario != 'V' */) {
								continue;
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency(($vl_lmga_parcial * $principal['vl_taxa'])/100);
							}
							$vl_lmga_parcial = Agro_Util::formatCurrencyDb($unidade['is_lmga_parcial']);

							if ($atributo['ds_chave_rn'] == 'IS_FRANQUIA_PARCIAL') {
								$vl_lmga_parcial = Agro_Util::formatCurrencyDb($unidade['is_lmga_parcial']);
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency(($vl_lmga_parcial * $principal['vl_franquia']/100));
							}

							if ($atributo['ds_chave_rn'] == 'IS_LMGA_PARCIAL') {
								continue;
								$unidade[strtolower($atributo['ds_chave_rn'])] = Agro_Util::formatDbCurrency($unidade['is_lmga_parcial']);
							}

							if ($atributo['ds_chave_rn'] == 'IS_ESPACAMENTO_SIMPLES') {
								$unidade['is_espacamento_simples'] = str_replace('x', '', $unidade['is_espacamento_simples']);
							}

							if ($atributo['ds_chave_rn'] == 'IS_ESPACAMENTO_COMPOSTO') {
								$unidade['is_espacamento_composto'] = $unidade['is_espacamento_simples'];
							}

							if ($atributo['ds_chave_rn'] == 'IS_PRIMEIRO_ANO_PLANTIO') {
								$unidade['is_primeiro_ano_plantio'] = ($unidade['is_primeiro_ano_plantio'] == '1' ? 'Sim' : 'Não');
							}
							
							if ($atributo['ds_chave_rn'] == 'IS_VARIEDADES') {
								$unidade['is_variedades'] = $unidade['is_nome_variedades'];
							}

							if ($atributo['ds_chave_rn'] == 'IS_PORTAENXERTO') {
								$unidade['is_portaenxerto'] = $unidade['is_nome_portaenxerto'];
							}

							if (
								$atributo['ds_chave_rn'] == 'IS_TIPO_SOLO'
								|| $atributo['ds_chave_rn'] == 'IS_TIPO_SOLO_AD'
							) {
								continue;
							}

							$valor = !array_key_exists($atributo['ds_chave_rn'], $this->adjacentTablesData)
								? $unidade[strtolower($atributo['ds_chave_rn'])]
								: $this->adjacentTablesData[$atributo['ds_chave_rn']][$unidade[strtolower($atributo['ds_chave_rn'])]];

							?><td align="center" nowrap="nowrap" style="background:<?=$background?>"><?
								 echo $valor;
							?></td><?
						}
					?>
					<?if($context['visualizacao'] == 'avisosinistro'):?>
						<td align="center">
							<?=$unidade['ds_possui_encerramento_colheita']?>
						</td>
					<?endif?>
					</tr>

					<? if($unidade['is_coordenadas_geograficas']): ?>
						<tr>
							<td bgcolor="#FFFFFF" colspan="100" style="background:<?=$background2?>">
								[<b>Coordenadas Geográficas:</b> <?=$unidade['is_coordenadas_geograficas']?>]
                				<? if ($unidade['is_coordenadas_geograficas']){
                					$stCoordenada = str_replace(" ,", "", $unidade['is_coordenadas_geograficas']);
                					$stCoordenada = str_replace(",", "", $stCoordenada);
                					$stCoordenada = str_replace("-", "", $stCoordenada);
                					$arCoordenada = explode(" ",$stCoordenada);
                				} ?>
								<b>Solo: </b>
								<?php echo $this->adjacentTablesData['IS_TIPO_SOLO'][$unidade['is_tipo_solo']] ?>
								<br />
							</td>
						</tr>
					<? endif;

					if ($coberturas) {
						?><tr><?
							?><td bgcolor="#FFFFFF" colspan="100" style="background:<?=$background2?>"><?
							    if ($atributo['ds_chave_rn'] == 'IS_COORDENADAS_GEOGRAFICAS'){
							        //echo "teste";
							    }
								foreach ($coberturas as $cobertura) {
									if (!$cobertura['fl_contratacao_automatica']) {
										if ($cobertura['ds_chave_cobertura'] == 'COB_PROTECAO_FITO') {
										    $vl_area_parcial = Agro_Util::formatCurrencyDb($unidade['is_area']);
										    $vl_lmi_parcial = ($vl_lmga_parcial > 0) ? Agro_Util::formatDbCurrency($vl_area_parcial * 100) : '0,00';
											if(Zend_Auth::getInstance()->getIdentity()->tp_usuario == 'F'){
											    ?>[<b><?=$cobertura['ds_nome_cobertura']?>:</b> Prêmio Parcial <?=Agro_Util::formatDbCurrency(($vl_lmga_parcial * $cobertura['vl_taxa'])/100)?> - LMI Parcial <?=$vl_lmi_parcial;?>]<br /><?
											}else{
												?>[<b><?=$cobertura['ds_nome_cobertura']?>:</b> LMI Parcial <?=$vl_lmi_parcial?>]<br /><?
											}
										} else {
											if(Zend_Auth::getInstance()->getIdentity()->tp_usuario == 'F'){
												?>[<b><?=$cobertura['ds_nome_cobertura']?>:</b> Prêmio Parcial <?=Agro_Util::formatDbCurrency(($vl_lmga_parcial * $cobertura['vl_taxa'])/100)?> - LMI Parcial <?=Agro_Util::formatDbCurrency(($vl_lmga_parcial * $cobertura['vl_lmi'])/100)?> <? if($cobertura['ds_chave_cobertura'] == 'COB_PRODUCAO_MINIMA_MACA') { echo "- Nº de frutos garantidos por planta: ".$unidade['is_producao_minima']; }?>]<br /><?
											}else{
												?>[<b><?=$cobertura['ds_nome_cobertura']?>:</b> LMI Parcial <?=Agro_Util::formatDbCurrency(($vl_lmga_parcial * $cobertura['vl_lmi'])/100)?> <? if($cobertura['ds_chave_cobertura'] == 'COB_PRODUCAO_MINIMA_MACA') { echo "- Nº de frutos garantidos por planta: ".$unidade['is_producao_minima']; }?>]<br /><?
											}
										}
									}
								}
							?></td><?
						?></tr><?
					}
				}
				?><tr><td colspan="100">Área total (ha): <b><?=Agro_Util::formatDbCurrency($this->_proposta->area(),2);?></b></td></tr><?
			}
		?></tbody><?
	}

	private function _close() {
		?></table></td></tr></tbody></table><?
	}

	private function _cabecalho($totalPaginas, $paginaCorrente, $produto, $context=false, $id_proposta_vistoria) {
	   
	    if ($this->_print && $context['visualizacao'] != 'avisosinistro') {
	        $proposta = $this->_proposta;
	        $cobertura = $this->_proposta->coberturas('principal');
	        $class = ($this->_quebra ? 'no-view' : '');
	        $status = $this->_proposta->status(true);
	        $produto = $this->_proposta->produto();
	        
	        $VistoriaPrevia= new Seguro_Model_VistoriaPrevia();
	        $ds_empresa_previa = $VistoriaPrevia->getEmpresaByVistoria($id_proposta_vistoria);
	        
	        
	        $ModelVistoria = new Sistema_Model_Vistorias();
	        ?>
        
			<table width="100%" border="0" cellpadding="1" cellspacing="0" class="no-view" style="page-break-before:always;">
			<tr>
				<td width=10% align="center" rowspan="2" height="79"><img src="/resources/imagens/essor.png" width=139 height=60 /></td>
                <td width=60%  height=45 valign="top" colspan=2>
					<? if (($status['ds_chave'] == 'NAO_ENVIADA') or ($status['ds_chave'] == 'DEVOLVIDA')): ?>
						<b>Orçamento de Seguro</b>
					<? else: ?>
					    <? if (!$proposta->id_proposta_endossada): ?>
						   <br><font style="font-size: 14px; font-weight: bold;">Ordem de Serviço: Solicitação de Vistoria Prévia</font>
                        <? endif; ?>
    				    <? if ($proposta->id_proposta_endossada): ?>
                            <br><font style="font-size:110%">Endosso</font>
                        <? else: ?>
                            <br><font style="font-size:110%">Encaminhada em: <?=$ModelVistoria->getDtEncaminhamentoByProposta($proposta->id, $id_proposta_vistoria);?> </font>
                        <? endif; ?>                        
						<br><font style="font-size:110%">Empresa vistoriadora: <?=$ds_empresa_previa;?></font>
					<? endif; ?>
					<br /><span class="produto text_bold" style="font-size: 14px; font-weight: bold;">Produto: <?=$produto['ds_nome_produto']?></span>
				</td>
			</tr>

			<tr>
			    <td width=50% valign="top">
					<table width="100%" cellpadding="0" cellspacing="0" border="0">
					<tr>
						<td class="text_bold" colspan="3">
							<font style="font-size:110%">Cobertura Principal: <?=($produto['id'] == 734) ? 'Multirisco II' : $cobertura['ds_nome_cobertura']?></font>
						</td>
					</tr>	
					<tr>
						<td class="text_bold"><font style="font-size:110%">Seguradora: <?=$produto['ds_razao_social']?></font></td>
					</tr>
					<tr>
						<td class="text">Processo SUSEP: <?=$produto['nr_susep']?></td>
					</tr>
					<tr>
						<? if (($status['ds_chave'] == 'NAO_ENVIADA') or ($status['ds_chave'] == 'DEVOLVIDA')): ?>
							<td class="text_bold">Orçamento: <?=$this->_proposta->doc();?></td>
						<? else: ?>
							<td class="text_bold">Proposta: <?=$this->_proposta->doc();?> <?=($proposta['id_proposta_renovada'] ? ' <b>(Renovação)</b>' : '')?> </td>
						<? endif; ?>
					</tr>
					<? if ($proposta['nr_apolice']): ?>
						<tr>
							<td class="text_bold">Apólice: <?=$proposta['nr_apolice']?></td>
						</tr>
					<? endif; ?>
					<? if ($this->_proposta->versao_endosso(false) > 0): ?>
						<tr>
							<td class="text_bold">
								Status: <?=$status['ds_status']?>
							</td>
						</tr>
					<? endif; ?>
					</table>
			    </td>
			    <td width=40% valign="bottom">
					<table width=100%>
					    <tr>
							<td width="100%" valign="top">
								<? if (($status['ds_chave'] == 'NAO_ENVIADA') or ($status['ds_chave'] == 'DEVOLVIDA')): ?>
									<table width="100%" cellpadding="1" cellspacing="0" border="0">
										<tr>
											<td class="text_uppercase" colspan="2">Orçamento sem cobertura</td>
										</tr>
										<tr>
											<td class="text_bold" colspan="2">Data Orçamento: <?=Agro_Util::formatDate($proposta['dt_alteracao'], Zend_Date::DATES);?></td>
										</tr>
										<tr>
											<td class="text_bold">Safra: <?=$produto['ds_nome_safra']?></td>
										</tr>
									</table>
								<? else: ?>
									<table width="100%" cellpadding="1" cellspacing="0" border="0" valign="top">
										<tr>
											<td class="text_bold"><?=(strtotime($proposta['dt_vigencia_inicio']) > strtotime('2015-02-04') ? 'Vigência do Contrato de Seguro' : 'Vigência')?></td>
										</tr>
										<tr>
											<td class="text">Das 24 horas do dia <?=Agro_Util::formatDate($proposta['dt_vigencia_inicio'], Zend_Date::DATES);?></td>
										</tr>
										<tr>
											<td class="text_underline">Até as 24 horas do dia <?=Agro_Util::formatDate($proposta['dt_vigencia_fim'], Zend_Date::DATES);?></td>
											<td align="left" class="text_underline"><font class="no-view"></font></td>
										</tr>
										<tr>
											<td class="text_bold">
												<!--  Data do Sistema: <?=date('d/m/Y h:i:s')?> -->
												Safra: <?=$produto['ds_nome_safra']?>
											</td>
										</tr>
							
										<? if ($status['ds_chave'] == 'PROPOSTA_CANCELADA' || $status['ds_chave'] == 'APOLICE_CANCELADA'): ?>
											<tr>
												<td class="text_bold" style="color:#<?=$status['ds_cor']?>" colspan="2">
												Status da Proposta: <?=strtoupper(strtr($status['ds_status'],"áéíóúâêôãõàèìòùç","ÁÉÍÓÚÂÊÔÃÕÀÈÌÒÙÇ"))?>
												</td>
											</tr>
										<? endif; ?>
									</table>
								<? endif; ?>
								<br> 
							</td>
					    </tr>
					</table>
			    </td>
			</tr>
		</table>			
		<?
		}
	}
	
}
