<?PHP
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * ESTE PROGRAMA É SOFTWARE LIVRE; VOCÊ PODE REDISTRIBUÍ-LO E/OU MODIFICÁ-LO SOB OS
 * TERMOS DA LICENÇA PÚBLICA GERAL GNU CONFORME PUBLICADA PELA FREE SOFTWARE FOUNDATION;
 * TANTO A VERSÃO 2 DA LICENÇA, COMO (A SEU CRITÉRIO) QUALQUER VERSÃO POSTERIOR.

 * ESTE PROGRAMA É DISTRIBUÍDO NA EXPECTATIVA DE QUE SEJA ÚTIL, PORÉM, SEM NENHUMA GARANTIA;
 * NEM MESMO A GARANTIA IMPLÍCITA DE COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
 * CONSULTE A LICENÇA PÚBLICA GERAL DO GNU PARA MAIS DETALHES.
 * 
 * VOCÊ DEVE TER RECEBIDO UMA CÓPIA DA LICENÇA PÚBLICA GERAL DO GNU JUNTO COM ESTE PROGRAMA; 
 * SE NÃO, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

<?

require_once 'util.php';

function input_cep($cep)
{
	$c = (string)$cep;

	if(is_numeric($c) || strlen($c)!=9)
		return $c;
	else
		return substr($c,0,5).substr($c,6,3);
}

function output_cep($cep)
{
	$c = (string)$cep;

	if(!is_numeric($c) || strlen($c)!=8)
		return $c;
	else
		return substr($c,0,5).'-'.substr($c,6,3);
}

class Endereco extends Doctrine_Record
{
	function setTableDefinition()
	{
		$this->setTableName('saude.endereco');

		$this->hasColumn('idtipo_logradouro', 'integer', array('notnull'));
		$this->hasColumn('logradouro', 'string', 150, array('notnull','notblank'));
		$this->hasColumn('numero', 'string', 15, array('notnull'));
		$this->hasColumn('complemento', 'string', 30, array('notnull'));
		$this->hasColumn('bairro', 'string', 50);
		$this->hasColumn('idmunicipio', 'integer');
		$this->hasColumn('cep', 'string', 8, array('fixed'));
		$this->hasColumn('referencia', 'string', 100);

		$this->hasColumn('geoiguacu', 'string', 8, array('fixed'));

		// Se for nulo é pq o endereco está fora de Nova iguaçu
		$this->hasColumn('justificativa_sem_geoiguacu', 'string', 150);
	}

	function validate()
	{
		trim_string_columns($this);

		if($this->numero)
			$this->numero = normaliza($this->numero);
		if($this->complemento)
			$this->complemento = normaliza($this->complemento);
		if($this->logradouro)
			$this->logradouro = normaliza($this->logradouro);
		if($this->bairro)
			$this->bairro = normaliza($this->bairro);

		if(!$this->complemento)
			$this->complemento = '';
		if(!$this->numero)
			$this->numero = '';

		$erros = array();

		if(!$this->logradouro)
			$erros[] = 'O logradouro deve ser informado';

		if($erros)
			throw new Exception(implode("\n",$erros));
	}

    function setUp()
    {
		$this->hasOne('TipoLogradouro as tipo_logradouro',
			array('local'=>'idtipo_logradouro',
			      'foreign'=>'id'));

		$this->hasOne('Municipio as municipio',
			array('local'=>'idmunicipio',
			      'foreign'=>'id'));

		$this->index('idx_endereco_unico',
			array('fields' => array('logradouro','idtipo_logradouro',
						'numero','complemento','idmunicipio')));
	}
};

?>
