<?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: AS2.PHP
Criado em: 22/02/2010
Autor: Gustavo Moreira

Definição:
    Esse script calcula o indicador AS2 - Índice de Desempenho Mensal dos CRAS

    
Cálculo:
    (Número de atendimentos realizados por mês nos CRAS) / 440
    

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

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

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

/* VALIDAR A ENTRADA DE DADOS */

//obrigatoriedade dos parâmetros
if (($indicador == "") || ($granularidade == "") || ($periodo == ""))
{
    echo "3";
    exit;
}

//indicador correto
if (strtoupper($indicador) != "AS2")
{
    echo "2";
    exit;
}

if (($granularidade != "município") && ($granularidade != "cras") && ($granularidade != "municipio"))
{
    echo "5";
    exit;
}

//verificar se é uma data válida
list($mes,$ano) = split("/",$periodo);
$data_aux = date_create("$mes/01/$ano"); //formato do date_create (mes/dia/ano)
        
if (!$data_aux)
{
    echo "4";
    exit;    
};

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


/* Efetuar o cálculo */
$sql = "SELECT  c.numerocras, nomefantasiacras, ROUND(  COUNT(*)  / (quantidadeequipecras * 440.0)  ,4) as valor 
        FROM VISITA v
        INNER JOIN CRAS c on c.numerocras = v.numerocras
        WHERE  DATE_PART('month',DATAVISITA)  = $mes
         AND   DATE_PART('year',DATAVISITA)  = $ano
        group by c.numerocras, nomefantasiacras, quantidadeequipecras ";
        
if ($granularidade != "cras")
{
    $result=pg_query($dbh, $sql);    
    
    if (pg_num_rows($result) == 0 )
    {
        echo "1";    
        exit;
    }
    
    $qt = 0;
    $total = 0;
    
    //pegar cada valor de cada CRAS e fazer a média entre todos eles
    while ($row = pg_fetch_array($result))
    {
        $qt++;
        $total = $total + $row["valor"];
    }    
    
    $valor = round($total / $qt, 4) ;
    $valor = str_replace(".",",",$valor);
    
    //Escrever a resposta
    echo "0;$indicador;Nova Iguaçu;$periodo;$valor";
}
else
{
    $retorno = "";    
        
    $result=pg_query($dbh, $sql);
    
    if (pg_num_rows($result) == 0 )
    {
        echo "1";    
        exit;
    }
    
    while ($row = pg_fetch_array($result))
    {
        $nome = trim($row["nomefantasiacras"]);
        $numerocras = $row["numerocras"];
        
        $valor = str_replace(".",",",$row["valor"]);
        
        //Escrever a resposta
        if ($retorno!="")
        {
            $retorno = $retorno . "\n";            
        }        
        $retorno = $retorno . "0;$indicador;$nome;$periodo;$valor";
    }    
    echo $retorno;    
}


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

?>