<?php

class Produto_Form_ProdutoCobertura extends Agro_Form {

	public function init() {
		$Coberturas = new Produto_Model_Coberturas();


		$ids = explode(',',$this->_request['id']);
		
		$idProduto = $ids[0] ?? null;

		if (!empty($idProduto)) {
			$idProduto = $ids[0];
		}

		$produto = (new Produto_Model_Produtos())->find($idProduto)->current();

		$labelFraseOutrosRiscosExcluidos = 'Outros Riscos Excluídos e/ou Perdas Não Cobertas';
		$labelFraseCondicoesParticulares = 'Condições Particulares';

		if ($produto['id_safra'] > Produto_Model_Safras::SAFRA_2025_2026) {
			$labelFraseOutrosRiscosExcluidos = 'Riscos Excluídos, Perdas não cobertas e restrições que serão impressas na Proposta';
			$labelFraseCondicoesParticulares = 'Riscos Excluídos, Perdas não cobertas e restrições que serão impressas na Apólice';
		}

		$this->addElement('select', 'id_cobertura', array(
			'MultiOptions' => $Coberturas->fetchPairs('id', 'ds_nome_cobertura'),
			'decorators' => $this->elementDecorator,
			'label' => 'Cobertura',
			'required' => true
		));

		$this->addElement('checkbox', 'fl_cobertura_dependente', array(
			'decorators' => $this->elementDecorator,
			'style' => 'margin:3px -7px 0px 6px;'
		));

		$this->addElement('select', 'fl_ativo', array(
			'MultiOptions' => array(0 => 'Não', 1 => 'Sim'),
			'decorators' => $this->elementDecorator,
			'label' => 'Habilitado'
		));

		$this->addElement('select', 'id_cobertura_dependencia', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Cobertura dependente',
			'disable' => true
		));

		$this->addElement('text', 'vl_lmi', array (
			'decorators' => $this->elementDecorator,
			'label' => 'Valor LMI',
			'class' => 'decimal',
		));

		$this->addElement('text', 'cd_cobertura_seguradora', array (
			'decorators' => $this->elementDecorator,
			'class' => 'integer',
			'label' => 'Cod. Cobertura Seguradora',
		));

		
		//$this->setRegisterInArrayValidator(false);
		$CondicoesEspeciais = new Produto_Model_CondicoesEspeciais();
		$this->addElement('multiselect', 'id_condicao_especial', array(
			'MultiOptions' => $CondicoesEspeciais->getCondicoes(),
			'decorators' => $this->elementDecorator,
			'label' => 'Condição Especial',
			'required' => true
		));
		//$this->getElement('id_condicao_especial')->setRegisterInArrayValidator(false);

		$this->addElement('checkbox', 'fl_cobertura_principal', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Principal'
		));

		$this->addElement('checkbox', 'fl_taxa_relacionada', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Taxa Relacionada'
		));

		$this->addElement('checkbox', 'fl_validar_capacidade', array(
				'decorators' => $this->elementDecorator,
				'label' => 'Validar Capacidade'
		));

		$this->addElement('checkbox', 'fl_exibir_regulacao_perdas', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Exibir para possibilitar liquidação manual'
		));

		$this->addElement('checkbox', 'fl_contratacao_automatica', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Contratação Automática'
		));

		$this->addElement('checkbox', 'fl_somente_renovacoes', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Somente Renovação'
		));

		$this->addElement('checkbox', 'fl_vistoria_previa', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Vistoria Prévia'
		));

		$this->addElement('checkbox', 'fl_vistoria_final', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Vistoria Final'
		));

		$this->addElement('checkbox', 'fl_vistoria_preliminar', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Vistoria Preliminar'
		));

		$this->addElement('checkbox', 'fl_exibir_franquia', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Exibir Franquia'
		));

		$this->addElement('checkbox', 'fl_transmitir_tagh', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Transmitir para Tagh'
		));

		$this->addElement('checkbox', 'fl_assinatura_segurado', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Assinatura Segurado'
		));

		$this->addElement('textarea', 'ds_frase_outros_riscos_excluidos', array(
			'decorators' => $this->elementDecorator,
			'label' => $labelFraseOutrosRiscosExcluidos,
			'cols' => 108,
			'rows' => 5
		));

		$this->addElement('textarea', 'ds_frase_condicoes_particulares', array(
			'decorators' => $this->elementDecorator,
			'label' => $labelFraseCondicoesParticulares,
			'cols' => 108,
			'rows' => 5
		));
/*
		$TipoLaudoPreliminar = new Sinistro2_Model_TipoLaudoPreliminar();
		$this->addElement('select', 'id_tipo_laudo_preliminar', array(
			'MultiOptions' => $TipoLaudoPreliminar->fetchPairs('id', 'ds_chave'),
			'decorators' => $this->elementDecorator,
			'label' => 'Tipo laudo preliminar'
		));*/
		
		
		if($this->_request['action'] == 'form'){
			$TipoLaudoPreliminar = new Sinistro2_Model_TipoLaudoPreliminar();
			$this->addElement('select', 'id_tipo_laudo_preliminar', array(
				'MultiOptions' => $TipoLaudoPreliminar->getComboTipoLaudoPreliminar(true,$this->_request['id']),
				'decorators' => $this->elementDecorator,
				'label' => 'Tipo laudo preliminar'
			));			
		}			

		/*
			$TipoLaudoFinal = new Sinistro2_Model_TipoLaudoFinal();
			$this->addElement('select', 'id_tipo_laudo_final', array(
				'MultiOptions' => $TipoLaudoFinal->fetchPairs('id', 'ds_chave'),
				'decorators' => $this->elementDecorator,
				'label' => 'Tipo laudo final'
			));			  
		 * 
		*/
		
		if($this->_request['action'] == 'form'){
			$TipoLaudoFinal = new Sinistro2_Model_TipoLaudoFinal();
			$this->addElement('select', 'id_tipo_laudo_final', array(
				'MultiOptions' => $TipoLaudoFinal->getComboTipoLaudoFinal(true,$this->_request['id']),
				'decorators' => $this->elementDecorator,
				'label' => 'Tipo laudo final'
			));			
		}	


		$TipoLiquidacao = new Sinistro2_Model_TipoLiquidacao();
		$this->addElement('select', 'id_tipo_liquidacao', array(
			'MultiOptions' => $TipoLiquidacao->getCombo(),
			'decorators' => $this->elementDecorator,
			'label' => 'Tipo Liquidação'
		));

		$this->addElement('textarea', 'ds_observacao', array(
			'decorators' => $this->elementDecorator,
			'required' => false,
			'style' => 'width:100%;height:110px;'
		));

		$this->addElement('textarea', 'ds_observacao_interna', array(
			'decorators' => $this->elementDecorator,
			'required' => false,
			'style' => 'width:100%;height:110px;'
		));
		
		$datasCorte = (new Produto_Model_ConfiguracaoDataCorte())->getCombo();

		$this->addElement('select', 'id_configuracao_data_corte', array(
			'MultiOptions' => $datasCorte,
			'decorators' => $this->elementDecorator,
			'label' => 'Data de Corte',
			'value' => count($datasCorte),
			'required' => true
		));
	}

	public function populate(array $values) {
		if (
			!empty($values['id_produto'])
			&& !empty($values['id_cobertura'])
		) {
			$produtoCoberturaConfig = (new Produto_Model_ProdutoCoberturaConfig())->getConfiguracaoMaisRecente(
				$values['id_produto'],
				$values['id_cobertura']
			);
		
			$values['ds_frase_outros_riscos_excluidos'] = $produtoCoberturaConfig['ds_frase_outros_riscos_excluidos'];
			$values['ds_frase_condicoes_particulares'] = $produtoCoberturaConfig['ds_frase_condicoes_particulares'];
		}
		
		parent::populate($values);
				
		if(!$values[id_produto]){
		    $arProdutoCobertura = explode(",", $values['id']);
		    $idProduto = $arProdutoCobertura[0];
		    $idCobertura = $arProdutoCobertura[1];
		} else {
		    $idProduto = $values[id_produto];
		    $idCobertura = $values[id_cobertura];
		}
		
		if ($idProduto) {
			$ProdutoCobertura = new Produto_Model_ProdutosCoberturas();
			$Combo = $ProdutoCobertura->getCoberturasDependentes($idProduto);
			$this->id_cobertura_dependencia->addMultiOptions($Combo);
		}

		if (!$values['cd_cobertura_seguradora']) {
			$Cobertura = new Produto_Model_Coberturas();
			$Row = $Cobertura->fetchRow('id = '.$idCobertura);
			$this->cd_cobertura_seguradora->setValue($Row->cd_cobertura_seguradora); 			
		}
		
		$ModelProdutosCobCondicoesEspeciais = new Produto_Model_ProdutosCoberturasCondicoesEspeciais();
		$ComboCondicoes = $ModelProdutosCobCondicoesEspeciais->getCondicoesEspeciais($idProduto, $idCobertura);
		$this->id_condicao_especial->setValue($ComboCondicoes);
	}
}