コード例 #1
0
 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>';
         }
     }
 }