public function processar_concurso($pk_sim_concurso_tipo, $pk_sim_concurso)
 {
     $data = $this->getParametroVisao();
     $data['page'] = 'home';
     $data['tema'] != '' ? $this->load->setTheme($data['tema']) : '';
     $data['msg'] = $this->getMsg();
     $data['abaAtiva'] = 18;
     $data['abaPage'] = 'processar_concurso';
     $data['alias'] = 'processar_concurso';
     if ($this->uri->segment(5) != '') {
         try {
             // cria tabela temporária
             $sqlAdministracao = new SqlAdministracao();
             $sqlAdministracao->temp_table_alunos_concurso();
             // SELECIONA OS ALUNOS COM SUAS RESPECTIVAS NOTAS NAS PROVAS DO CONCURSO
             //
             // pega as matérias e provas do concurso com suas respectivas pk_sim_concurso_gabarito
             $sqlAdministracao = new SqlAdministracao();
             $materias_provas = $sqlAdministracao->get_materias_provas_concurso($pk_sim_concurso);
             foreach ($materias_provas['registros'] as $materia_prova) {
                 // pega os alunos do concurso
                 $sqlAdministracao = new SqlAdministracao();
                 $alunos = $sqlAdministracao->get_alunos_provas_concurso($materia_prova['fk_sim_prova'], $materia_prova['fk_sim_materia']);
                 foreach ($alunos as $aluno) {
                     echo $materia_prova['fk_sim_concurso'] . ' - ' . $materia_prova['pk_sim_concurso_gabarito'] . ' - ' . $aluno['fk_sim_prova'] . ' - ' . $aluno['fk_sim_materia'] . ' - ' . $aluno['fk_usuario_aluno'] . ' - ' . $aluno['media_prova'] . ' - ' . $aluno['nome'] . '<br />';
                     // insere os alunos com as notas de cada matéria na tabela temporária
                     $sqlAdministracao = new SqlAdministracao();
                     $sqlAdministracao->insert_temp_table_alunos_provas_concurso($materia_prova['fk_sim_concurso'], $materia_prova['pk_sim_concurso_gabarito'], $aluno['fk_sim_prova'], $aluno['fk_sim_materia'], $aluno['fk_usuario_aluno'], $aluno['media_prova']);
                 }
             }
             // PROCESSA OS RANKINGS
             // pega as pk_sim_concurso_gabarito
             $sqlAdministracao = new SqlAdministracao();
             $concursos_gabaritos = $sqlAdministracao->listar_concursos_gabaritos($pk_sim_concurso);
             foreach ($concursos_gabaritos['registros'] as $concursos_gabarito) {
                 echo $concursos_gabarito['pk_sim_concurso_gabarito'] . ')<br />';
                 // pega as matérias e pesos de cada sequencia
                 $sqlAdministracao = new SqlAdministracao();
                 $materias = $sqlAdministracao->listar_materias_concurso($concursos_gabarito['pk_sim_concurso_gabarito']);
                 foreach ($materias['registros'] as $materia) {
                     echo '.........' . $materia['fk_sim_materia'] . '<br />';
                     // pega os alunos do referido concurso e matéria
                     $sqlAdministracao = new SqlAdministracao();
                     $alunos = $sqlAdministracao->get_temp_table_alunos_concurso($concursos_gabarito['pk_sim_concurso_gabarito'], $materia['fk_sim_materia']);
                     foreach ($alunos as $aluno) {
                         echo '---------------- ' . $aluno['fk_usuario_aluno'] . '<br />';
                         $media_ponderada = $materia['peso_concurso'] * $aluno['media_concurso'];
                         // atualiza a tabela temporária com as médias ponderadas
                         $sqlAdministracao = new SqlAdministracao();
                         $sqlAdministracao->update_temp_table_alunos_concurso($concursos_gabarito['pk_sim_concurso_gabarito'], $materia['fk_sim_materia'], $aluno['fk_usuario_aluno'], $media_ponderada);
                     }
                 }
             }
             echo '<hr />';
             // reseta as médias do concurso
             $sqlAdministracao = new SqlAdministracao();
             $sqlAdministracao->reset_media_concurso($pk_sim_concurso);
             // pega os códigos dos alunos do concurso
             $sqlAdministracao = new SqlAdministracao();
             $alunos = $sqlAdministracao->get_temp_table_alunos_concurso_distinct();
             foreach ($alunos as $aluno) {
                 echo $aluno['fk_usuario_aluno'] . ')<br />';
                 // pega as notas dos alunos
                 $sqlAdministracao = new SqlAdministracao();
                 $notas = $sqlAdministracao->get_temp_table_alunos_concurso_notas($aluno['fk_usuario_aluno']);
                 $media_final = 0;
                 $n_materias = 0;
                 foreach ($notas as $nota) {
                     echo '--------' . $nota['media_concurso'] . ' - ' . $nota['media_ponderada'] . '<br />';
                     $media_final = $media_final + $nota['media_ponderada'];
                     $n_materias++;
                 }
                 echo '........................................................' . $media_final . '<br />';
                 // insere as notas finais dos alunos
                 $sqlAdministracao = new SqlAdministracao();
                 $sqlAdministracao->insert_medias_concurso($aluno['fk_sim_concurso'], $aluno['fk_sim_prova'], $aluno['fk_usuario_aluno'], $media_final, $n_materias);
             }
             $this->session->set_flashdata('msg', '<div class="alert ok">Médias processadas com sucesso!</div>');
             redirect(base_url() . $this->uri->segment(1) . '/' . $this->uri->segment(2) . '/processar_concurso_ranking/' . $this->uri->segment(4) . '/' . $this->uri->segment(5));
             return false;
         } catch (Exception $e) {
             $msg = '<p class="alert erro">' . $e->getMessage() . '</p>';
         }
     }
 }