<?php

class Comercializacao_Form_Comercializacao extends Agro_Form {
	public $id_produto;
	public $id_safra;
	public $ds_nome_comercializacao;
	public $dt_comercializacao_inicio;
	public $dt_comercializacao_fim;
	public $dt_cobertura_inicio;
	public $dt_cobertura_fim;
	
	public function init() {
		$this->id = $this->createElement('hidden', 'id');
		$this->id->setDecorators($this->buttonDecorator);
		$this->addElement($this->id);

        $this->id_comercializacao = $this->createElement('hidden', 'id_comercializacao');
        $this->id_comercializacao->setDecorators($this->buttonDecorator);
        $this->addElement($this->id_comercializacao);

        $this->nome_comercializacao = $this->createElement('hidden', 'nome_comercializacao');
        $this->nome_comercializacao->setDecorators($this->buttonDecorator);
        $this->addElement($this->nome_comercializacao);

        $this->comercializacao_inicio = $this->createElement('hidden', 'comercializacao_inicio');
        $this->comercializacao_inicio->setDecorators($this->buttonDecorator);
        $this->addElement($this->comercializacao_inicio);

        $this->comercializacao_fim = $this->createElement('hidden', 'comercializacao_fim');
        $this->comercializacao_fim->setDecorators($this->buttonDecorator);
        $this->addElement($this->comercializacao_fim);
		
		$this->ds_nome_comercializacao = $this->createElement('text', 'ds_nome_comercializacao');
		$this->ds_nome_comercializacao->setDecorators($this->elementDecorator);
		$this->ds_nome_comercializacao->setRequired(true);
		$this->ds_nome_comercializacao->setAttrib('size', '50');
		$this->ds_nome_comercializacao->setAttrib('maxlength', '40');
		$this->ds_nome_comercializacao->setRequired(true);
		$this->ds_nome_comercializacao->setLabel('Comercialização');
		$this->addElement($this->ds_nome_comercializacao);
		
		$this->dt_comercializacao_inicio = $this->createElement('text', 'dt_comercializacao_inicio');
		$this->dt_comercializacao_inicio->setDecorators($this->elementDecorator);
		$this->dt_comercializacao_inicio->setAttrib('class','data');
		$this->dt_comercializacao_inicio->setAttrib('size','11');
		$this->dt_comercializacao_inicio->setAttrib('maxlength', '10');
		$this->dt_comercializacao_inicio->setRequired(true);
		$this->dt_comercializacao_inicio->setLabel('Data Início Comercialização');
		$this->addElement($this->dt_comercializacao_inicio);
		
		$this->dt_comercializacao_fim = $this->createElement('text', 'dt_comercializacao_fim');
		$this->dt_comercializacao_fim->setDecorators($this->elementDecorator);
		$this->dt_comercializacao_fim->setAttrib('class','data');
		$this->dt_comercializacao_fim->setAttrib('maxlength', '10');
		$this->dt_comercializacao_fim->setAttrib('size','11');
		$this->dt_comercializacao_fim->setRequired(true);
		$this->dt_comercializacao_fim->setLabel('Data Fim Comercialização');
		$this->addElement($this->dt_comercializacao_fim);
		
		$this->dt_cobertura_inicio = $this->createElement('text', 'dt_cobertura_inicio');
		$this->dt_cobertura_inicio->setDecorators($this->elementDecorator);
		$this->dt_cobertura_inicio->setAttrib('class','data');
		$this->dt_cobertura_inicio->setAttrib('maxlength', '10');
		$this->dt_cobertura_inicio->setAttrib('size','11');
		$this->dt_cobertura_inicio->setRequired(true);
		$this->dt_cobertura_inicio->setLabel('Data Início Vigência');
		$this->addElement($this->dt_cobertura_inicio);
		
		$this->dt_cobertura_fim = $this->createElement('text', 'dt_cobertura_fim');
		$this->dt_cobertura_fim->setDecorators($this->elementDecorator);
		$this->dt_cobertura_fim->setAttrib('class','data');
		$this->dt_cobertura_fim->setAttrib('size','11');
		$this->dt_cobertura_fim->setAttrib('maxlength', '10');
		$this->dt_cobertura_fim->setRequired(true);
		$this->dt_cobertura_fim->setLabel('Data Fim Vigência');
		$this->addElement($this->dt_cobertura_fim);
		
		$this->save = $this->createElement('button', 'salvar', array('type'=>'submit'));
		$this->save->setDecorators($this->buttonDecorator);
		$this->save->setLabel('Salvar');
		$this->addElement($this->save);
		
		$this->cancel = new Zend_Form_Element_Button('cancelar');
		
		/** Campos específicos para o formulário de consulta */
		$Safra = new Produto_Model_Safras();
		$this->id_safra = $this->createElement('select', 'id_safra');
		$this->id_safra->setDecorators($this->elementDecorator);
		$this->id_safra->addMultiOptions($Safra->getCombo());
		$this->id_safra->setValue($Safra->safraCurrent);
		$this->id_safra->setRequired(false);
		$this->id_safra->setLabel('Safra');
		$this->addElement($this->id_safra);
		
		$this->id_produto = $this->createElement('select', 'id_produto');
		$this->id_produto->setDecorators($this->elementDecorator);
		$this->id_produto->addMultiOptions($Safra->getComboProdutoSafraRequest($Safra->safraCurrent));
		$this->id_produto->setLabel('Produto');
		$this->id_produto->setRequired(false);
		$this->addElement($this->id_produto);
		
		
		$this->ds_nome_comercializacao_search = $this->createElement('text', 'ds_nome_comercializacao_search');
		$this->ds_nome_comercializacao_search->setDecorators($this->elementDecorator);
		$this->ds_nome_comercializacao_search->setRequired(false);
		$this->ds_nome_comercializacao_search->setLabel('Comercialização');
		$this->addElement($this->ds_nome_comercializacao_search);
		
		$this->id_safra_search = $this->createElement('select', 'id_safra_search');
		$this->id_safra_search->setDecorators($this->elementDecorator);
		$this->id_safra_search->addMultiOptions($Safra->getCombo());
		$this->id_safra_search->setRequired(false);
		$this->id_safra_search->setLabel('Safra');
		$this->addElement($this->id_safra_search);
		
		$this->id_produto_search = $this->createElement('select', 'id_produto_search');
		$this->id_produto_search->setDecorators($this->elementDecorator);
		$this->id_produto_search->addMultiOptions($Safra->getComboProdutoSafraRequest(reset(array_keys($Safra->getCombo()))));
		$this->id_produto_search->setLabel('Produto');
		$this->id_produto_search->setRequired(false);
		$this->addElement($this->id_produto_search);
		
		
		$Estados = new Sistema_Model_Estados();
		$this->id_estado_search = $this->createElement('select', 'id_estado_search');
		$this->id_estado_search->setDecorators($this->elementDecorator);
		$this->id_estado_search->addMultiOptions($Estados->getCombo());
		$this->id_estado_search->setLabel('Estado');
		$this->id_estado_search->setRequired(false);
		$this->addElement($this->id_estado_search);
		
		
		$this->id_municipio_search = $this->createElement('select', 'id_municipio_search');
		$this->id_municipio_search->setDecorators($this->elementDecorator);
		$this->id_municipio_search->setRequired(false);
		$this->id_municipio_search->setLabel('Município');
		$this->id_municipio_search->setRegisterInArrayValidator(false);
		$this->addElement($this->id_municipio_search);
		
		
		$Estados = new Sistema_Model_Estados();
		$this->id_estado = $this->createElement('select', 'id_estado');
		$this->id_estado->setDecorators($this->elementDecorator);
		$this->id_estado->addMultiOptions($Estados->getCombo());
		$this->id_estado->setLabel('Estado');
		$this->id_estado->setRequired(false);
		$this->addElement($this->id_estado);
		
		$this->id_municipio = $this->createElement('select', 'id_municipio');
		$this->id_municipio->setDecorators($this->elementDecorator);
		$this->id_municipio->setRequired(false);
		$this->id_municipio->setLabel('Município');
		$this->id_municipio->setRegisterInArrayValidator(false);
		$this->addElement($this->id_municipio);
		
		$Corretores = new Sistema_Model_Corretores();
		$this->addElement('select', 'id_corretor_search', array(
			'MultiOptions' => $Corretores->getComboUsuario(),
			'decorators' => $this->elementDecorator,
			'label' => 'Corretor'
		));
		
		$this->addElement('select', 'id_preposto_search', array(
			'decorators' => $this->elementDecorator,
			'label' => 'Preposto'
		));
		
		$this->addElement('select', 'fl_ativo', array(
			'MultiOptions' => array(1=>'Sim', 0=>'Não'),
			'decorators' => $this->elementDecorator,
			'label' => 'Ativo'
		));
		
		$this->addElement('select', 'cpf_cnpj_combo', array(
				'MultiOptions' => array( 0 => '', 1 => 'CPF', 2 => 'CNPJ'),
				'decorators' => $this->elementDecorator,
				'label' => 'CPF/CNPJ'
		));
		
		$this->addElement('text', 'cpf_cnpj_search', array(
				'decorators' => $this->elementDecorator,
				'label' => 'Valor',
				'size' => 30
		));

        $this->addElement('text', 'id_proposta_search', array(
          'decorators' => $this->elementDecorator,
          'label'      => 'Nº Orçamento',
          'size'       => 10
        ));
	}
	
	public function setProdutos($idSafra) {
		$Produto = new Produto_Model_Produtos();
		$this->id_produto->addMultiOptions($Produto->getCombo($idSafra));
	}
	
	public function setMunicipios($idEstado) {
		$Municipio = new Sistema_Model_Municipios();
		$this->id_municipio->addMultiOptions($Municipio->getCombo($idEstado));
	}
	
	public function populate(array $values)
    {
        $camposData = [
          'dt_comercializacao_inicio',
          'dt_comercializacao_fim',
          'dt_cobertura_inicio',
          'dt_cobertura_fim',
        ];

        foreach ($camposData as $campoData) {
            if (
              array_key_exists($campoData, $values)
              && !empty($values[$campoData])
              && Agro_Util::isDbDate($values[$campoData])
            ) {
                $values[$campoData] = date('d/m/Y', strtotime($values[$campoData]));
            }
        }

		if (array_key_exists("id_safra", $values)) {
			$this->setProdutos($values['id_safra']);
		}
		
		if(!$values['fl_ativo']){
		    $values['fl_ativo'] = '0';
		}

		parent::populate($values);
	}
}
