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

<?/***********************************************************


Programa: ED9.PHP
Iniciado em: 27/07/2010
Concluido em: 28/07/2010
Autor: Ruhan dos Reis

Defini��o:
Percentual de alunos reprovados em um dado ano vis a vis ano anterior(total, masculino e feminino ).
Rede, escola e escolaridade.


C�lculo:
(N�mero de alunos reprovados / N�mero de alunos matriculados) * 100


Par�metros de Entrada (via GET):

    ...?indicador=III&granularidade=GGG&periodo=PPP
    III = no indicador, em caixa baixa, � informado o seu c�digo
    GGG = na granularidade, em caixa baixa e sem acentua��o, � informada o nome da granularidade desejada
    PPP = no periodo, em se tratando de um indicador mensal, � informado o m�s e ano, no formato MM/AAAA (exs: 01/2010, 02/2010 etc)
    
    Exemplo de Entrada:
    ...?indicador=as2&granularidade=cras&periodo=01/2010
    
Sa�da:

    Formato do retorno
        CCC;III;G1;PPP;VVV
        CCC = c�digo de retorno da chamada ao Calculador
        III = c�digo do indicador retornado, em caixa baixa
        G1 = nome do gr�o retornado (string, pode estar acentuado e com letras ma�usculas e min�sculas)
        PPP = per�odo de refer�ncia do valor retornado
        VVV = valor retornado
        
    Exemplos de retorno:
    
        0;as2;CRAS;1;01/2010;13,2
        0;as2;CRAS;10;01/2010;10,2
        0;as2;CRAS Austin;11;01/2010;11
        
        C�digos de Retorno:

0 - Sucesso
1 - N�o tenho valor
2 - N�o sou eu

3 - Um ou mais Par�metros obrigat�rios faltando
4 - Um ou mais Par�metros fora do formato esperado
5 - Granularidade invalida

************************************************************/

$indicador = $_GET["indicador"];
$granularidade = $_GET["granularidade"];
$periodo = $_GET["periodo"];

/* VALIDAR A ENTRADA DE DADOS */
	
	$ano = date("Y");

//obrigatoriedade dos par�metros
$erro = false;
$codErro = -1;
if (($indicador == "") || ($granularidade == "") || ($periodo == ""))
{
	$erro = true;
	$codErro = 3;
    
}

//indicador correto
if (!$erro && strtoupper($indicador) != "ED9")
{
    $erro = true;
	$codErro = 2;
}

$periodo = intval($periodo);
if(!$erro && ($periodo < 2009 || $periodo > 2030) )
{
	$erro = true;
	$codErro = 4;
}
if( $erro )
{
	echo "$codErro";
	exit;
}


/* INICIAR CONEX�O COM BANCO DE DADOS (CRAS) */
require "../includes/begin.php";

/* Efetuar o c�lculo */

if( $granularidade == "rede" )
{
	$sql = "select 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) * 100 as valor
			from  educacao.mat_aluno as a
			where sexo = 'M'
			and   a.blaprovadoultimaescolaridade = 'f'
			and   date_part('year',dtingresso) <= $periodo or dtingresso is null
				

			union

			select 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) * 100 as valor
			from  educacao.mat_aluno as a
			where sexo = 'F'
			and   a.blaprovadoultimaescolaridade = 'f' 
			and   date_part('year',dtingresso) <= $periodo or dtingresso is null
			" ;
			

	$result=executaQuery($dbh, $sql);
	
	if (pg_num_rows($result) == 0 )
	{
		echo "1";
		exit;
	}
	
	$row = pg_fetch_array($result);
	$valor = str_replace(".",",",$row["valor"]);
	//Escrever a resposta
	echo "0;$indicador;$granularidade;$periodo;$valor";
}

else if( $granularidade == "escolaridade" )
{
		$sql = "ESCOLARIDADE:

--Infantil 2

select 'Infantil 2' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 1
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Infantil 2' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 1
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

-- Infantil 3

select 'Infantil 3' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 3
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Infantil 3' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 3
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

--Infantil 4

select 'Infantil 4' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 4
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Infantil 3' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 4
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

--Infantil 5 

select 'Infantil 5' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 5
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Infantil 5' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 5
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

--Primeiro ano

select 'Primeiro ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 2
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Primeiro ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 2
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union 

--Segundo ano

select 'Segundo ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 7
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Segundo ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 7
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

--Terceiro ano

select 'Terceiro ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 8
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Terceiro ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 8
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

--Quarto ano

select 'Quarto ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 9
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

select 'Quarto ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 9
and   date_part('year',dtingresso) <= $periodo or dtingresso is null


union

--Quinto ano

select 'Quinto ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 6
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'Quinto ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 6
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--Sexto ano

select 'Sexto ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 10
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'Sexto ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 10
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--S�timo ano

select 'Setimo ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 11
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'Setimo ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 11
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--Oitavo ano

select 'Oitavo ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 12
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'Oitavo ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 12
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--Nono ano

select 'Nono ano' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 13
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'Nono ano' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 13
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 1

select 'EJA 1' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 14
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 1' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 14
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 2

select 'EJA 2' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 15
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 2' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 15
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 3

select 'EJA 3' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 16
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 3' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 16
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 4

select 'EJA 4' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 17
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 4' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 17
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 5

select 'EJA 5' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 18
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 5' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 18
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 6

select 'EJA 6' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 19
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 6' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 19
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 7

select 'Infantil 3' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 20
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 7' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 20
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

--EJA 8

select 'EJA 8' as escolaridade , 'Masculino' as sexo , count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'M'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 21
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

union

select 'EJA 8' as escolaridade , 'Feminino' as sexo, count (*)/(select count(*) from educacao.mat_aluno) as percent
from  educacao.mat_aluno as a
where sexo = 'F'
and   a.blaprovadoultimaescolaridade = 'f' 
and   ultimaescolaridadealuno = 21
and   date_part('year',dtingresso) <= $periodo or dtingresso is null

order by escolaridade";

	$result=executaQuery($dbh, $sql);
	
	if (pg_num_rows($result) == 0 )
	{
		echo "1";
		exit;
	}
	
	$row = pg_fetch_array($result);
	$valor = str_replace(".",",",$row["percent"]);
	//Escrever a resposta
	echo "0;$indicador;$granularidade;$periodo;$valor";


	
}

else if( $granularidade == "escola" )
{
	$sql = "CREATE TEMPORARY TABLE mat_sexo
			(
			codigo character(1) NOT NULL,
			nome character varying(9)
			);

			INSERT INTO mat_sexo(codigo,nome) VALUES ('F', 'FEMININO');
			 INSERT INTO mat_sexo(codigo,nome) VALUES ('M', 'MASCULINO');

			SELECT esc.'codEscola', sex.nome, count(codaluno) / (select count(*) from educacao.mat_aluno) as percent
			FROM educacao.mat_aluno alu
			INNER JOIN mat_sexo sex ON (sex.codigo = alu.sexo)
			INNER JOIN educacao.'mat_alunoEscola' esc ON (esc.'codAluno' = alu.codaluno)
			WHERE blaprovadoultimaescolaridade = 'f'
			AND   dtingresso <= $periodo
			GROUP BY esc.'codEscola',sex.nome;" ;
	
	$result=executaQuery($dbh, $sql);
	
	if (pg_num_rows($result) == 0 )
	{
		echo "1";
		exit;
	}
	
	$row = pg_fetch_array($result);
	$valor = str_replace(".",",",$row["percent"]);
	//Escrever a resposta
	echo "0;$indicador;$granularidade;$periodo;$valor";
	
}

/* ENCERRAR CONEX�O COM BANCO DE DADOS */
include "../includes/end.php";
