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>'; } } }