<?php

class Produto_Form_Produto extends Agro_Form {

	public function init() {
		
		$idProduto = $this->_request['id'] ?? null;
		
		$ProdutosGeral = new Produto_Model_ProdutosGeral();
		$Produtos = new Produto_Model_Produtos();
		$Empresa = new Sistema_Model_Empresas();
		$Safra = new Produto_Model_Safras();

		if ($idProduto) {
			$produto = $Produtos->find($idProduto)->current();
			$idSafra = $produto['id_safra'];
		} else {
			$idSafra = $Safra->getSafraAtual('id');
		}

		$labelFraseRestricoes = 'Restrições para Cobertura dos Riscos';
		$labelFraseRisco = 'Riscos Excluídos e/ou Perdas Não Cobertas';

		if ($idSafra > Produto_Model_Safras::SAFRA_2025_2026) {
			$labelFraseRestricoes = 'Avisos Importantes para o Proponente';
			$labelFraseRisco = 'Informações Importantes para o Segurado';
		}
		
		$this->addElement('hidden', 'id', array('decorators' => $this->buttonDecorator));

		$this->addElement('select', 'id_safra', array(
			'MultiOptions' => $Safra->fetchPairs('id', 'ds_nome_safra', false, false, 1, false, false, 'DESC'),
			'decorators' => $this->elementDecorator,
			'value' => $Safra->safraCurrent,
			'label' => 'Safra',
			'required' => true
		));

		$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
		));

		$this->addElement('select', 'id_safra_search2', array(
			'MultiOptions' => $Safra->fetchPairs('id', 'ds_nome_safra', false, false, 1, false, false, 'DESC'),
			'decorators' => $this->elementDecorator,
			'value' => $Safra->safraCurrent,
			'label' => 'Safra',
			'required' => false
		));


		$this->addElement('select', 'id_produto_geral', array(
			'MultiOptions' => $ProdutosGeral->fetchPairs('id', 'ds_nome_produto_geral', false, false, 1, false, true),
			'decorators' => $this->elementDecorator,
			'label' => 'Produto Geral',
			'required' => true
		));

		$this->addElement('select', 'id_seguradora', array(
			'MultiOptions' => $Empresa->getCombo('SEGURADORA'),
			'decorators' => $this->elementDecorator,
			'label' => 'Seguradora',
			'required' => true
		));

		$this->addElement('text', 'nr_susep', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Nº SUSEP',
			'required' => true,
			'maxlength' => 50,
			'size' => 30
		));

		$this->addElement('text', 'cd_produto_seguradora', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Código do Produto Seguradora',
			'required' => true,
			'maxlength' => 7,
			'size' => 10
		));

		$this->addElement('text', 'ds_nome_produto', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Nome da Versão',
			'required' => true,
			'maxlength' => 150,
			'size' => 50
		));

		$this->addElement('text', 'ds_nome_abreviado', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Nome Abreviado',
			'required' => true,
			'maxlength' => 100,
			'size' => 50
		));

		$ProdutosLaudos = new Produto_Model_Produtos();
		$this->addElement('select', 'id_modelo_vistoria_previa', array(
			'MultiOptions' => $ProdutosLaudos->getComboModelosVistoriaPrevia(),
			'decorators' => $this->elementDecorator,
			'label' => 'Modelo de Vistoria Prévia',
			'required' => false
		));

		$this->addElement('select', 'fl_ativo', array(
			'MultiOptions' => array('0' => "Todos", "1" => "Ativos", "2"=>"Inativos"),
			'decorators' => $this->elementDecorator,
			'label' => 'Status',
			'required' => false
		));

		$TipoVistoriaPrevia = new Seguro_Model_TipoVistoriaPrevia();
		$this->addElement('select', 'id_tipo_vistoria_previa', array(
			'MultiOptions' => $TipoVistoriaPrevia->fetchPairs('id', 'ds_chave'),
			'decorators' => $this->elementDecorator,
			'label' => 'Tipo vistoria prévia'
		));

		$this->addElement('radio', 'ds_ordenacao_laudos_liquidacao', array(
			'MultiOptions' => array("dt_aviso_sinistro" => " Data do evento (Aviso Sinistro)", "dt_vistoria" => " Data da vistoria"),
			'decorators' => $this->elementDecorator,
			'label' => 'Ordenação dos laudos para liquidação',
			'required' => false
		));

        $this->addElement('textarea', 'ds_frase_restricoes', array(
          	'decorators' => $this->elementDecorator,
          	'label' => $labelFraseRestricoes,
          	'cols' => 120,
          	'rows' => 8
        ));

		$this->addElement('textarea', 'ds_frase_risco', array(
			'decorators' => $this->elementDecorator,
			'label' => $labelFraseRisco,
			'cols' => 120,
			'rows' => 8
		));

		$this->addElement('textarea', 'ds_frase_padrao_orcamento', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Frase Padrão Para Orçamentos',
			'cols' => 120,
			'rows' => 8
		));

		$this->addElement('text', 'ds_url_condicoes', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Link para acesso às Condições do Seguro',
			'required' => true,
			'size' => 50
		));
	}

	public function populate(array $data) {
		if (!empty($data['id'])) {
			$dateTime = (new Produto_Model_ConfiguracaoDataCorte())->getUltimaData();
			
			$produtoConfig = (new Produto_Model_ProdutoConfig())->getConfiguracaoByDataCorte(
				$data['id'],
				$dateTime
			);
		
			$data['ds_url_condicoes'] = $produtoConfig->ds_url_condicoes;
			$data['ds_frase_risco'] = $produtoConfig->ds_frase_risco;
			$data['ds_frase_restricoes'] = $produtoConfig->ds_frase_restricoes;
			$data['ds_frase_padrao_orcamento'] = $produtoConfig->ds_frase_padrao_orcamento;
			$data['id_modelo_vistoria_previa'] = $produtoConfig->id_modelo_vistoria_previa;
		}

		parent::populate($data);
	}
}