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

class Equipes extends Relatorio {
    
    const WHEREATIVOS = "!(equipe.status LIKE 'INATIVO' OR ((equipe.pago = 'NÃO' OR equipe.pago IS NULL) AND prova.isentopagamento <> 'SIM'))";
    
    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 "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 "</td></tr>";
        echo "</table>";
        echo "</fieldset>";
    }

    public function conteudo(){
        $bd = new BD();
        
        if($_REQUEST[utilizarfiltro] == 'sim' AND $_REQUEST[filtrou] !== 'sim'){
            $where = $_SESSION[filtrowhereequipe];
        }else{
            $where[] = "equipe.prova_id = '$_REQUEST[prova_id]' AND ".self::WHEREATIVOS;
            if(!empty($_REQUEST[uf])) $where[] = "equipe.uf LIKE '$_REQUEST[uf]'";
            $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.*
                FROM imediaco_geo.equipe 
                INNER JOIN imediaco_geo.prova ON equipe.prova_id = prova.id
                WHERE $where 
                ORDER BY equipe.uf, CASE equipe.medalha WHEN 'OURO' THEN 1 WHEN 'PRATA' THEN 2 WHEN 'BRONZE' THEN 3 ELSE 4 END, equipe.nome
                $limit
                $offset";
//echo "$sql";
        $bd->executarSQL($sql);
        
        echo "<div align='center'>";
        
        $i = 0;
        $uf = null;
        $totalativas = 0;
        $totalouro = $totalprata = $totalbronze = 0;
        $pontuacaomedalhamelhor = 0;
        $pontuacaomedalhapior = 999999999;
        while($obj = $bd->getObjeto()){
            if($uf != $obj->uf){
                if(!empty($uf)){
                    echo "</table>";
                    echo "<br/>";
                    echo "<div align='center'>";
                    echo "<b>Total de equipes inscritas:</b> $totalativas<br/>";
                    echo "<b>Número de equipes com medalha de Ouro:</b> $totalouro<br/>";
                    echo "<b>Número de equipes com medalha de Prata:</b> $totalprata<br/>";
                    echo "<b>Número de equipes com medalha de Bronze:</b> $totalbronze<br/>";
                    echo "<b>Total de equipes premiadas:</b> ".($totalouro + $totalprata + $totalbronze)."<br/>";
                    echo "<font size='1'><b>Nota da primeira equipe premiada com Ouro:</b> ".round($pontuacaomedalhamelhor, 4)."</font><br/>";
                    echo "<font size='1'><b>Nota da última equipe premiada com Bronze:</b> ".round($pontuacaomedalhapior, 4)."</font><br/>";
                    echo "</div>";
                    echo "<hr/><br/><br/>";
                }
                
                echo "<h1>".parent::$UFESTADO[$obj->uf]."</h1>";
                echo "<table class='tabelaDados' align='center'>";
                echo "<tr>";
                echo "<th>Nº</th>";
                echo "<th>EQUIPE</th>";
                echo "<th>PROFESSOR</th>";
                echo "<th>EMAIL</th>";
                echo "<th>ESCOLA</th>";
                echo "<th>TIPO</th>";
                echo "<th>MUNICIPIO</th>";
                echo "<th>UF</th>";
                echo "<th>FASE 1</th>";
                echo "<th>FASE 2</th>";
                echo "<th>GERAL</th>";
                echo "<th>CLASSIFICAÇÃO</th>";
                echo "<th>MEDALHA</th>";
                echo "</tr>";
                
                $uf = $obj->uf;
                $totalativas = 0;
                $totalouro = $totalprata = $totalbronze = 0;
                $pontuacaomedalhamelhor = 0;
                $pontuacaomedalhapior = 999999999;
            }
            
            if(!empty($obj->medalha)){
                if($obj->medalha == 'OURO'){
                    $totalouro++;
                    $corlinha = '#ffffcc';
                }elseif($obj->medalha == 'PRATA'){
                    $totalprata++;
                    $corlinha = '#e6e6e6';
                }elseif($obj->medalha == 'BRONZE'){
                    $totalbronze++;
                    $corlinha = '#ffd699';
                }
                
                echo "<tr style='background-color: $corlinha;' bgcolor='$corlinha'>";
                echo "<td>$obj->id</td>";
                echo "<td>$obj->nome</td>";
                echo "<td>$obj->professor</td>";
                echo "<td>$obj->professoremail</td>";
                echo "<td>$obj->escola</td>";
                echo "<td>$obj->tipoescola</td>";
                echo "<td>$obj->municipio</td>";
                echo "<td>$obj->uf</td>";
                $pontuacaoTotal = $this->pontuacao($obj->id,$this->findIdFase($_REQUEST[prova_id],1));
                echo "<td>$pontuacaoTotal</td>";
                $pontuacaoTotal = $this->pontuacao($obj->id,$this->findIdFase($_REQUEST[prova_id],2));
                echo "<td>$pontuacaoTotal</td>";
                $pontuacaoTotal = $this->pontuacao($obj->id,-1);
                echo "<td>$pontuacaoTotal</td>";
                echo "<td>$obj->colocacao</td>";
                echo "<td>$obj->medalha</td>";
                echo "</tr>";
            }
            
//            $classificacaouf = $this->classificacao($obj->id, -1, $obj->uf);
            
            $totalativas++;
            
            if(!empty($obj->medalha)){
                $pontuacaogeralequipe = $this->pontuacao($obj->id, -1);
                if($pontuacaogeralequipe > $pontuacaomedalhamelhor) $pontuacaomedalhamelhor = $pontuacaogeralequipe;
                if($pontuacaogeralequipe < $pontuacaomedalhapior) $pontuacaomedalhapior = $pontuacaogeralequipe;
            }

            $i++;
        }
        if(!empty($uf)){
                    echo "</table>";
                    echo "<br/>";
                    echo "<div align='center'>";
                    echo "<b>Total de equipes inscritas:</b> $totalativas<br/>";
                    echo "<b>Número de equipes com medalha de Ouro:</b> $totalouro<br/>";
                    echo "<b>Número de equipes com medalha de Prata:</b> $totalprata<br/>";
                    echo "<b>Número de equipes com medalha de Bronze:</b> $totalbronze<br/>";
                    echo "<b>Total de equipes premiadas:</b> ".($totalouro + $totalprata + $totalbronze)."<br/>";
                    echo "<font size='1'><b>Nota da primeira equipe premiada com Ouro:</b> ".round($pontuacaomedalhamelhor, 4)."</font><br/>";
                    echo "<font size='1'><b>Nota da última equipe premiada com Bronze:</b> ".round($pontuacaomedalhapior, 4)."</font><br/>";
                    echo "</div>";
                    echo "<hr/><br/><br/>";
        }
        
        echo "</div>";
    }
    
    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;
    }

    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;
    }

    public function findIdFase($prova_id, $fase){

        $sql = "SELECT id FROM imediaco_geo.provafase WHERE prova_id = $prova_id and fase = $fase";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        if(!empty($obj->id)) return $obj->id;
        
        return null;
    }
}

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