Arquivos
projetosti/sti.php
T
2017-10-30 14:53:43 -02:00

235 linhas
11 KiB
PHP

<?php
$json = json_decode(file_get_contents("php://input")); // o php://input recebe o json que o sisto está enviando
//$json = json_decode(file_get_contents("json/respostas.json"));//decodifica o arquivo json e transforma em vetor
$existeJson = @$json[0]->{'id_aluno'}; // Verifica se existe o json
if($existeJson!=""){ // SE existir um json
moduloPedagogico(); //chama o módulo pedagógico passando o $json como parametro
}else{ // se nao existir um json
echo "NAO EXISTE ATIVIDADE CADASTRADA AINDA PARA ESTE ASSUNTO E ESTA RODADA"; // mensagem de informação
}
function moduloPedagogico(){//funcao módulo pedagógico
$porcentagem = moduloAluno();//chamar a função do módulo ALUNO depois recebe o retorno da porcentagemcalculada na função
global $json; //pegar vetor $json de maneira global
$rodada = $json[0]->{'rodada'};//criar variavel $rodada que extrai o valor da rodada do vetor $json
//criar estratégia
if($porcentagem >=60){
moduloEspecialista("proximo_assunto");//chamar o módulo ESPECIALISTA
}else if($porcentagem <60){
if($rodada <3)//verifica se a rodada é menor que 3
moduloEspecialista("nova_rodada");//chamar módulo ESPECIALISTA
else echo "Motivo da Discussão";// aparece mensagem se o aluno passou pelas 3 rodadas mas não atingiu o objetivo
}
}
function moduloAluno(){//modulo aluno recebe por paramentro a variavel $json que contem os valores decodificados do json
global $json;
require("conexao.php");// faz conexão com o banco
$id_aluno= $json[0]->{'id_aluno'};//criar variavel $id_aluno que extrai o valor id_aluno do vetor $json
$rodada = $json[0]->{'rodada'};//criar variavel $rodada que extrai o valor da rodada do vetor $json
$id_assunto = $json[0]->{'id_assunto'};//criar variavel $id_aluno que extrai o valor do id_aluno do vetor $json
$bateria_de_atividades = $json[0]->{'bateria_de_atividades'};
$correto=0;
$incorreto=0;
$respostas = $json[0]->{'respostas'};//criar variavel $respostas que extrai o valor respostas do vetor json -esta variavel será um vetor pois há mais de uma resposta.
$cont = count($respostas); //conta o numero de respostas tem dentro do vetor
$bateria = md5("$id_aluno-$id_assunto-$rodada");
$relatorio_aluno = "";
$x=0; //percorre respostas do aluno
while($x <$cont){ //entra no laço de repetição para extarir os valores do vetor
$id_atividade = $respostas[$x]->{'id_atividade'}; //criar variavel $id_atividade para extrair o valor vo vetor $respostas[$x]->{'id_atividade'}
$resposta_aluno = $respostas[$x]->{'resposta_aluno'};//criar variavel $resposta_aluno para extrair o valor vo vetor $respostas[$x]->{'resposta_aluno'}
$alternativa_marcada= $respostas[$x]->{'alternativa_marcada'};//criar variavel $alternativa_marcada para extrair o valor vo vetor $respostas[$x]->{'alternativa_marcada'}
$query = mysqli_query ($conexao, "INSERT INTO respostas (id_aluno, id_atividade,id_assunto, rodada, resposta_aluno, alternativa_marcada, bateria) VALUES ('$id_aluno', '$id_atividade', '$id_assunto', '$rodada', '$resposta_aluno', '$alternativa_marcada', '$bateria')") or die(mysqli_error($conexao)); /*insere os valores extraidos do vetor na tabela respostas*/
//GERA RELATÓRIO PARA ALUNO
$json_relatorios_alunos = array(); // cria array para gerar o JSON relatório
$relatorio_aluno = mysqli_query($conexao, "SELECT * FROM bd_atividades WHERE id_atividade=$id_atividade");
//Busca na tabela atividades as atividades respondidas pelo aluno
while($resposta_banco = mysqli_fetch_array($relatorio_aluno)){ //percorre linhas do banco de dados
$json_relatorio_aluno = array();
$alternativa_marcada_letra='';
if($alternativa_marcada == 0) $alternativa_marcada_letra = 'a';
if($alternativa_marcada == 1) $alternativa_marcada_letra = 'b';
if($alternativa_marcada == 2) $alternativa_marcada_letra = 'c';
if($alternativa_marcada == 3) $alternativa_marcada_letra = 'd';
if($alternativa_marcada == 4) $alternativa_marcada_letra = 'e';
$z = $x+1;
$json_relatorio_aluno["questao"] = $z;
$json_relatorio_aluno["desc_atividade"] = $resposta_banco["desc_atividade"];
$json_relatorio_aluno["alternativa_marcada_letra"] = $alternativa_marcada_letra;
$json_relatorio_aluno["alternativa_marcada"] = $resposta_banco["alternativa$alternativa_marcada"];
//Se a resposta do aluno for igual a resposta do banco de dados para esta atividade
if($resposta_banco["alternativa_correta"] == $alternativa_marcada_letra){
$json_relatorio_aluno["resultado"] = "ACERTOU!!"; // Mostra acertou
}else{ //Caso contrário
$json_relatorio_aluno["resultado"]="INCORRETO!! Motivo do erro: ". $resposta_banco["justificativa_erro_alternativa$alternativa_marcada"];// mostra erro e o motivo do erro $resposta_banco["justificativa_erro_alternativa$alternativa_marcada"];
}
array_push($json_relatorios_alunos, $json_relatorio_aluno); //adiciona o relatorio do aluno no array principal
}
$json_relatorio = json_encode($json_relatorios_alunos, JSON_PRETTY_PRINT);
echo $json_relatorio; // gera relatório e envia JSON para o SISTO exibir para o aluno
//FIM DO GERAR RELATORIO
//verifica quantos errou e quantos acertou para calcular porcentagem
if($resposta_aluno == "certa"){// compara se a resposta do aluno é igual a "certa" pra poder contar o numero de acertos
$correto++; //incrementa o numero de acertos
}else if($resposta_aluno == "errada"){//compara se a resposta do aluno é igual a "errada" pra poder contar o numero de erros
$incorreto++;//incrementa o numero de erros
}
$x++; /*incrementa $x*/
}
$porcentagem = ($correto*100)/$bateria_de_atividades; //faz cálculo da porcentagem de acertos e/ou erros
$query = mysqli_query ($conexao, "INSERT INTO historico (id_aluno, porcentagem, bateria) VALUES ('$id_aluno', '$porcentagem', '$bateria')") or die(mysqli_error($conexao));
return $porcentagem;//retorna porcentagem
}
//A função para o módulo do especialista tem como objetivo receber o resultado da avaliação feito pelo moduloPedagogico (que no caso será se o aluno vai para o próximo assunto ou se faz uma nova rodada no mesmo assunto), e gera uma nova bateria de atividades de acordo com este resultado, e grava o arquivo json resultante em disco.
function moduloEspecialista($resultado_avaliacao){
require("conexao.php");
global $json;
$query = "";
$id_aluno= $json[0]->{'id_aluno'};
$id_assunto=$json[0]->{'id_assunto'};
$rodada= $json[0]->{'rodada'};
$bateria_de_atividades = $json[0]->{'bateria_de_atividades'};
// Se o resultado da avaliacao do moduloPedagogico for igual a proximo_assunto, entao o moduloEspecialista somar um ao id_assunto, representando que o aluno irá para o próximo assunto, e determina que iniciará na rodada 1 e gera a query para selecionar mais atividades de acordo com o resultado anterior.
if($resultado_avaliacao == "proximo_assunto"){
$id_assunto++;
$query = "SELECT * FROM bd_atividades WHERE rodada='1' AND id_assunto='$id_assunto' LIMIT $bateria_de_atividades";
}
//Caso contrário, caso o resultado da avaliacao seja nova_rodada, o moduloEspecialista irá somar um na rodada, representando que o aluno irá continuar no mesmo assunto e indo para uma nova rodada
else if($resultado_avaliacao == "nova_rodada"){
$rodada++;
$query = "SELECT * FROM bd_atividades WHERE rodada='$rodada' AND id_assunto='$id_assunto' LIMIT $bateria_de_atividades";
}
$query=mysqli_query($conexao, $query) or die(mysqli_error($conexao));
$array_atividades= array();
while($sql = mysqli_fetch_array($query)) {
$array_atividade=array();
$id_atividade = $sql['id_atividade'];
$array_atividade["id_atividade"]=$id_atividade;
$id_assunto = $sql['id_assunto'];
$array_atividade["id_assunto"]=$id_assunto;
$desc_atividade = $sql['desc_atividade'];
$array_atividade["desc_atividade"]=$desc_atividade;
$imagem_atividade = $sql['imagem_atividade'];
//Uma modificação foi feita no código funcionar no SISTO PARA MOBILE
$array_imagem_atividade = array();
$array_imagens_atividade = array();
if($imagem_atividade==""){
$array_imagem_atividade["imagem_atividade"] = "http://localhost/tcc_7/"."transparente.png";
$array_imagem_atividade["tamanho"] = 1;
}else{
$array_imagem_atividade["imagem_atividade"]="http://localhost/tcc_7/".$imagem_atividade;
$array_imagem_atividade["tamanho"] = 100;
}
array_push($array_imagens_atividade, $array_imagem_atividade);
$array_atividade["atividade"]=$array_imagens_atividade;
//FIM da Modificação para funcionar no SISTO PARA MOBILE
$x=1;
$array_alternativas = array();
//O array_alternativas foi criado para armazenar os dados das novas atividades vindas do banco de dados, facilitando assim a criação do arquivo json para armazenamento em disco.
while($x<=5){
$array_alternativa = array();
$alternativa[$x]= $sql["alternativa$x"];
$array_alternativa["alternativa"]=$alternativa[$x];
$imagem_alternativa[$x] = $sql["imagem_alternativa$x"];
//Modificação para funcionar no SISTO PARA MOBILE
if($imagem_alternativa[$x]==""){
$array_alternativa["imagem_alternativa"] = "http://localhost/tcc_7/"."transparente.png";
$array_alternativa["tamanho"] = 1;
}else{
$array_alternativa["imagem_alternativa"] = "http://localhost/tcc_7/".$imagem_atividade;
$array_alternativa["tamanho"] = 100;
}
//FIM da Modificação para funcionar no SISTO PARA MOBILE
$array_alternativa["imagem_alternativa$x"]="http://localhost/tcc_7/".$imagem_alternativa[$x];
$justificativa_erro_alternativa[$x]=$sql["justificativa_erro_alternativa$x"];
$array_alternativa["justificativa_erro_alternativa$x"]=$justificativa_erro_alternativa[$x];
array_push($array_alternativas, $array_alternativa);
$x++;
}
$array_atividade["alternativas"] =$array_alternativas;
$alternativa_correta = $sql['alternativa_correta'];
$array_atividade['alternativa_correta']=$alternativa_correta;
$rodada = $sql['rodada'];
$array_atividade['rodada']=$rodada;
$assunto = $sql['assunto'];
$array_atividade['assunto']=$assunto;
$data_de_cadastro = $sql['data_de_cadastro'];
$array_atividade['data_de_cadastro']=$data_de_cadastro;
array_push($array_atividades, $array_atividade);
}
$json_atividades = json_encode($array_atividades, JSON_PRETTY_PRINT); //a função do javascript json_encode() serve para codificar/comprimir o $array_atividades para um formato JSON. O JSON_PRETTY_PRINT serve pra organizar o JSON
$nome_do_arquivo = "$id_aluno-$id_assunto-$rodada.json"; // esta variável recebe o id_aluno, id_assunto e $rodada de acordo com o resultado dado pelo modulo pedagogico. Eles são todos concatenados juntamente com o nome da pasta json/ antes e com a string .json no final para representar o tipo dele.
$arquivo = fopen("json/".$nome_do_arquivo, "w"); //a função fopen do PHP cria em disco o arquivo com o nome especificado.
fwrite($arquivo, $json_atividades); //função que grava o json_atividades contendo os dados das novas atividades dso aluno em JSON em disco (HDD).
echo "GEROU ".$nome_do_arquivo;
fclose($arquivo); //tira o arquivo da memória temporária
}