<?php

class Seguro_Model_Cliente extends Agro_Db_Table_Abstract {
	protected $_schema = 'seguro';
	protected $_name = 'clientes';
	protected $_primary = 'id';
	public $_order = 'id';

	public function save($dados) {
		$Row = $this->getRow($dados['id']);

		$Row->ds_cpf_cnpj = ($dados['cpf_cnpj'] ? $dados['cpf_cnpj'] : null);
		$Row->ds_descricao_cliente = ($dados['ds_descricao_cliente']? $dados['ds_descricao_cliente'] : null);
		$Row->ds_nome_cliente = $dados['ds_nome_cliente'];

		return $Row->save();
	}

	/**
	 * Monta o SQL que sera usado na listagem de propostas
	 *
	 * @param array $where
	 */
	public function getPropostas(array $where, $flRelacionadas = false) {
		$Select = $this->select()->setIntegrityCheck(false)->distinct(true);
		$Select->from(array('spe' => 'seguro.propostas_endosso'), false);
		$Select->join(array('spr' => 'seguro.propostas'), 'spr.id = spe.id_proposta', array('id', 'id_endosso', 'id_status', 'dt_vigencia_inicio', 'id_usuario_criacao', 'id_produto', 'ds_status_seguradora', 'nr_digito_verificador', 'nr_apolice'));
		$Select->joinLeft(array('sps' => 'seguro.propostas_status'), 'sps.id_status = spr.id_status and sps.id_proposta = spr.id and sps.fl_ativo = true', false);
		$Select->join(array('spt' => 'seguro.propostas_proponentes'), 'spr.id = spt.id_proposta', array('ds_nome_proponente', 'cpf_cnpj'));
		$Select->join(array('spc' => 'seguro.propostas_corretores'), 'spr.id = spc.id_proposta', false);
		$Select->join(array('ppr' => 'produto.produtos'), 'ppr.id = spr.id_produto', array('ds_nome_abreviado','ds_nome_produto'));
		$Select->join(array('scr' => 'sistema.corretores'), 'spc.id_usuario = scr.id_usuario', array('ds_nome_fantasia'));
		$Select->join(array('sst' => 'sistema.status'), 'sst.id = spr.id_status', array('ds_cor', 'ds_chave', 'ds_status', 'cd_status'));

		if($flRelacionadas){
		    $Select->where(" spr.id NOT IN (select id_proposta from seguro.clientes_propostas) ");
		} else {
		    $Select->join(array('sc' => 'seguro.clientes_propostas'), ' spr.id = sc.id_proposta', false);
		}

		$Select->where('sst.ds_chave <> ?', 'PROPOSTA_INCOMPLETA');
		$Select->where('sst.ds_chave <> ?', 'ENDOSSO_INCOMPLETO');
		$Select->where('sst.ds_chave <> ?', Seguro_Model_Propostas::DS_CHAVE_SOLICITACAO_CANCELADA);
		$this->getWhere($Select, $where);

		if ($this->_order) {
			$Select->order($this->_order);
		}

		return $Select;
	}

	public function getRelacionadas($where) {
		$select    = $this->getPropostas($where,false);
		$propostas = $this->fetchAll($select);
		return $propostas;
	}

	public function getEncontradas($where) {
		$select    = $this->getPropostas($where,true);
		$propostas = $this->fetchAll($select);
		return $propostas;
	}

	public function relacionarPropostas($dados) {

	}

}