<?php
include_once './classes/pagina.php';
include_once './classes/questao.php';
include_once './classes/resposta.php';
include_once './classes/sessao.php';
include_once './classes/equipe.php';

class AplicacaoProva extends Pagina {
    
    public function __construct() {
        parent::checarPermissao(array('equipe'));
        parent::__construct();
        if(empty($_REQUEST[executarAcao]) AND empty($_REQUEST[acao]) AND empty($_REQUEST[executarFuncao])) {
            $this->includehead = "<style >
                                    #divtelatoda{
                                        height: 100vh;
                                        width: 100%;
                                        position: fixed;
                                        top: 0%;
                                        left: 0%;
                                        margin-top: -0px;
                                        margin-left: -0px;
                                        opacity: 0.3;
                                        background: #b3ccff;
                                        vertical-align: middle;
                                    }
                                    #mensagemaguarde{
                                        height: 100px;
                                        width: 300px;
                                        position: fixed;
                                        top: 50%;
                                        left: 50%;
                                        margin-top: -50px;
                                        margin-left: -150px;
                                        opacity: 1;
                                        background: #b3ccff;
                                        vertical-align: middle;
                                        text-align: center;
                                        font: bold 1em Arial, sans-serif;
                                    }
                                </style>";//media='(min-width: 480px)'
        }
    }
    
    public function corpo() {
        if($_REQUEST[executarFuncao] == 'salvar'){
            $this->salvar($_REQUEST[questao_id], $_REQUEST[alternativa_id]);
        }else{
            $this->prova();
        }
    }
    
    public function prova(){
        if(empty($_SESSION[equipe_id]) OR empty($_SESSION[provafase_id]) OR empty($_SESSION[datahorainicio])){
            echo "<div class='erro'>Sem sessão!</div>";
            echo "<meta http-equiv = 'Refresh' content = '10;URL=login.php' />Redirecionando para o login... <a href='login.php'>Clique aqui</a> caso não seja redirecionado.";
            exit();
        }
        
        echo "<div id='divtelatoda' style='display:none;'></div>";
        echo "<div id='mensagemaguarde' style='display:none'><blink>Aguarde</blink>, salvando resposta<blink>...</blink><br/><br><font size='1'>Caso esteja demorando, tente utilizar outro navegador ou equipamento.</font></div>";
        
        $questao = new Questao();
        $resposta = new Resposta();
        $equipe = new Equipe();
        
        $objequipe = $equipe->encontrar($_SESSION[equipe_id]);
        
        echo "<h1>$objequipe->prova - Fase $_SESSION[fase]</h1>";
        echo "<h2>$objequipe->id - $objequipe->nome</h2>";
        
        echo "<p>Para ver os dados da equipe <a href='./administrativo/crudequipe.php?acao=editar&fechar=sim' target='_blank'>clique aqui</a></p>";
        
        if($objequipe->pago != 'SIM' AND $equipe->pago != 'ISENTO' AND $objequipe->isentopagamento != 'SIM'){
            echo "<div class='erro'>Essa equipe não tem a inscrição paga!</div>";
            exit();
        }
        if($objequipe->status == 'INATIVO'){
            echo "<div class='erro'>Essa equipe está INATIVA!</div>";
            exit();
        }
        
        echo "<h4>Professor: $equipe->professor</h4>";
        echo "Alunos:";
        foreach($equipe->alunos as $aluno){
            echo "<h4>$aluno->nome</h4>";
        }
        
        echo "<p>Início: ".parent::decodificarData($_SESSION[datahorainicio])."</p>";
        
        $sql = "SELECT questao.*, COALESCE(categoria.descricao, 'CATEGORIA ABERTA') AS categoria 
                FROM imediaco_geo.questao 
                LEFT JOIN imediaco_geo.categoria ON questao.categoria_id = categoria.id 
                WHERE questao.status = 'ATIVO' AND questao.provafase_id = '$_SESSION[provafase_id]'
                ORDER BY questao.numero, categoria.descricao, categoria.id, questao.numero";
        $this->bd->executarSQL($sql);
        $categoria_id = null;
        echo "<table>";
        while($objquestao = $this->bd->getObjeto()){
            if($categoria_id != $objquestao->categoria_id){
                echo "<tr><td colspan='2'><h3>$objquestao->categoria</h3></td></tr>";
                $categoria_id = $objquestao->categoria_id;
            }
            $numeroquestao = $this->formataNumeroQuestao($objquestao->numero);
            echo "<tr><td style='vertical-align: top;'><p><b>$numeroquestao-</b> </p></td><td>$objquestao->descricao</td></tr>";
            echo "<tr><td colspan='2'><span id='spansalvo_{$objquestao->id}'></span><br/></td></tr>";
            $listaalternativas = $questao->encontrarAlternativas($objquestao->id);
            foreach($listaalternativas as $alternativa){
                $checked = ($resposta->existe($_SESSION[equipe_id], $objquestao->id, $alternativa->id))? "checked='checked'" : null;
                $letradescricao = ($alternativa->letra == 'V')? '' : (($alternativa->letra == 'F')? '' : $alternativa->letra);
                $onclick = "onclick=\"document.getElementById('divtelatoda').style.display='table-cell';"
                                    . "document.getElementById('mensagemaguarde').style.display='table-cell';"
                                    . "executarAjax('prova.php?executarFuncao=salvar&questao_id=$objquestao->id&alternativa_id=$alternativa->id');\"";
                echo "<tr><td style='vertical-align: top;'><p class='linhasemquebra'>(<input type='radio' name='questao_$objquestao->id' id='questao_{$objquestao->id}_{$alternativa->letra}' value='$alternativa->id' $checked $onclick /> <b>$letradescricao</b>)</p></td><td>$alternativa->descricao</td></tr>";
                echo "<tr><td colspan='2'><br/></td></tr>";
            }
            echo "<tr><td colspan='2'>";
            echo "<hr/>";
            echo "</td></tr>";
        }
        echo "</table>";
        
        $this->botaoFinalizar();
    }
    
    public function botaoFinalizar(){
        echo "<div style='text-align:center; background-color:#ffffcc;'><input type='button' class='aprovar' style='font-weight:bold;' value='Finalizar a Prova' onclick=\"if(confirm('Você quer confirmar a finalização da prova?\\nSerá aberta uma página para você rever a prova e então confirmar a finalização.')){window.location='finalizacao.php';}\" /></div>";
    }
    
    public function rodape(){
        echo "<footer>"
            . "<br/><div style='text-align:center;'>"
            . "<p>Olimpíada Brasileira de Geográfia</p>"
            . "</div>"
            . "</footer>";
        echo "</body>";
        echo "</html>";
    }

    public function salvar($questao_id, $alternativa_id){
        echo "<script type='text/javascript' class='modoajax'>";
        
        if(empty($_SESSION[equipe_id]) OR empty($_SESSION[provafase_id]) OR empty($_SESSION[datahorainicio])){
            echo "alert('Sua sessão expirou!\\nFaça o login novamente.');";
        }else{
            $sessao = new Sessao();
            $sessao->encontrar($_SESSION[equipe_id], $_SESSION[provafase_id]);
            if(!empty($sessao->datahorafinalizacao)){
                echo "alert('Essa prova já foi finalizada ($sessao->datahorafinalizacao)!\\nNão será registrado mais alterações.');";
            }elseif($_SESSION[datahorafim] < date("Y-m-d H:i:s")){
                echo "alert('O tempo de duração da sua prova terminou!\\nNão será registrado mais alterações.\\nFeche a prova.');";
            }else{
                $resposta = new Resposta();
                $resposta->equipe_id = $_SESSION[equipe_id];
                $resposta->questao_id = $questao_id;
                $resposta->alternativa_id = $alternativa_id;
                $executou = $resposta->salvar();
                if(!$executou){
                    echo "alert('ERRO ao salvar a resposta!\nPossivelmente sua sessão expirou.\\nTente logar novamente.\\nSe não funcionar, utilize outro navegador.');";
                }else{
                    $agora = date('H:i');
                    echo "document.getElementById('divtelatoda').style.display='none';";
                    echo "document.getElementById('mensagemaguarde').style.display='none';";
                    echo "document.getElementById('spansalvo_{$questao_id}').innerHTML=\"<font color='green'>salvo às $agora</font>\";";
                }
            }
        }
        
        echo "</script>";
    }
}

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