public function junta_provas($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'] = 'junta_provas'; $data['alias'] = 'junta_provas'; if ($this->uri->segment(5) != '') { try { // deleta eventuais gabaritos do concurso atual $sqlAdministracao = new SqlAdministracao(); $sqlAdministracao->delete_concurso_gabarito($pk_sim_concurso); // cria tabela temporária $sqlAdministracao = new SqlAdministracao(); $sqlAdministracao->temp_table(); // pega os blocos do concurso $sqlAdministracao = new SqlAdministracao(); $blocos = $sqlAdministracao->get_blocos($pk_sim_concurso); // pega as provas do concurso $sqlAdministracao = new SqlAdministracao(); $provas = $sqlAdministracao->get_provas_concurso($pk_sim_concurso); $pks_provas = array(); foreach ($provas['registros'] as $prova) { // echo $prova['pk_sim_prova'].'<br />'; $pks_provas[] = $prova['pk_sim_prova']; } // pega todos os alunos, inclusive os que participaram de pelo menos uma prova $sqlAdministracao = new SqlAdministracao(); $alunos = $sqlAdministracao->get_alunos_provas($pks_provas); $materias_concurso = array(); foreach ($alunos['registros'] as $aluno) { echo $aluno['fk_usuario_aluno'] . '<br />'; // pega a provas que cada aluno participou $sqlAdministracao = new SqlAdministracao(); $provas_alunos = $sqlAdministracao->get_provas_alunos($aluno['fk_usuario_aluno'], $pk_sim_concurso); foreach ($provas_alunos['registros'] as $row) { echo $row['fk_usuario_aluno'] . ' - ' . $row['fk_sim_concurso'] . ' - ' . $row['fk_sim_bloco'] . ' - ' . $row['fk_sim_area'] . ' - ' . $row['fk_sim_prova'] . ' - ' . $row['fk_sim_materia'] . ' - ' . $row['area_nome'] . ' - ' . $row['prova_nome'] . '<br />'; // inclui os dados na tabela temporária $sqlAdministracao = new SqlAdministracao(); $sqlAdministracao->insert_temp_table($row['fk_usuario_aluno'], $row['fk_sim_concurso'], $row['fk_sim_bloco'], $row['fk_sim_area'], $row['fk_sim_prova'], $row['fk_sim_materia'], $row['area_nome'], $row['prova_nome']); } } // pega os dados incluídos na tabela temporária $sqlAdministracao = new SqlAdministracao(); $temp = $sqlAdministracao->get_temp_table(); echo '<hr />' . $temp['total'] . '<hr />'; $arr_alunos_chave = array(); foreach ($temp['registros'] as $row) { echo $row['fk_usuario_aluno'] . ' - ' . $row['fk_sim_concurso'] . ' - ' . $row['fk_sim_bloco'] . ' - ' . $row['fk_sim_area'] . ' - ' . $row['area_nome'] . ' - ' . $row['fk_sim_prova'] . ' - ' . $row['prova_nome'] . ' - ' . $row['fk_sim_materia'] . '<br />'; // pega os blocos de cada aluno $sqlAdministracao = new SqlAdministracao(); $dados_aluno = $sqlAdministracao->get_temp_table_aluno($row['fk_usuario_aluno']); $_SESSION['pk_sim_bloco'] = ''; $count_blocos = 0; $aluno_chave = ''; foreach ($dados_aluno['registros'] as $dado_aluno) { echo '.................. ' . $dado_aluno['fk_usuario_aluno'] . ' - ' . $dado_aluno['fk_sim_concurso'] . ' - ' . $dado_aluno['fk_sim_bloco'] . ' - ' . $dado_aluno['fk_sim_area'] . ' - ' . $dado_aluno['area_nome'] . ' - ' . $dado_aluno['fk_sim_prova'] . ' - ' . $dado_aluno['prova_nome'] . ' - ' . $dado_aluno['fk_sim_materia'] . '<br />'; // conta quantos blocos constam nos dados do aluno if ($dado_aluno['fk_sim_bloco'] != $_SESSION['pk_sim_bloco']) { $count_blocos++; $aluno_chave = $dado_aluno['fk_usuario_aluno']; } $_SESSION['pk_sim_bloco'] = $dado_aluno['fk_sim_bloco']; $_SESSION['usuario_aluno'] = $dado_aluno['fk_usuario_aluno']; } // echo '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '.$blocos['total'].' - '.$count_blocos.'<br />'; // // se o total de blocos do concurso for igual ao total de blocos do aluno, inclui a pk // if ($blocos['total'] == $count_blocos) // { // echo '--------------------------------- '.$aluno_chave.'<br />'; // // $arr_alunos_chave[] .= $aluno_chave; // } $arr_alunos_chave[] .= $aluno_chave; } // dá um disctinct nos dados para filtrar apenas um aluno de cada concurso $alunos_chave_final = array_unique($arr_alunos_chave); $dados = array(); foreach ($alunos_chave_final as $aluno) { echo '<br /><br />' . $aluno; // pega os blocos de cada aluno $sqlAdministracao = new SqlAdministracao(); $dados_aluno = $sqlAdministracao->get_temp_table_aluno($aluno); foreach ($dados_aluno['registros'] as $row) { $descricao = $row['area_nome'] . ' / ' . $row['prova_nome']; } // cria a pk do gabarito do concurso $sqlAdministracao = new SqlAdministracao(); $pk_sim_concurso_gabarito = $sqlAdministracao->insert_concurso_gabarito($pk_sim_concurso, $descricao); $dados_materias = ''; foreach ($dados_aluno['registros'] as $row) { echo '<br />' . $row['fk_sim_concurso'] . '-' . $row['fk_sim_bloco'] . '-' . $row['fk_sim_area'] . '-' . $row['fk_sim_prova'] . '-' . $row['fk_sim_materia']; // cria a variável que servirá como parâmetro de comparação para dar o distict final na array $dados_materias .= $pk_sim_concurso_gabarito . '-' . $row['fk_sim_concurso'] . '-' . $row['fk_sim_bloco'] . '-' . $row['fk_sim_area'] . '-' . $row['fk_sim_prova'] . '-' . $row['fk_sim_materia'] . '-' . $row['area_nome'] . '/' . $row['prova_nome'] . '#'; } // retira o separador final da array com os dados de comparação $dados[] = substr($dados_materias, 0, -1); } // dá um distinct final nos dados para retirar as redundâncias $dados_finais = array_unique($dados); foreach ($dados_finais as $row) { // divide os dados a partir do primeiro separador # $divisao1 = explode('#', $row); foreach ($divisao1 as $item) { // divide os dados a partir do segundo separador - $divisao2 = explode('-', $item); $fk_sim_concurso_gabarito = $divisao2[0]; $fk_sim_prova = $divisao2[4]; $fk_sim_materia = $divisao2[5]; // cria a pk do gabarito do concurso $sqlAdministracao = new SqlAdministracao(); $pk_sim_concurso_gabarito = $sqlAdministracao->insert_peso_concurso($fk_sim_concurso_gabarito, $fk_sim_materia, $fk_sim_prova); } } $this->session->set_flashdata('msg', '<div class="alert ok">Provas unificadas com sucesso!<br />Antes de processar o resultado final, defina os pesos das matérias de cada subgrupo listado abaixo:</div>'); redirect(base_url() . $this->uri->segment(1) . '/' . $this->uri->segment(2) . '/listar_concursos/' . $pk_sim_concurso_tipo . '/' . $pk_sim_concurso); return false; } catch (Exception $e) { $msg = '<p class="alert erro">' . $e->getMessage() . '</p>'; } } }