<?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';

define('ID_NOVA_IGUACU',330350);

function dv_municipio_ibge($cod)/*{{{*/
{
	if($cod == null)
		return null;

	$cod = (string)$cod;
	$nao_validar = array('220191'=>'9',
						 '220225'=>'1',
						 '220198'=>'8',
						 '261153'=>'3',
						 '311782'=>'6',
						 '315213'=>'1',
						 '430587'=>'1',
						 '520393'=>'9',
						 '520396'=>'2');

	if(strlen($cod) != 6)
		throw Exception("Código de município do IBGE inválido");

	if(isset($nao_validar[$cod]))
		$dv = $nao_validar[$cod];
	else
	{
		$peso = '121212';

		$soma = 0;
		for($i=0; $i<6; ++$i)
		{
			$val = $cod[$i] * $peso[$i];
			if($val > 9)
			{
				$sval = strval($val);
				$soma += $sval[0] + $sval[1];
			}
			else
				$soma += $val;

		}

		$dv = 10-($soma % 10);

		if($dv == 10)
			$dv = 0;
	}

	return $cod.strval($dv);
}/*}}}*/

class Municipio extends Doctrine_Record
{
	function setTableDefinition()
	{
		$this->setTableName('saude.municipio');
		$this->hasColumn('id','integer', NULL, array('primary'));

		$this->hasColumn('idestado','integer', array('notnull'));
		$this->hasColumn('nome','string', 150, array('notnull'));
	}

	function validate()
	{
		trim_string_columns($this);
		$this->nome = trim($this->nome);

		$erros = array();

		if(!$this->nome)
			$erros[] = 'O nome do município deve ser preenchido';

		if(!$this->idestado)
			$erros[] = 'O estado do município deve ser preenchido';

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

    function setUp()
    {
		$this->hasOne('Estado as estado',
			array('local'=>'idestado',
			      'foreign'=>'id'));
	}
};

?>
