<?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>>
 */

<?php

// define a fun��o somente se ela j� n�o existe
if(! function_exists("converteVar") )
{
	function converteVar ($variavel) {
		if( $variavel == null) {
	 		$variavel = "null";
		}
		else {
	 		$variavel = "'$variavel'";
		}		
		return $variavel;
	}
}
/**
 * Fun��o insere ou atualiza um documento automaticamente
 * ela identifica se o documento j� existe e, se sim, somente faz um update
 * @param $dbh
 * @param $codpessoa
 * @param $idtipodocumento
 * @param $numero
 * @param $apresentado
 * @param $pathFrente
 * @param $pathVerso
 * @param $idestado
 * @param $idorgao
 * @param $data_emissao
 * @param $serie
 * @param $folha
 * @param $idtipo_certidao
 * @param $termo
 * @param $livro
 * @param $cartorio
 * @param $zona
 * @param $secao
 * @return unknown_type
 */
function insereDocumentoCabComum(
		$dbh,
		$codpessoa,
		$idtipodocumento,
		$numero,
		$apresentado	= false,
		$pathFrente 	= null,
		$pathVerso 		= null,
		$idestado 		= null,
		$idorgao 		= null,
		$data_emissao 	= null,
		$serie 			= null,
		$folha 			= null,
		$idtipo_certidao= null,
		$termo 			= null,
		$livro 			= null,
		$cartorio 		= null,	
		$zona 			= null,
		$secao 			= null,
		$matricula		= null
	)
{
	//echo ("Entrei em insereDocumentoCabComum");
	// trabalha as variaveis
	$numero 		= converteVar($numero);
	$apresentado 	= converteVar($apresentado);
	$idestado 		= converteVar($idestado);
	$idorgao 		= converteVar($idorgao);
	$data_emissao 	= converteVar($data_emissao);
	$serie 			= converteVar($serie);
	$folha 			= converteVar($folha);
	$idtipo_certidao= converteVar($idtipo_certidao);
	$termo 			= converteVar($termo);
	$livro 			= converteVar($livro);
	$cartorio 		= converteVar($cartorio);	
	$zona 			= converteVar($zona);
	$secao 			= converteVar($secao);
	$matricula		= converteVar($matricula);

	// verifica se tem alguma imagem para salvar
	$idfrente = "null";
	$idverso = "null";
	//echo ('pathFrente = '.$pathFrente);
	if( $pathFrente != null  && $pathFrente != "")
	{
		$idfrente = registraImagem($dbh,$pathFrente);
		if( $idfrente == false)
		{
			return false;
		}
		//die($idfrente.'/'.$pathFrente);
		//$idfrente = "'$idfrente'";	Comentado por Victor Paulo, dia 14/06; preciso que seja um tipo v�lido Oid.
	}
	if( $pathVerso != null && $pathVerso != "" )
	{
		$idverso = registraImagem($dbh,$pathVerso);
		if( $idverso == false)
		{
			return false;
		}
		//die($idverso.'/'.$pathVerso);
		//$idverso = "'$idverso'";	Comentado por Victor Paulo, dia 14/06; preciso que seja um tipo v�lido Oid.
	}
	// verifica se o documento j� existe ou n�o
	
	if( ehAtualizacao($dbh,$codpessoa,$idtipodocumento) )
	{
		
		$sql_imagens_anteriores = "SELECT img_documento_frente, 
       									 img_documento_verso
  								  FROM cabcomum.pessoa_documento 
  								  WHERE idpessoa = $codpessoa 
  								  AND idtipo_documento = $idtipodocumento";
		$resFoto = executaQuery($dbh, $sql_imagens_anteriores);
		$linhaFoto = pg_fetch_array($resFoto);
		
			
		if( $idfrente == "null" )
		{
			//die($linhaFoto['img_documento_frente'] == null) ;
			if($linhaFoto['img_documento_frente'] != null){
				$idfrente = $linhaFoto['img_documento_frente'];
			}
			
		}
		
		if( $idverso == "null" )
		{
			if($linhaFoto['img_documento_verso'] != null){
				$idverso = $linhaFoto['img_documento_verso'];
			}
			
		}
		
		// atualiza a documenta��o
		$sql = "
		UPDATE cabcomum.pessoa_documento
   		SET 
   			numero				 = $numero, 
   			idestado			 = $idestado, 
   			idorgao				 = $idorgao, 
       		data_emissao		 = $data_emissao, 
       		serie				 = $serie, 
       		folha				 = $folha, 
       		idtipo_certidao		 = $idtipo_certidao, 
       		termo				 = $termo, 
       		livro				 = $livro, 
       		cartorio			 = $cartorio, 
       		img_documento_frente = $idfrente,
       		zona				 = $zona, 
       		secao				 = $secao, 
       		apresentado			 = $apresentado, 
       		data_atualizacao	 = current_timestamp,
       		img_documento_verso  = $idverso,
       		matricula_certidao 	 = $matricula
 		WHERE 
 			idpessoa 			= $codpessoa 
 		AND idtipo_documento	= $idtipodocumento
		";
	}
	else
	{
		// insere novo documento
		$sql = "
		INSERT INTO cabcomum.pessoa_documento(
	            idpessoa, 
	            idtipo_documento, 
	            numero, 
	            idestado, 
	            idorgao, 
	            data_emissao, 
	            serie, 
	            folha, 
	            idtipo_certidao, 
	            termo, 
	            livro, 
	            cartorio, 
	            img_documento_frente, 
	            zona, 
	            secao, 
	            apresentado, 
	            data_criacao, 
	            data_atualizacao, 
	            img_documento_verso,
	            matricula_certidao
	    )
	    VALUES (
		    	$codpessoa, 
		    	$idtipodocumento, 
		    	$numero, 
		    	$idestado, 
		    	$idorgao, 
		    	$data_emissao, 
		        $serie, 
		        $folha, 
		        $idtipo_certidao, 
		        $termo, 
		        $livro, 
		        $cartorio, 
		        $idfrente, 
		        $zona, 
		        $secao, 
		        $apresentado, 
		        current_timestamp, 
		        current_timestamp, 
		        $idverso,
		        $matricula);	
		";
	}
	
	//die($sql);
	$result = executaQuery($dbh,$sql);    
   if (!$result)
   {   
		//die($sql);
		return false;    
   }
   return true;
}
/**
 * Indica se � uma atualiza��o de documento ou inser��o
 * @param $dbh
 * @param $codpessoa
 * @param $tipodocumento
 * @return unknown_type
 */
function ehAtualizacao($dbh, $codpessoa,$tipodocumento)
{
	$sql = "SELECT 1 FROM cabcomum.pessoa_documento WHERE idpessoa = $codpessoa AND idtipo_documento = $tipodocumento ";
	$result = executaQuery($dbh,$sql);
	$resultado = false;
	if( pg_num_rows($result) > 0 )
		$resultado = true;
	pg_free_result($result);
	
	return $resultado;
}

function registraImagem($dbh,$filename)
{
	// Open and read the file that was uploaded
	$fp = fopen($filename, "r");
	
	if ($fp == false) {
		return false;
	}
	 
	// Begin a PostgreSQL transaction
	executaQuery($dbh, "begin");
	
	// create the large object and get the lo id
	$lo_id = pg_locreate($dbh);
	
	// have postgresql open the large object for writing
	$lo_fp = pg_loopen($dbh, $lo_id, "w");

	 // for ever 8192 bytes of the uploaded file
	while($nbytes = fread($fp, 8192)) {
	
		// write to the large object
	   	$tmp = pg_lowrite($lo_fp, $nbytes);
	
		// handle possible error
	   	if($tmp < $nbytes) {
			return false;	   		
	   	}
	}
	// close the large object
	pg_loclose($lo_fp);
	
	// commit the postgresql transaction
	executaQuery($dbh, "commit");

	// close the uploaded file
	fclose($fp);
	
	if (!is_int($lo_id)) {
		   // return false
		return false;
	}
	
	return $lo_id;
}

function insereDocumentos($_identificador,
							 $_tipoidentificador,
							 $_blnis,
                             $_nis,
                             $_blniscomprovado,
                             $_blnisdigitalizado,
                             $_pathnisfrente,
                             $_pathnisverso,
                             $_blcpf,
                             $_cpf,
                             $_blcpfcomprovado,
                             $_blcpfdigitalizado,
                             $_patthcpffrente,
                             $_pathcpfverso,
                             $_blreg,
                             $_rg,
                             $_rguf,
                             $_rgemissao,
                             $_rgorgaoemissor,
                             $_blrgcomprovado,
                             $_blrgdigitalizado,
                             $_pathrgfrente,
                             $_pathrgverso,
                             $_blcarteiratrabalho,
                             $_carteiratrabalho,
                             $_carteiratrabalhoserie,
                             $_carteiratrabalhouf,
                             $_carteiratrabalhoemissao,
                             $_blcarteiratrabalhocomprovado,
                             $_blcarteiratrabalhodigitalizado,
                             $_pathcarteiratrabalhofrente,
                             $_pathcarteiratrabalhoverso,                             
                             $_bltituloeleitor,
                             $_tituloeleitor,
                             $_tituloeleitorzona,
                             $_tituloeleitorsecao,
                             $_bltituloeleitorcomprovado,
                             $_bltituloeleitordigitalizado,
                             $_pathtituloeleitorfrente,
                             $_pathtituloeleitorverso,
                             $_blpis,
                             $_pis,
                             $_blpiscomprovado,
                             $_blpisdigitalizado,
                             $_pathpisfrente,
                             $_pathpisverso,
                             $_blcertidao,
							 $_certidaoMatricula, 
                             $_tipocertidao,
                             $_datacertidao,
 							 $_folhacertidao,
 							 $_termocertidao,
 							 $_livrocertidao,
 							 $_cartoriocertidao,
 							 $_blcomprovadocertidao,
 							 $_bldigitalizadocertidao,
 							 $_pathcertidaofrente,
 							 $_pathcertidaoverso,
 							 $_blcarteiramotorista,
 							 $_registrocarteiramotorista,
 							 $_blcomprovadocarteiramotorista,
 							 $_bldigitalizadocarteiramotorista,
 	                         $_pathcarteiramotoristafrente, 
 							 $_pathcarteiramotoristaverso,
 							 $dbh,
 							 $_pathdiploma = null)                      
{
	//die($_blnis);
	$_blnis = converteVar($_blnis);
    $_nis = converteVar($_nis);
    $_blniscomprovado = converteVar($_blniscomprovado);
    $_blnisdigitalizado = converteVar($_blnisdigitalizado);
    $_pathnisfrente = converteVar($_pathnisfrente);
    $_pathnisverso = converteVar($_pathnisverso);
    $_blcpf = converteVar($_blcpf);
    $_cpf = converteVar($_cpf);
    $_blcpfcomprovado = converteVar($_blcpfcomprovado);
    $_blcpfdigitalizado = converteVar($_blcpfdigitalizado);
    $_patthcpffrente = converteVar($_patthcpffrente);
    $_pathcpfverso = converteVar($_pathcpfverso);
    $_blreg = converteVar($_blreg);
    $_rg = converteVar($_rg);
    $_rguf = converteVar($_rguf);
    $_rgemissao = converteVar($_rgemissao);
    $_rgorgaoemissor = converteVar($_rgorgaoemissor);
    $_blrgcomprovado = converteVar($_blrgcomprovado);
    $_blrgdigitalizado = converteVar($_blrgdigitalizado);
    $_pathrgfrente = converteVar($_pathrgfrente);
    $_pathrgverso = converteVar($_pathrgverso);
    $_blcarteiratrabalho = converteVar($_blcarteiratrabalho);
    $_carteiratrabalho = converteVar($_carteiratrabalho);
    $_carteiratrabalhoserie = converteVar($_carteiratrabalhoserie);
    $_carteiratrabalhouf = converteVar($_carteiratrabalhouf);
    $_carteiratrabalhoemissao = converteVar($_carteiratrabalhoemissao);
    $_blcarteiratrabalhocomprovado = converteVar($_blcarteiratrabalhocomprovado);
    $_blcarteiratrabalhodigitalizado = converteVar($_blcarteiratrabalhodigitalizado);
    $_pathcarteiratrabalhofrente = converteVar($_pathcarteiratrabalhofrente);
    $_pathcarteiratrabalhoverso = converteVar($_pathcarteiratrabalhoverso);                             
    $_bltituloeleitor = converteVar($_bltituloeleitor);
    $_tituloeleitor = converteVar($_tituloeleitor);
    $_tituloeleitorzona = converteVar($_tituloeleitorzona);
    $_tituloeleitorsecao = converteVar($_tituloeleitorsecao);
    $_bltituloeleitorcomprovado = converteVar($_bltituloeleitorcomprovado);
    $_bltituloeleitordigitalizado = converteVar($_bltituloeleitordigitalizado);
    $_pathtituloeleitorfrente = converteVar($_pathtituloeleitorfrente);
    $_pathtituloeleitorverso = converteVar($_pathtituloeleitorverso);
    $_blpis = converteVar($_blpis);
    $_pis = converteVar($_pis);
    $_blpiscomprovado = converteVar($_blpiscomprovado);
    $_blpisdigitalizado = converteVar($_blpisdigitalizado);
    $_pathpisfrente = converteVar($_pathpisfrente);
    $_pathpisverso = converteVar($_pathpisverso);
    $_blcertidao = converteVar($_blcertidao);
	$_certidaoMatricula = converteVar($_certidaoMatricula);
    $_tipocertidao = converteVar($_tipocertidao);
    $_datacertidao = converteVar($_datacertidao);
 	$_folhacertidao = converteVar($_folhacertidao);
 	$_termocertidao = converteVar($_termocertidao);
 	$_livrocertidao = converteVar($_livrocertidao);
 	$_cartoriocertidao = converteVar($_cartoriocertidao);
 	$_blcomprovadocertidao = converteVar($_blcomprovadocertidao);
 	$_bldigitalizadocertidao = converteVar($_bldigitalizadocertidao);
 	$_pathcertidaofrente = converteVar($_pathcertidaofrente);
 	$_pathcertidaoverso = converteVar($_pathcertidaoverso);
 	$_blcarteiramotorista = converteVar($_blcarteiramotorista);
 	$_registrocarteiramotorista = converteVar($_registrocarteiramotorista);
 	$_blcomprovadocarteiramotorista = converteVar($_blcomprovadocarteiramotorista);
 	$_bldigitalizadocarteiramotorista = converteVar($_bldigitalizadocarteiramotorista);
 	$_pathcarteiramotoristafrente = converteVar($_pathcarteiramotoristafrente); 
 	$_pathcarteiramotoristaverso = converteVar($_pathcarteiramotoristaverso);
 	$_pathdiploma = converteVar($_pathdiploma);
 
	$sql = "INSERT INTO mat_documentos(		
	
	    \"identificador\",
		\"tipoidentificador\",
		\"blnis\",
		\"nis\",
		\"blniscomprovado\",
		\"blnisdigitalizado\",
		\"pathnisfrente\",
		\"pathnisverso\",	
		\"blcpf\",
		\"cpf\",
		\"blcpfcomprovado\",
		\"blcpfdigitalizado\",
		\"patthcpffrente\",
		\"pathcpfverso\",	
		\"blreg\",
		\"rg\",
		\"rguf\",
		\"rgemissao\",
		\"rgorgaoemissor\",
		\"blrgcomprovado\",
		\"blrgdigitalizado\",
		\"pathrgfrente\",
		\"pathrgverso\",	
		\"blcarteiratrabalho\",
		\"carteiratrabalho\",
		\"carteiratrabalhoserie\",
		\"carteiratrabalhouf\",
		\"carteiratrabalhoemissao\",
		\"blcarteiratrabalhocomprovado\",
		\"blcarteiratrabalhodigitalizado\",
		\"pathcarteiratrabalhofrente\",
		\"pathcarteiratrabalhoverso\",	
		\"bltituloeleitor\",
		\"tituloeleitor\",
		\"tituloeleitorzona\",
		\"tituloeleitorsecao\",
		\"bltituloeleitorcomprovado\",
		\"bltituloeleitordigitalizado\",	
		\"pathtituloeleitorfrente\",
		\"pathtituloeleitorverso\",	
		\"blpis\",
		\"pis\",
		\"blpiscomprovado\",
		\"blpisdigitalizado\",
		\"pathpisfrente\",
		\"pathpisverso\",	
		\"blcertidao\",
		\"tipocertidao\",
		\"datacertidao\",
		\"folhacertidao\",
		\"termocertidao\",
		\"livrocertidao\",
		\"cartoriocertidao\",
		\"blcomprovadocertidao\",
		\"bldigitalizadocertidao\",
		\"pathcertidaofrente\",
		\"pathcertidaoverso\",	
		\"blcarteiramotorista\",
		\"registrocarteiramotorista\",
		\"blcomprovadocarteiramotorista\",
		\"bldigitalizadocarteiramotorista\",
		\"pathcarteiramotoristafrente\",
		\"pathcarteiramotoristaverso\",
		\"certidaoMatricula\",
		pathdiploma

	) VALUES ( 
	
	 	$_identificador,	
	 	$_tipoidentificador,
	 	$_blnis,
	 	$_nis,
	 	$_blniscomprovado,
	 	$_blnisdigitalizado,
	 	$_pathnisfrente,
	 	$_pathnisverso,	 	
	 	$_blcpf,
	 	$_cpf,
	 	$_blcpfcomprovado,
	 	$_blcpfdigitalizado,
	 	$_patthcpffrente,
	 	$_pathcpfverso,	 	
	 	$_blreg,
	 	$_rg,
	 	$_rguf,
	 	$_rgemissao,
	 	$_rgorgaoemissor,
	 	$_blrgcomprovado,
	 	$_blrgdigitalizado,
	 	$_pathrgfrente,
	 	$_pathrgverso,	 	
	 	$_blcarteiratrabalho,
	 	$_carteiratrabalho,
	 	$_carteiratrabalhoserie,
	 	$_carteiratrabalhouf,
	 	$_carteiratrabalhoemissao,
	 	$_blcarteiratrabalhocomprovado,
	 	$_blcarteiratrabalhodigitalizado,
	 	$_pathcarteiratrabalhofrente,
	 	$_pathcarteiratrabalhoverso,
	 	$_bltituloeleitor,
	 	$_tituloeleitor,
	 	$_tituloeleitorzona,
	 	$_tituloeleitorsecao,
	 	$_bltituloeleitorcomprovado,
	 	$_bltituloeleitordigitalizado,
	 	$_pathtituloeleitorfrente,
	 	$_pathtituloeleitorverso,
	 	$_blpis,
	 	$_pis,
	 	$_blpiscomprovado,
	 	$_blpisdigitalizado,
	 	$_pathpisfrente,
	 	$_pathpisverso,
	 	$_blcertidao,
	 	$_tipocertidao,
	 	$_datacertidao,
	 	$_folhacertidao,
	 	$_termocertidao,
	 	$_livrocertidao,
	 	$_cartoriocertidao,
	 	$_blcomprovadocertidao,
	 	$_bldigitalizadocertidao,
	 	$_pathcertidaofrente,
	 	$_pathcertidaoverso,
	 	$_blcarteiramotorista,
	 	$_registrocarteiramotorista,
	 	$_blcomprovadocarteiramotorista,
	 	$_bldigitalizadocarteiramotorista,
	 	$_pathcarteiramotoristafrente, 
	 	$_pathcarteiramotoristaverso,
		$_certidaoMatricula,
		$_pathdiploma
 	)";

	//echo nl2br($sql); exit;
	$result =  executaQuery($dbh,$sql);
	//echo $result; exit;
	if(!$result)
	{
		return false;		
	}
	$sql = cleanSql($sql);
	$textoScript .= $sql . ';';
	
	return true;
} 