public function processar_prova_tri_process($pk_exa_area, $pk_exa_prova, $pk_livro) { $data = $this->getParametroVisao(); $data['page'] = 'home'; $data['abaPage'] = __FUNCTION__; $data['abaAtiva'] = $this->AbaAtiva; try { $sqlConcurso = new SqlConcurso(); $data['titulo'] = $sqlConcurso->get_titulo_lista_materias($pk_exa_prova); $pk_exa_concurso = $data['titulo'][0]['pk_exa_concurso']; $pk_turma = $_SESSION['turmas_process']; $total = count($_SESSION['turmas_process']); $data['total'] = $total; // Se já tiver ocorrido algum redirecionamento, faz um incremento. Caso contrário, inicia a contagem if (isset($_GET['counter'])) { $counter = $_GET['counter'] + 1; } else { $counter = 0; } // carrega a library e envia as variáveis a função "loop_refresh" $this->load->library('util'); $data['redirect_delay'] = $this->util->loop_refresh('1', base_url() . 'exames/eva/processar_prova_tri_process/' . $pk_exa_area . '/' . $pk_exa_prova . '/' . $pk_livro, $counter, $total); // Se o contador for menor que o total de registros da array, efetua o processamento com base na turma da vez if ($counter < $total) { $sqlConcurso = new SqlConcurso(); $materias = $sqlConcurso->get_gabarito_materias($pk_exa_prova); $sqlEva = new SqlEva(); $result = $sqlEva->get_turma($pk_turma[$counter]); $pk_unidade = !empty($result) ? $result[0]['fk_unidade'] : 0; $data['status'] = !empty($result) && $pk_turma[$counter] != 0 ? $result[0]['turma_nome'] : ''; $sqlEva->reset_alunos_prova($pk_exa_prova, $pk_livro, $pk_turma[$counter]); $sqlEva->reset_alunos_media($pk_exa_prova, $pk_livro, $pk_turma[$counter]); $result = $sqlEva->get_alunos_prova($pk_exa_prova, $pk_turma[$counter]); foreach ($result['registros'] as $row) { //echo $row['nome'].'<br />'; $sqlEva = new SqlEva(); $pontuacao_materia_final = 0; foreach ($materias as $mat) { //echo $mat['exa_materia_nome'].'<br />'; // pega os capitulos da matéria $capitulos = $sqlEva->get_capitulos_materia($pk_exa_prova, $mat['pk_exa_materia']); $total_capitulos = count($capitulos); $pontuacao_materia = 0; foreach ($capitulos as $cap) { //echo '.... Capitulo:'. $cap['fk_capitulo'].'<br />'; $questoes_capitulos = $sqlEva->get_gabarito_capitulo_aluno($pk_exa_prova, $mat['pk_exa_materia'], $cap['fk_capitulo'], $row['fk_usuario_aluno']); $total_questoes_capitulo = count($questoes_capitulos); $pontuacao = 0; $pontuacao_facil = 0; $pontuacao_media = 0; $pontuacao_dificil = 0; foreach ($questoes_capitulos as $gab) { if ($total_questoes_capitulo == 1) { if ($gab['gabarito'] == $gab['resposta']) { $pontuacao = 100; } } else { if ($total_questoes_capitulo == 2) { if ($gab['gabarito'] == $gab['resposta']) { if ($gab['nivel_questao_aluno'] == 2) { $pontuacao_media = 1; } else { $pontuacao_dificil = 1; } } else { $pontuacao = 0; } } else { if ($total_questoes_capitulo == 3) { if ($gab['gabarito'] == $gab['resposta']) { if ($gab['nivel_questao_aluno'] == 1) { $pontuacao_facil = 1; } else { if ($gab['nivel_questao_aluno'] == 2) { $pontuacao_media = 1; } else { $pontuacao_dificil = 1; } } } else { $pontuacao = 0; } } } } } // if ($total_questoes_capitulo == 1) { } else { if ($total_questoes_capitulo == 2) { if ($pontuacao_media == 1 && $pontuacao_dificil == 1) { $pontuacao = 100; } else { if ($pontuacao_media == 1 && $pontuacao_dificil == 0) { $pontuacao = 46.51; } else { if ($pontuacao_media == 0 && $pontuacao_dificil == 1) { $pontuacao = 51.16; } else { $pontuacao = 0; } } } } else { if ($total_questoes_capitulo == 3) { if ($pontuacao_facil == 1 && $pontuacao_media == 1 && $pontuacao_dificil == 1) { $pontuacao = 100; } else { if ($pontuacao_facil == 0 && $pontuacao_media == 1 && $pontuacao_dificil == 1) { $pontuacao = 69.04000000000001; } else { if ($pontuacao_facil == 1 && $pontuacao_media == 0 && $pontuacao_dificil == 1) { $pontuacao = 64.40000000000001; } else { if ($pontuacao_facil == 1 && $pontuacao_media == 1 && $pontuacao_dificil == 0) { $pontuacao = 61.92; } else { if ($pontuacao_facil == 0 && $pontuacao_media == 0 && $pontuacao_dificil == 1) { $pontuacao = 34.77; } else { if ($pontuacao_facil == 0 && $pontuacao_media == 1 && $pontuacao_dificil == 0) { $pontuacao = 30.96; } else { if ($pontuacao_facil == 1 && $pontuacao_media == 0 && $pontuacao_dificil == 0) { $pontuacao = 28.8; } else { if ($pontuacao_facil == 0 && $pontuacao_media == 0 && $pontuacao_dificil == 0) { $pontuacao = 0; } } } } } } } } } } } $pontuacao_materia = $pontuacao_materia + $pontuacao; //echo '---------- Total de questões:'.$total_questoes_capitulo.'<br/>'; //echo '---------- Facil:'.$pontuacao_facil.'<br/>'; //echo '---------- Media:'.$pontuacao_media.'<br/>'; //echo '---------- Dificil:'.$pontuacao_dificil.'<br/>'; //echo '---------- Pontuacao final:'.$pontuacao.'<br/>'; $sqlEva->insert_capitulo_aluno($pk_exa_concurso, $pk_exa_prova, $mat['pk_exa_materia'], $row['fk_usuario_aluno'], $cap['fk_capitulo'], $pk_turma[$counter], $pk_unidade, $pk_livro, $pontuacao); } $media_tri = $pontuacao_materia / $total_capitulos; $sqlEva->insert_medias_alunos_materias($pk_exa_concurso, $pk_exa_prova, $mat['pk_exa_materia'], $row['fk_usuario_aluno'], $pk_turma[$counter], $pk_unidade, $pk_livro, $media_tri); // echo '---------------- Média da matérias: '.$media_tri.'<br/><br/>'; } } } else { $this->session->set_flashdata('msg', '<div class="alert ok">Dados do EVA processados com sucesso!</div>'); $this->load->library('util'); $data['redirect_delay'] = $this->util->redirect_delay(1, 'exames/concurso/listar_materias/' . $pk_exa_prova); } } catch (Exception $e) { $msg = '<p class="alert erro">' . $e->getMessage() . '</p>'; } $this->load->view($this->load->getUrlTema(), $data); }
public function checa_alunos($pk_exa_area, $pk_exa_prova, $pk_exa_arquivo) { $data = $this->getParametroVisao(); $data['page'] = 'home'; $data['abaPage'] = __FUNCTION__; $data['alias'] = __FUNCTION__; $data['abaAtiva'] = $this->AbaAtiva; $sqlConcurso = new SqlConcurso(); $data['titulo'] = $sqlConcurso->get_titulo_lista_materias($pk_exa_prova); if ($_SERVER['REQUEST_METHOD'] == "POST") { try { //$this->benchmark->mark('code_start'); // pega as questões $resultGab = $sqlConcurso->listar_gabarito_prova($pk_exa_prova); $n_questoes = $resultGab['total']; // pega o nome do arquivo $result = $sqlConcurso->get_arquivo($pk_exa_arquivo); $arquivo = $result['registros'][0]['arquivo_nome']; $file = file("uploadArquivos/easyTols/exames/" . $arquivo . ""); // conta o total de linhas $totalLinhas = count($file); // define as colunas iniciais dos cartões do cartão a ser lido $colIni = 15; $i = 0; foreach ($file as $linha) { $i++; $ponteiro = $i - 1; $pk_usuario_aluno = (int) substr($linha, 0, 16); $sql_insert = 'INSERT INTO exa.exa_resposta (fk_usuario_aluno, fk_exa_gabarito, resposta, pontuacao, fk_exa_prova) VALUES '; $conta = 0; foreach ($resultGab['registros'] as $row) { //var_dump($row); $conta++; $colunaAluno = $colIni + $conta; $resposta = substr($linha, $colunaAluno, 1); //var_dump($file[$ponteiro]); if ($row['anulada'] != 1) { $gab = explode(',', $row['gabarito']); foreach ($gab as $gab_final) { if ($gab_final == $resposta) { $valorQuestao = $row['peso_questao']; break; } else { $valorQuestao = 0; } } } else { $valorQuestao = 0; } $sql_insert .= "(" . $pk_usuario_aluno . ", " . $row['pk_exa_gabarito'] . ", '" . $resposta . "', " . $valorQuestao . ", " . $pk_exa_prova . ")"; if ($conta < $n_questoes) { $sql_insert .= ', '; } echo $pk_usuario_aluno . ' - ' . $row['gabarito'] . ' - ' . $row['anulada'] . ' - ' . $row['peso_questao'] . ' - ' . $resposta . ' - ' . $valorQuestao . '<br />'; } echo $sql_insert; echo '<hr />'; $sqlConcurso->insert_respostas_aluno($sql_insert, $pk_usuario_aluno, $pk_exa_prova); } //$this->benchmark->mark('code_end'); //echo $this->benchmark->elapsed_time('code_start', 'code_end'); $sqlConcurso->atualizar_arquivo($pk_exa_arquivo, 1, 1); $this->session->set_flashdata('msg', '<div class="alert ok">O arquivo está pronto para processado!</div>'); redirect(base_url() . $this->uri->segment(1) . '/' . $this->uri->segment(2) . '/processar_cartoes/' . $this->uri->segment(4) . '/' . $this->uri->segment(5)); return false; } catch (Exception $e) { $msg = '<p class="alert erro">' . $e->getMessage() . '</p>'; } } // pega o nome do arquivo e o tipo de cartão $result = $sqlConcurso->get_arquivo($pk_exa_arquivo); $data['arquivo'] = $result['registros'][0]['arquivo_nome']; $data['pk_exa_arquivo'] = $result['registros'][0]['pk_exa_arquivo']; $file = file("uploadArquivos/easyTols/exames/" . $data['arquivo'] . ""); $data['total'] = count($file); if ($data['total'] > 0) { $this->load->library('table'); $arrHead[] = 'Cod'; $arrHead[] = 'Aluno'; $arrHead[] = 'Turma'; $this->table->set_heading($arrHead); $count = 0; $count_erros = 0; foreach ($file as $linha) { // seta a pk do aluno o sua marcação $pk_usuario_aluno = (int) substr($linha, 0, 16); // busca o código do aluno na base de dados $result = $sqlConcurso->get_aluno($pk_usuario_aluno); $nome = !empty($result) != 0 ? $result[0]['nome'] : ''; $turma_nome = !empty($result) != 0 ? $result[0]['turma_nome'] : ''; if (count($result) == 0) { $count_erros++; } $data['erros'] = $count_erros; $count++; $tmpl = Util::zebrar($count, count($result)); $this->table->add_row($pk_usuario_aluno, $nome, $turma_nome); } $this->table->set_template($tmpl); } else { $data['msg'] = '<div class="alert atencao">Nenhum registro encontrado</div>'; } $this->load->view($this->load->getUrlTema(), $data); }