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

Programa: ED16.PHP
Criado em: 07/05/2010
Autor: Ruhan dos Reis

Defini��o:
Indicador ED16 - Percentual de alunos com necessidades especiais. total e por idade.


C�lculo:
N�mero de alunos com declara��o de necessidades especiais / 
Total de alunos matriculados

Par�metros de Entrada (via GET):

...?indicador=III&granularidade=GGG&periodo=PPP&escola=EEE
    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 (rede ou escola)
    PPP = no periodo, em se tratando de um indicador anual, � informado o ano, no formato AAAA (exs: 2010, 2009 etc)
    EEE = codigo da escola, caso a granularidade seja de escola

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 calculado
VVV = valor retornado

Exemplos de retorno:

0;ed15;REDE;2010;fundamental incompleto;20,2
0;ed15;REDE;2010;fundamental completo;20,2

Uma linha para cada n�vel de forma��o

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


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

/* PAR�METROS DE ENTRADA */
$indicador = $_GET["indicador"];
$granularidade = $_GET["granularidade"];

$erro = false;
$codErro = -1;
if (($indicador == "") || ($granularidade == ""))
{
	$erro = true;
	$codErro = 3;
}

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

if (!$erro && $granularidade != "rede" && $granularidade != "escola" )
{
    $erro = true;
	$codErro = 5;	
}

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 '2 a 5' as faixa, count (*) as qt, count (*) / GREATEST((select count(*) From educacao.mat_aluno
							Where extract(year from  age(dtnascimento)) >= 2
							and   extract(year from  age(dtnascimento)) <= 5),1) as valor
From educacao.mat_aluno
Where extract(year from  age(dtnascimento)) >= 2
and   extract(year from  age(dtnascimento)) <= 5
and blnecessidadesespeciais='t'

union

Select '6 a 10' as faixa, count (*) as qt, count (*) / GREATEST((select count(*) From educacao.mat_aluno
							Where extract(year from  age(dtnascimento)) >= 6
							and   extract(year from  age(dtnascimento)) <= 10),1) as valor
From educacao.mat_aluno
Where extract(year from  age(dtnascimento)) >= 6
and   extract(year from  age(dtnascimento)) <= 10
and blnecessidadesespeciais='t'

union

Select '11 a 14' as faixa, count (*) as qt, count (*) / GREATEST((select count(*) From educacao.mat_aluno
							Where extract(year from  age(dtnascimento)) >= 11
							and   extract(year from  age(dtnascimento)) <= 14),1) as valor
From educacao.mat_aluno
Where extract(year from  age(dtnascimento)) >= 11
and   extract(year from  age(dtnascimento)) <= 14
and blnecessidadesespeciais='t'

union

Select 'acima de 14' as faixa, count (*) as qt, count (*) / GREATEST((select count(*) From educacao.mat_aluno
								Where extract(year from  age(dtnascimento)) > 14 ),1) as valor
From educacao.mat_aluno
Where extract(year from  age(dtnascimento)) > 14
and blnecessidadesespeciais='t'" ; 

$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 == "escola" )
{
	/*  Criar uma tabela tempor�ria com o range de idades */
	
	$sql_tab_temp = "
					CREATE TEMPORARY TABLE tmp_idades
					( range varchar(50),
					  min int,
					  max int ) " ;
	
	$result1 = executaQuery( $dbh , $sql_tab_temp ) ;
	
	$sql_ins_temp = "INSERT INTO tmp_idades (range,min,max) VALUES('2-5 anos',2,5);
					 INSERT INTO tmp_idades (range,min,max) VALUES('6-10 anos',6,10);
					 INSERT INTO tmp_idades (range,min,max) VALUES('11-14 anos',11,14);
					 INSERT INTO tmp_idades (range,min,max) VALUES('15 anos em diante',15,100);" ;
	
	$result2 = executaQuery( $dbh , $sql_ins_temp ) ;
	
	/* Efetuar o c�lculo */
	
	$sql = 'select "codEscola", tmp_idades.range,   count (*) as qtd , count(*)/(select count(*) from educacao.mat_aluno, educacao."mat_alunoEscola"
																		where educacao.mat_aluno.codaluno = educacao."mat_alunoEscola"."codAluno") as valor

			from  mat_aluno,tmp_idades,educacao."mat_alunoEscola"
			where extract(year from  age(dtnascimento)) >= tmp_idades.min
			and   extract(year from  age(dtnascimento)) <= tmp_idades.max
			and   blnecessidadesespeciais="t"
			and   codaluno = "codAluno"
			group by tmp_idades.range , "codEscola"
			order by "codEscola" ' ;
			
	$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";
}

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