Example #1
0
 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);
 }
Example #2
0
 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);
 }