<?php
include_once '../classes/relatorio.php';

class Equipes extends Relatorio {
    
    public function __construct() {
        parent::checarPermissao(array('administrador', 'editarequipes'));
        parent::__construct();
    }
    
    public function filtro() {
        echo "<fieldset><legend>Filtro</legend>";
        echo "<input type='hidden' name='filtrou' value='sim' />";
        echo "<table align='center'>";
        $prova_id = (isset($_REQUEST[prova_id]))? $_REQUEST[prova_id] : $_SESSION[prova_id];
        echo "<tr style='display:block'><td>";
        echo "Prova: ";parent::selectProva($prova_id, true, null, "1=1");
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "Número: <input type='text' name='id' value='$_REQUEST[id]' size='5' /> &nbsp; ";
        echo "Nome: <input type='text' name='nome' value='$_REQUEST[nome]' size='30' /> &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "Escola: <input type='text' name='escola' value='$_REQUEST[escola]' size='30' /> &nbsp; ";
        echo "Professor: <input type='text' name='professor' value='$_REQUEST[professor]' size='30' /> &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "Município: <input type='text' name='municipio' value='$_REQUEST[municipio]' size='30' /> &nbsp; ";
        echo "UF: ";parent::montaSelect('uf', array('AC','AL','AM','AP','BA','CE','DF','ES','GO','MA','MG','MS','MT','PA','PB','PE','PI','PR','RJ','RN','RO','RR','RS','SC','SE','SP','TO'), $_REQUEST[uf], false);;echo " &nbsp; ";
        echo "Tipo: ";parent::montaSelect('tipoescola', array('PRIVADA', 'PUBLICA'), $_REQUEST[tipoescola]);echo " &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "Colocação: <input type='text' name='colocacao' value='$_REQUEST[colocacao]' size='4' /> &nbsp; ";
        echo "Medalha: ";parent::montaSelect('medalha', array('OURO', 'PRATA', 'BRONZE'), $_REQUEST[medalha]);echo " &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "Pago: ";parent::montaSelect('pago', array('SIM', 'NÃO', 'ISENTO'), $_REQUEST[pago]);echo " &nbsp; ";
        echo "Status: ";parent::montaSelect('status', array('ATIVO', 'INATIVO'), $_REQUEST[status]);echo " &nbsp; ";
        echo "Iniciaram Fase: ";parent::montaSelect('iniciaramfase', array('1', '2', '3'), $_REQUEST[iniciaramfase]);echo " &nbsp; ";
        echo "Finalizaram Fase: ";parent::montaSelect('finalizaramfase', array('1', '2', '3'), $_REQUEST[finalizaramfase]);echo " &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "Quantidade de Registros por Página: <input type='text' name='limit' value='$_REQUEST[limit]' size='2' /> &nbsp; ";
        $default = ($_REQUEST[colunascalculadas] == 'SIM')? 'SIM' : 'NÃO';
        echo "Mostrar Colunas Calculadas (pontuação, classificação etc): ";parent::montaSelect('colunascalculadas', array('SIM', 'NÃO'), $default);echo " &nbsp; ";
        echo "</td></tr>";
        echo "</table>";
        echo "</fieldset>";
    }

    public function conteudo(){
        $bd = new BD();
        
        $sql = "SELECT provafase.* 
                FROM imediaco_geo.prova 
                INNER JOIN imediaco_geo.provafase ON prova.id = provafase.prova_id 
                WHERE prova.id = '$_REQUEST[prova_id]'";
        $bd->executarSQL($sql);
        $provafase1_id = $provafase2_id = $provafase3_id = -2;
        while($obj = $bd->getObjeto()){
            if($obj->fase == '1') $provafase1_id = $obj->id;
            elseif($obj->fase == '2') $provafase2_id = $obj->id;
            elseif($obj->fase == '3') $provafase3_id = $obj->id;
        }
        
        if($_REQUEST[utilizarfiltro] == 'sim' AND $_REQUEST[filtrou] !== 'sim'){
            $where = $_SESSION[filtrowhereequipe];
        }else{
            $where[] = "equipe.prova_id = '$_REQUEST[prova_id]'";
            if(!empty($_REQUEST[id])) $where[] = "equipe.id = '$_REQUEST[id]'";
            if(!empty($_REQUEST[nome])) $where[] = "equipe.nome LIKE '%$_REQUEST[nome]%'";
            if(!empty($_REQUEST[escola])) $where[] = "equipe.escola LIKE '%$_REQUEST[escola]%'";
            if(!empty($_REQUEST[tipoescola])) {
            if($_REQUEST[tipoescola] == 'PRIVADA') $where[] = "equipe.tipoescola LIKE 'PRIVADA'";
                else $where[] = "equipe.tipoescola NOT LIKE 'PRIVADA'";//todos os outros tipos (estadual, municipal, federal, tecnica, militar)
//                $where[] = "equipe.tipoescola LIKE '$_REQUEST[tipoescola]'";
            }
            if(!empty($_REQUEST[professor])) $where[] = "equipe.professor LIKE '%$_REQUEST[professor]%'";
            if(!empty($_REQUEST[municipio])) $where[] = "equipe.municipio LIKE '%$_REQUEST[municipio]%'";
            if(!empty($_REQUEST[uf])) $where[] = "equipe.uf LIKE '$_REQUEST[uf]'";
            if(!empty($_REQUEST[iniciaramfase])) $where[] = "equipe.id IN (SELECT s.equipe_id FROM imediaco_geo.sessao s INNER JOIN imediaco_geo.provafase pf ON s.provafase_id = pf.id WHERE pf.fase = '$_REQUEST[iniciaramfase]')";
            if(!empty($_REQUEST[finalizaramfase])) $where[] = "equipe.id IN (SELECT s.equipe_id FROM imediaco_geo.sessao s INNER JOIN imediaco_geo.provafase pf ON s.provafase_id = pf.id WHERE pf.fase = '$_REQUEST[finalizaramfase]' AND s.datahorafinalizacao IS NOT NULL)";
            if($_REQUEST[pago] == 'SIM' OR $_REQUEST[pago] == 'ISENTO') $where[] = "equipe.pago = '$_REQUEST[pago]'";
            if($_REQUEST[pago] == 'NÃO') $where[] = "(equipe.pago = 'NÃO' OR equipe.pago IS NULL)";
            if(!empty($_REQUEST[colocacao])) $where[] = "equipe.colocacao = '$_REQUEST[colocacao]'";
            if(!empty($_REQUEST[medalha])) $where[] = "equipe.medalha LIKE '$_REQUEST[medalha]'";
            if(!empty($_REQUEST[status])){
                $inativos = "(equipe.status LIKE 'INATIVO' OR ((equipe.pago = 'NÃO' OR equipe.pago IS NULL) AND prova.isentopagamento <> 'SIM'))";
                if($_REQUEST[status] == 'INATIVO') $where[] = $inativos;
                elseif($_REQUEST[status] == 'ATIVO') $where[] = "!($inativos)";
            }
            $where = implode(' AND ', $where);
            $_SESSION[filtrowhereequipe] = $where;
        }
        
        $limit = (!empty($_REQUEST[limit]) AND $_REQUEST[tipo] == 'html')? "LIMIT $_REQUEST[limit]" : null;
        $offset = (!empty($_REQUEST[limit]) AND !empty($_REQUEST[offset]) AND $_REQUEST[tipo] == 'html')? "OFFSET $_REQUEST[offset]" : null;
        
        $sql = "SELECT equipe.*
                    , CASE WHEN (equipe.pago = 'NÃO' OR equipe.pago IS NULL) AND prova.isentopagamento <> 'SIM' THEN 'NÃO' ELSE equipe.pago END AS pagologico
                    , CASE WHEN (equipe.pago = 'NÃO' OR equipe.pago IS NULL) AND prova.isentopagamento <> 'SIM' THEN 'INATIVO' ELSE equipe.status END AS statuslogico
                FROM imediaco_geo.equipe 
                INNER JOIN imediaco_geo.prova ON equipe.prova_id = prova.id
                WHERE $where 
                ORDER BY equipe.id
                $limit
                $offset";
//echo "$sql";
        $bd->executarSQL($sql);
        
        if($_REQUEST[tipo] != 'xls'){
            echo "<h1>Equipes</h1>";
            echo "<p>Total de registros: ".$bd->getQuantidadeRegistros()."</p>";
        }
        
        echo "<table class='tabelaDados'>";
        echo "<tr>";
        echo "<th>Nº</th>";
        echo "<th>EQUIPE</th>";
        echo "<th>ESCOLA</th>";
        echo "<th>TIPO</th>";
        echo "<th>PROFESSOR</th>";
        echo "<th>CPF</th>";
        echo "<th>E-MAIL</th>";
        echo "<th>MUNICIPIO</th>";
        echo "<th>UF</th>";
        echo "<th>PAGO</th>";
        echo "<th>STATUS</th>";
        
        if($_REQUEST[colunascalculadas] == 'SIM'){
    //        echo "<th>INCIOU FASE 1</th>";
    //        echo "<th>FINALIZOU FASE 1</th>";
            echo "<th>PONTUAÇÃO FASE 1</th>";
            echo "<th>CLASSIFICAÇÃO FASE 1</th>";
            echo "<th>CLASSIFICAÇÃO FASE 1 POR ESTADO</th>";

    //        echo "<th>INICIOU FASE 2</th>";
    //        echo "<th>FINALIZOU FASE 2</th>";
            echo "<th>PONTUAÇÃO FASE 2</th>";
            echo "<th>CLASSIFICAÇÃO FASE 2</th>";
            echo "<th>CLASSIFICAÇÃO FASE 2 POR ESTADO</th>";

            echo "<th>INICIOU FASE 3</th>";
            echo "<th>FINALIZOU FASE 3</th>";
            echo "<th>PONTUAÇÃO FASE 3</th>";
            echo "<th>CLASSIFICAÇÃO FASE 3</th>";
            echo "<th>CLASSIFICAÇÃO FASE 3 POR ESTADO</th>";
            echo "<th>TEMPO DE REALIZAÇÃO FASE 3 EM SEGUNDOS</th>";

            echo "<th>CLASSIFICAÇÃO GERAL</th>";
            echo "<th>CLASSIFICAÇÃO GERAL POR ESTADO</th>";
            echo "<th>SOMA PONTUAÇÃO</th>";
            echo "<th>COLOCAÇÃO NO ESTADO</th>";
            echo "<th>MEDALHA</th>";
        }
        echo "</tr>";
        $i = 0;
        while($obj = $bd->getObjeto()){
            $somapontuacao = 0;
            echo "<tr>";
            echo "<td>$obj->id</td>";
            echo "<td>$obj->nome</td>";
            echo "<td>$obj->escola</td>";
            echo "<td>$obj->tipoescola</td>";
            echo "<td>$obj->professor</td>";
            echo "<td>$obj->professorcpf</td>";
            echo "<td>$obj->professoremail</td>";
            echo "<td>$obj->municipio</td>";
            echo "<td>$obj->uf</td>";
            echo "<td>$obj->pagologico</td>";
            echo "<td>$obj->statuslogico</td>";

            if($_REQUEST[colunascalculadas] == 'SIM'){
    //            $dadosfase = $this->dadosSessao($obj->id, $provafase1_id);
    //            echo "<td>$dadosfase->datahora</td>";
    //            echo "<td>$dadosfase->datahorafinalizacao</td>";
                $pontuacao = $this->pontuacao($obj->id, $provafase1_id);
                echo "<td>$pontuacao</td>";
                $somapontuacao += $pontuacao;
                $classificacao = $this->classificacao($obj->id, $provafase1_id, null);
                echo "<td>$classificacao</td>";
                $classificacao = $this->classificacao($obj->id, $provafase1_id, $obj->uf);
                echo "<td>$classificacao</td>";

    //            $dadosfase = $this->dadosSessao($obj->id, $provafase2_id);
    //            echo "<td>$dadosfase->datahora</td>";
    //            echo "<td>$dadosfase->datahorafinalizacao</td>";
                $pontuacao = $this->pontuacao($obj->id, $provafase2_id);
                $somapontuacao += $pontuacao;
                echo "<td>$pontuacao</td>";
                $classificacao = $this->classificacao($obj->id, $provafase2_id, null);
                echo "<td>$classificacao</td>";
                $classificacao = $this->classificacao($obj->id, $provafase2_id, $obj->uf);
                echo "<td>$classificacao</td>";

                $dadosfase = $this->dadosSessao($obj->id, $provafase3_id);
                echo "<td>$dadosfase->datahora</td>";
                echo "<td>$dadosfase->datahorafinalizacao</td>";
                $pontuacao = $this->pontuacao($obj->id, $provafase3_id);
                $somapontuacao += $pontuacao;
                echo "<td>$pontuacao</td>";
                $classificacao = $this->classificacao($obj->id, $provafase3_id, null);
                echo "<td>$classificacao</td>";
                $classificacao = $this->classificacao($obj->id, $provafase3_id, $obj->uf);
                echo "<td>$classificacao</td>";
                if($dadosfase->temporealizacao) {
                     echo "<td>$dadosfase->temporealizacao</td>";
                }else {
                    echo "<td>não encerrou</td>";
                }

                $classificacao = $this->classificacao($obj->id, -1, null);
                echo "<td>$classificacao</td>";
                $classificacao = $this->classificacao($obj->id, -1, $obj->uf);
                echo "<td>$classificacao</td>";


                echo "<td>$somapontuacao</td>";
                $somapontuacao = 0;

                echo "<td>$obj->colocacao</td>";
                echo "<td>$obj->medalha</td>";
            }

            echo "</tr>";
            $i++;
        }
        echo "</table>";
        
        if($_REQUEST[tipo] == 'html' AND !empty($_REQUEST[limit])){
            $proximooffset = $_REQUEST[offset] + $_REQUEST[limit];
            $anteriroffset = $_REQUEST[offset] - $_REQUEST[limit];
            echo "<br/><div>";
            if($_REQUEST[offset] > 0){ echo "<a href='?tipo=html&prova_id=$_REQUEST[prova_id]&utilizarfiltro=sim&limit=$_REQUEST[limit]&offset=$anteriroffset'>Anterior</a> &nbsp;&nbsp; ";}
            if($bd->getQuantidadeRegistros() > 0){ echo "<a href='?tipo=html&prova_id=$_REQUEST[prova_id]&utilizarfiltro=sim&limit=$_REQUEST[limit]&offset=$proximooffset'>Proximo</a>";}
            echo "</div>";
        }
    }
    
    public function dadosSessao($equipe_id, $provafase_id){
        $sql = "SELECT sessao.datahora, sessao.datahorafinalizacao, TIMESTAMPDIFF(SECOND, sessao.datahora, sessao.datahorafinalizacao ) AS temporealizacao 
                FROM imediaco_geo.sessao  
                WHERE sessao.equipe_id = '$equipe_id' AND sessao.provafase_id = '$provafase_id'";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        
        return $obj;
    }
    
    public function getCampoCalculado($equipe_id, $campo){
        $sql = "SELECT * FROM imediaco_geo.campocalculado WHERE equipe_id = '$equipe_id' AND campo = '$campo'";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        
        return $obj->valor;
    }
    
    public function pontuacao($equipe_id, $provafase_id=-1){
        $campo = "pontuacao provafase $provafase_id";
        $sql = "SELECT * FROM imediaco_geo.campocalculado WHERE equipe_id = '$equipe_id' AND campo = '$campo'";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        if(!empty($obj->id)) return $obj->valor;
        
        return null;
        
        $sql = "SELECT imediaco_geo.pontuacao($equipe_id, $provafase_id) AS pontuacao";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        
        return $obj->pontuacao;
    }

    public function classificacao($equipe_id, $provafase_id=-1, $uf=null){
        $campo = "classificacao provafase $provafase_id uf $uf";
        $sql = "SELECT * FROM imediaco_geo.campocalculado WHERE equipe_id = '$equipe_id' AND campo = '$campo'";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        if(!empty($obj->id)) return $obj->valor;
        
        return null;
        
        $where = (!empty($uf))? "equipe.uf = '$uf'" : '1=1';
        $sql = "SELECT equipe.id
                FROM imediaco_geo.equipe
                WHERE $where
                ORDER BY 
                    imediaco_geo.pontuacao(equipe.id, $provafase_id) DESC
                    , (
                        SELECT CASE WHEN s.datahorafinalizacao IS NOT NULL THEN CAST(TIMESTAMPDIFF(MICROSECOND, s.datahora, s.datahorafinalizacao) AS UNSIGNED) ELSE CAST(999999999999 AS UNSIGNED) END 
                        FROM imediaco_geo.sessao s 
                        WHERE s.equipe_id = equipe.id AND s.provafase_id = (SELECT MAX(pf.fase) FROM imediaco_geo.provafase pf WHERE pf.prova_id = ".$this->prova_id." ORDER BY pf.fase DESC)
                        ) -- tempo de realizacao da ultima fase da prova
                    , equipe.id";
        $this->bd->executarSQL($sql);
        $classificacao = 1;
        while($obj = $this->bd->getObjeto()){
            if($obj->id == $equipe_id) return $classificacao;
            $classificacao++;
        }
        return $classificacao;
    }
}

$pagina = new Equipes();
$pagina->montar();
