<?php

class Seguro_Model_PropostasProponentes extends Agro_Db_Table_Abstract {
	protected $_rowClass = 'Seguro_Model_Row_Proponente';
	protected $_name = 'propostas_proponentes';
	protected $_primary = 'id_proposta';
	protected $_schema = 'seguro';
	protected $_log = true;

	public function save(array $data, $proposta) {
		$Row = $this->getRow($proposta);

		if (mb_check_encoding($data['ds_nome_proponente'], 'UTF-8')) {
		    $ds_nome_proponente = $data['ds_nome_proponente'];
		} else {
		    $ds_nome_proponente = utf8_encode($data['ds_nome_proponente']);
		}

		$Row->id_municipio = ($data['id_municipio'] ? $data['id_municipio'] : null);
		$Row->cpf_cnpj = !empty($data['cpf_cnpj']) ? $data['cpf_cnpj'] : (!empty($Row['cpf_cnpj']) ? $Row['cpf_cnpj'] : '');
		$Row->tp_pessoa = $data['tp_pessoa'] ?? $Row['tp_pessoa'];
		$Row->tp_segurado = $data['tp_segurado'];
		$Row->ds_nome_proponente = $ds_nome_proponente;
		$Row->ds_email_proponente = $data['ds_email_proponente'];
		$Row->ds_sexo = $data['ds_sexo'];
		$Row->dt_nascimento = Agro_Util::formatDate($data['dt_nascimento'], Zend_Date::W3C);
		$Row->id_estado_civil = ($data['id_estado_civil'] ? $data['id_estado_civil'] : 1);
		$Row->ds_documento_natureza = $data['ds_documento_natureza'];
		$Row->ds_documento_numero = $data['ds_documento_numero'];
		$Row->id_orgao_expedidor = ($data['id_orgao_expedidor'] ? $data['id_orgao_expedidor'] : null);
		$Row->dt_documento_exp = Agro_Util::formatDate($data['dt_documento_exp'], Zend_Date::W3C);
		$Row->ds_endereco_rua = $data['ds_endereco_rua'];
		$Row->ds_endereco_nro = $data['ds_endereco_nro'];
		$Row->ds_endereco_complem = $data['ds_endereco_complem'];
		$Row->ds_endereco_bairro = $data['ds_endereco_bairro'];
		$Row->ds_endereco_cep = $data['ds_endereco_cep'];
		$Row->ds_tel_residencia = $data['ds_tel_residencia'];
		$Row->ds_tel_propriedade = $data['ds_tel_propriedade'];
		$Row->ds_tel_celular = $data['ds_tel_celular'];
		$Row->id_proponente_original = ($data['id_proponente'] ? $data['id_proponente'] : null);
		$Row->id_atividade_economica = ($data['id_atividade_economica'] ? $data['id_atividade_economica'] : 0);
		$Row->id_renda = ($data['id_renda'] ? $data['id_renda'] : 1);
		$Row->id_renda_bruta= ($data['id_renda_bruta'] ? $data['id_renda_bruta'] : null);
		$Row->id_patrimonio= ($data['id_patrimonio'] ? $data['id_patrimonio'] : null);
		$Row->ds_profissao = $data['ds_profissao'];
		$Row->vl_faturamento_anual = ($data['vl_faturamento_anual'] ? Agro_Util::formatCurrencyDb($data['vl_faturamento_anual']) : null);
		$Row->vl_patrimonio = ($data['vl_patrimonio'] ? Agro_Util::formatCurrencyDb($data['vl_patrimonio']) : null);
		$Row->fl_politicamente_exposto = $data['fl_politicamente_exposto'] ? $data['fl_politicamente_exposto'] : 0;
		$Row->fl_parentesco_politicamente_exposto = $data['fl_parentesco_politicamente_exposto'] ? $data['fl_parentesco_politicamente_exposto'] : 0;
		$Row->ds_grau_parentesco_politicamente_exposto = $data['ds_grau_parentesco_politicamente_exposto'] ? $data['ds_grau_parentesco_politicamente_exposto'] : null;
		$Row->ds_cpf_parentesco_politicamente_exposto = $data['ds_cpf_parentesco_politicamente_exposto'] ? $data['ds_cpf_parentesco_politicamente_exposto'] : null;
		$Row->fl_optante_nao_informar_patrimonio = $data['fl_optante_nao_informar_patrimonio'] ? $data['fl_optante_nao_informar_patrimonio'] : 0;
		$Row->fl_nome_social = $data['fl_nome_social'] ? $data['fl_nome_social'] : 0;
		$Row->ds_nome_social = $data['ds_nome_social'];

		return $Row->save();
	}

	public function comparaCampos($data, $Row) {
		if($data['ds_nome_proponente']) {
			if($Row->ds_nome_proponente != $data['ds_nome_proponente']) {
				$this->camposAlterados[] = "Nome Proponente \n- De: {$Row->ds_nome_proponente} \n- Para: {$data['ds_nome_proponente']}\n\n";
			}
		}

		if($data['cpf_cnpj']) {
			if($Row->cpf_cnpj != $data['cpf_cnpj']) {
				$this->camposAlterados[] = "Cpf/Cnpj Proponente \n- De: {$Row->cpf_cnpj} \n- Para: {$data['cpf_cnpj']}\n\n";
			}
		}
		if($data['ds_sexo'] !== null) {
			if($Row->ds_sexo != $data['ds_sexo']) {
				if($Row->ds_sexo == 'M') {
					$sexo = 'Masculino';
				} else {
					$sexo = 'Feminino';
				}

				if($data['ds_sexo'] == 'M') {
					$sexo_novo = 'Masculino';
				} else {
					$sexo_novo = 'Feminino';
				}
				$this->camposAlterados[] = "Sexo Proponente \n- De: $sexo \n- Para: $sexo_novo\n\n";
			}
		}

		if($data['dt_nascimento'] !== null) {
			$data1 = Agro_Util::formatDate($Row->dt_nascimento, Zend_Date::DATES);
			$data2 = Agro_Util::formatDate($data['dt_nascimento'], Zend_Date::DATES);
			if($data1 != $data2) {
				$this->camposAlterados[] = "Data de Nascimento Proponente \n- De: $data1 \n- Para: $data2\n\n";
			}
		}
		if($data['id_estado_civil']) {
			if($Row->id_estado_civil != $data['id_estado_civil']) {

				$Model = new Sistema_Model_EstadosCivis();
				if($Row->id_estado_civil) {
					$estado = $Model->fetchRow(" id = " . $Row->id_estado_civil);
					$estado = $estado['ds_nome_estado_civil'];
				} else {
					$estado = '';
				}

				$estado_novo = $Model->fetchRow(" id = " . $data['id_estado_civil']);
				$estado_novo = $estado_novo['ds_nome_estado_civil'];

				$this->camposAlterados[] = "Estado Civil Proponente \n- De: $estado \n- Para: $estado_novo\n\n";
			}
		}
		if($data['ds_documento_natureza'] !== null) {
			if(trim($Row->ds_documento_natureza) != trim($data['ds_documento_natureza'])) {
				$this->camposAlterados[] = "Tipo de Documento Proponente \n- De: {$Row->ds_documento_natureza} \n- Para: {$data['ds_documento_natureza']}\n\n";
			}
		}
		if($data['ds_documento_numero']) {
			if($Row->ds_documento_numero != $data['ds_documento_numero']) {
				$this->camposAlterados[] = "Número do Documento Proponente \n- De: {$Row->ds_documento_numero} \n- Para: {$data['ds_documento_numero']}\n\n";
			}
		}
		if($data['id_orgao_expedidor']) {
			if($Row->id_orgao_expedidor != $data['id_orgao_expedidor']) {
				$this->camposAlterados[] = "Orgão Expedidor \n- De: {$Row->id_orgao_expedidor} \n- Para: {$data['id_orgao_expedidor']}\n\n";
			}
		}
		if($data['dt_documento_exp'] !== null) {
			$data1 = Agro_Util::formatDate($Row->dt_documento_exp, Zend_Date::DATES);
			$data2 = Agro_Util::formatDate($data['dt_documento_exp'], Zend_Date::DATES);
			if($data1 != $data2) {
				$this->camposAlterados[] = "Data Expedição \n- De: $data1 \n- Para: $data2\n\n";
			}
		}
		if($data['tp_segurado']) {
			$arr['A'] = 'Arrendatário';
			$arr['P'] = 'Proprietário';
			$arr['O'] = 'Outros';
			if($Row->tp_segurado != $data['tp_segurado']) {
				$this->camposAlterados[] = "Enviar Correspondência para \n- De: {$arr[$Row->tp_segurado]} \n- Para: {$arr[$data['tp_segurado']]}\n\n";
			}
		}
		if($data['ds_endereco_rua_proponente']) {
			if($Row->ds_endereco_rua != $data['ds_endereco_rua_proponente']) {
				$this->camposAlterados[] = "Endereço Rua proponente \n- De: {$Row->ds_endereco_rua} \n- Para: {$data['ds_endereco_rua_proponente']}\n\n";
			}
		}
		if($data['ds_endereco_nro_proponente']) {
			if($Row->ds_endereco_nro != $data['ds_endereco_nro_proponente']) {
				$this->camposAlterados[] = "Endereço Número Proponente \n- De: {$Row->ds_endereco_nro} \n- Para: {$data['ds_endereco_nro_proponente']}\n\n";
			}
		}
		if($data['ds_endereco_complemento_proponente'] !== null) {
			if($Row->ds_endereco_complem != $data['ds_endereco_complemento_proponente']) {
				$this->camposAlterados[] = "Endereço complemento Proponente \n- De: {$Row->ds_endereco_complem} \n- Para: {$data['ds_endereco_complemento_proponente']}\n\n";
			}
		}
		if($data['ds_endereco_bairro_proponente'] !== null) {
			if($Row->ds_endereco_bairro != $data['ds_endereco_bairro_proponente']) {
				$this->camposAlterados[] = "Endereço Bairro Proponente \n- De: {$Row->ds_endereco_bairro} \n- Para: {$data['ds_endereco_bairro_proponente']}\n\n";
			}
		}
		if($data['ds_endereco_cep_proponente'] !== null) {
			if($Row->ds_endereco_cep != $data['ds_endereco_cep_proponente']) {
				$this->camposAlterados[] = "Endereço Cep Proponente \n- De: {$Row->ds_endereco_cep} \n- Para: {$data['ds_endereco_cep_proponente']}\n\n";
			}
		}
		if($data['ds_tel_residencia'] !== null) {
			if($Row->ds_tel_residencia != $data['ds_tel_residencia']) {
				$this->camposAlterados[] = "Telefone Residencial \n- De: {$Row->ds_tel_residencia} \n- Para: {$data['ds_tel_residencia']}\n\n";
			}
		}
		if($data['ds_tel_propriedade'] !== null) {
			if($Row->ds_tel_propriedade != $data['ds_tel_propriedade']) {
				$this->camposAlterados[] = "Telefone Propriedade \n- De: {$Row->ds_tel_propriedade} \n- Para: {$data['ds_tel_propriedade']}\n\n";
			}
		}
		if($data['ds_tel_celular'] !== null) {
			if($Row->ds_tel_celular != $data['ds_tel_celular']) {
				$this->camposAlterados[] = "Celular \n- De: {$Row->ds_tel_celular} \n- Para: {$data['ds_tel_celular']}\n\n";
			}
		}

		if($data['id_municipio_proponente']) {
			if($Row->id_municipio != $data['id_municipio_proponente']) {
				$Model = new Sistema_Model_Municipios();
				if($Row->id_municipio) {
					$municipio = $Model->fetchRow(" id = {$Row->id_municipio}");
					$municipio = $municipio['ds_nome_municipio'];
				} else {
					$municipio = '';
				}
				$municipio_novo = $Model->fetchRow(" id = {$data['id_municipio_proponente']}");
				$municipio_novo = $municipio_novo['ds_nome_municipio'];
				$this->camposAlterados[] = "Municipio Proponente \n- De: $municipio \n- Para: $municipio_novo\n\n";
			}
		}
	}

	public function get($id_proposta) {
		$Select = $this->select()->setIntegrityCheck(false);
		$Select->from(array('p' => 'seguro.propostas_proponentes'), array('id_proposta','cpf_cnpj','tp_pessoa','ds_nome_proponente','ds_email_proponente','ds_sexo','dt_nascimento','id_estado_civil','ds_documento_natureza','ds_documento_numero','id_orgao_expedidor','dt_documento_exp','ds_endereco_rua','ds_endereco_nro','ds_endereco_complem','ds_endereco_bairro','ds_endereco_cep','id_municipio','ds_tel_residencia','ds_tel_propriedade','ds_tel_celular','tp_segurado','id_proponente_original','id_atividade_economica','vl_faturamento_anual','vl_patrimonio','fl_politicamente_exposto','fl_parentesco_politicamente_exposto','ds_grau_parentesco_politicamente_exposto','ds_cpf_parentesco_politicamente_exposto','fl_optante_nao_informar_patrimonio','id_renda'));
		$Select->join(array('m' => 'sistema.municipios'), 'p.id_municipio = m.id', array('id_estado','ds_nome_municipio','ds_latitude','ds_longitude','vl_altitude','vl_area','ds_ano_instalacao','cd_bacen','nr_ibge','nr_cep'));
		$Select->join(array('e' => 'sistema.estados'), 'm.id_estado = e.id', array('ds_nome_estado','ds_sigla','nr_ibge','id_pais'));
		$Select->joinLeft(array('oe' => 'sistema.orgao_expedidor'), 'oe.id= p.id_orgao_expedidor', array('ds_nome_orgao'));
		$Select->joinLeft(array('ec' => 'sistema.estado_civil'), 'ec.id= p.id_estado_civil', array('ds_nome_estado_civil'));
		$Select->where('id_proposta = ?', $id_proposta);

		return $this->fetchRow($Select);
	}

	public function saveQuestionario($data){

		try{
			$Row = $this->getRow($data['id_proposta']);

			$Row->id_atividade_economica = ($data['id_atividade_economica'] ? $data['id_atividade_economica'] : 0);
			$Row->id_renda = ($data['id_renda'] ? $data['id_renda'] : 1);
			$Row->vl_faturamento_anual = ($data['vl_faturamento_anual'] ? Agro_Util::formatCurrencyDb($data['vl_faturamento_anual']) : null);
			$Row->vl_patrimonio = ($data['vl_patrimonio'] ? Agro_Util::formatCurrencyDb($data['vl_patrimonio']) : null);
			$Row->fl_politicamente_exposto = $data['fl_politicamente_exposto'] ? $data['fl_politicamente_exposto'] : 0;
			$Row->fl_parentesco_politicamente_exposto = $data['fl_parentesco_politicamente_exposto'] ? $data['fl_parentesco_politicamente_exposto'] : 0;
			$Row->ds_grau_parentesco_politicamente_exposto = $data['ds_grau_parentesco_politicamente_exposto'] ? $data['ds_grau_parentesco_politicamente_exposto'] : null;
			$Row->ds_cpf_parentesco_politicamente_exposto = $data['ds_cpf_parentesco_politicamente_exposto'] ? $data['ds_cpf_parentesco_politicamente_exposto'] : null;
			$Row->fl_optante_nao_informar_patrimonio = $data['fl_optante_nao_informar_patrimonio'] ? $data['fl_optante_nao_informar_patrimonio'] : 0;

			return $Row->save();
		}catch(Exception $e){
				die($e);
		}
	}


	public function getProponenteByCpfCnpj(string $documento)
	{
		return $this->fetchRow(
			$this->select()
				->from(['spp' => 'seguro.propostas_proponentes'], ['ds_nome_proponente as nome', 'cpf_cnpj'])
				->where('spp.cpf_cnpj = ?', $documento)
				->group('ds_nome_proponente, cpf_cnpj, dt_criacao')
				->order('dt_criacao DESC')
				->limit(1)
		);
	}
}
