public function estatisticas_questoes($pk_sim_concurso = 0, $pk_sim_bloco = 0, $pk_sim_prova = 0) { $msg = null; $data = $this->getParametroVisao(); if ($data['mobile']) { $data['usuario'] = unserialize($_SESSION['usuario']); $data['tema'] = $this->load->setTheme('responsive'); // $data["css"] = array(base_url()."css/modules/simulado.css"); } else { $data['tema'] != '' ? $this->load->setTheme($data['tema']) : ''; } $data['abaPage'] = 'estatisticas_questoes'; $data['page'] = 'home'; $data['msg'] = $msg; $data['abaAtiva'] = 18; $data['alias'] = 'estatisticas_questoes'; if ($pk_sim_prova != 0) { // pega a sequencia de matérias da prova $sqlProva = new SqlProva(); $materias = $sqlProva->get_gabarito_materias($pk_sim_prova); } else { if ($pk_sim_prova == 0 && $pk_sim_bloco != 0) { // pega a sequencia de matérias do bloco $sqlAdministracao = new SqlAdministracao(); $materias = $sqlAdministracao->get_blocos_gabarito_materias($pk_sim_bloco); } else { if ($pk_sim_concurso != 0 && $pk_sim_prova == 0 && $pk_sim_bloco == 0) { // pega a sequencia de matérias do bloco $sqlAdministracao = new SqlAdministracao(); $materias = $sqlAdministracao->get_concurso_gabarito_materias($pk_sim_concurso); } } } $data['total'] = count($materias); $legenda = ''; $legenda .= '<div id="legendasQuestoes">Legendas:<br />'; $legenda .= '<div class="legendaQuestao questaoFacil"></div> <div class="legendaQuestaoDesc">Questão de nível fácil <label>(% de acertos </label><b>superior a 70%</b><label>)</label></div><br class="clear" />'; $legenda .= '<div class="legendaQuestao questaoMedia"></div> <div class="legendaQuestaoDesc">Questão de nível médio <label>(% de acertos </label><b>entre 30% 70% </b><label>)</label></div><br class="clear" />'; $legenda .= '<div class="legendaQuestao questaoDificil"></div> <div class="legendaQuestaoDesc">Questão de nível difícil <label>(% de acertos </label><b>inferior a 30%</b><label>)</label></div>'; $legenda .= '</div>'; $titulo = ''; $codigos = ''; foreach ($materias['registros'] as $row) { // echo $row['pk_sim_prova'].' - '.$row['sim_materia_nome'].')<br />'; $titulo = '<div class="materia left mr20 ml20"><h3 class="left">' . $row['sim_materia_nome'] . '</h3><br class="clear" />'; // pega a sequencia de matérias do bloco $sqlAdministracao = new SqlAdministracao(); $gabaritos = $sqlAdministracao->listar_gabarito($row['pk_sim_prova'], $row['pk_sim_materia']); $htmlFinal = ''; $html = ''; foreach ($gabaritos['registros'] as $gabarito) { // se otipo de questão for ABCDE if ($gabarito['tipo_questao'] == 1) { $htmlFinal .= Estatisticas::questaoABCDE($html, $gabarito['numero_questao'], $gabarito['anulada'], $gabarito['pk_sim_gabarito'], $row['pk_sim_prova'], $row['pk_sim_materia'], $gabarito['gabarito'], $gabarito['peso_questao']); } else { if ($gabarito['tipo_questao'] == 3) { $htmlFinal .= Estatisticas::questaoAberta($html, $gabarito['numero_questao'], $gabarito['anulada'], $gabarito['pk_sim_gabarito'], $row['pk_sim_prova'], $row['pk_sim_materia'], $gabarito['gabarito'], $gabarito['peso_questao']); } else { } } } $codigos .= $titulo . $htmlFinal . '</div>'; } $data['html'] = $legenda . $codigos; $this->load->view($this->load->getUrlTema(), $data); }
public function listar_gabarito($pk_sim_prova, $pk_sim_materia) { $msg = null; $data = $this->getParametroVisao(); $data['page'] = 'home'; $data['tema'] != '' ? $this->load->setTheme($data['tema']) : ''; $data['msg'] = $msg; $data['abaAtiva'] = 18; $data['abaPage'] = 'listar_gabarito'; $data['alias'] = 'listar_gabarito'; if ($_SERVER['REQUEST_METHOD'] == "POST") { try { // View::validarFormAntInjection('form_cadastrar_grade'); // Soma os pesos enviados $peso_total = 0; for ($i = $this->input->post('primeira'); $i <= $this->input->post('ultima'); $i++) { $peso_total = $peso_total + str_replace(',', '.', $this->input->post('peso_' . $i)); } $peso = $peso_total == 1 ? 100 : $peso_total * 100; // Trata os eventuais erros if ((int) $peso < 99) { $this->session->set_flashdata('msg', '<div class="alert erro">A soma total dos pesos está inferior a 1 (' . $peso . ')</div>'); } else { if ((int) $peso > 100) { $this->session->set_flashdata('msg', '<div class="alert erro">A soma total dos pesos está superior a 1: (' . $peso . ')</div>'); } else { $this->session->set_flashdata('msg', '<div class="alert ok">Gabarito atualizado com sucesso!</div>'); } } $checa_gabarito = 0; for ($i = $this->input->post('primeira'); $i <= $this->input->post('ultima'); $i++) { $anula = $this->input->post('anula_' . $i) == 'on' ? 1 : 0; if ($this->input->post('gabarito_' . $i) != '') { $checa_gabarito++; } $sqlAdministracao = new SqlAdministracao(); $sqlAdministracao->atualizar_gabarito($this->input->post('pk_sim_gabarito_' . $i), $this->input->post('tipo_' . $i), strtoupper($this->input->post('gabarito_' . $i)), $anula, str_replace(',', '.', $this->input->post('peso_' . $i))); } if ($checa_gabarito == $this->input->post('total')) { $sqlAdministracao = new SqlAdministracao(); $sqlAdministracao->atualizar_checking_gabarito($this->input->post('fk_sim_prova'), $this->input->post('fk_sim_materia'), 1); } redirect(base_url() . $this->uri->segment(1) . '/' . $this->uri->segment(2) . '/listar_materias/' . $this->input->post('fk_sim_prova')); return false; } catch (Exception $e) { $msg = '<p class="alert erro">' . $e->getMessage() . '</p>'; } } $sqlAdministracao = new SqlAdministracao(); $result = $sqlAdministracao->listar_gabarito($pk_sim_prova, $pk_sim_materia); $peso_questao = 10 / $result['total'] / 10; $sqlProva = new SqlProva(); $data['titulo'] = $sqlProva->get_titulo_lista_gabarito($pk_sim_prova, $pk_sim_materia); $data['total'] = $result['total']; if ($result['total'] > 0) { $this->load->library('table'); $arrHead[] = 'Questão'; $arrHead[] = 'Tipo'; $arrHead[] = 'Gabarito'; $arrHead[] = 'Peso'; $arrHead[] = 'Anular'; $this->table->set_heading($arrHead); $count = 0; foreach ($result['registros'] as $row) { $count++; $tmpl = Util::zebrar($count, count($result['registros'])); $peso = $row['peso_questao'] != '' ? $row['peso_questao'] : $peso_questao; $anula = $row['anulada'] == 1 ? 'checked' : ''; $select = '<select name="tipo_' . $row['numero_questao'] . '" class="w100 required">'; $selected = $row['tipo_questao'] == 1 ? 'selected' : ''; $select .= '<option value="1" ' . $selected . '>ABCDE</option>'; $selected = $row['tipo_questao'] == 2 ? 'selected' : ''; $select .= '<option value="2" ' . $selected . '>VF</option>'; $selected = $row['tipo_questao'] == 3 ? 'selected' : ''; $select .= '<option value="3" ' . $selected . '>Abertas</option>'; $selected = $row['tipo_questao'] == 4 ? 'selected' : ''; $select .= '<option value="4" ' . $selected . '>Discursiva</option>'; $select .= '</select>'; $cell_1 = array('data' => $row['numero_questao'], 'class' => 'tcenter'); $cell_2 = array('data' => $select, 'class' => 'tcenter'); $cell_3 = array('data' => '<input type="text" name="gabarito_' . $row['numero_questao'] . '" class="w50" value="' . $row['gabarito'] . '" onchange="this.form.gabarito_' . ($row['numero_questao'] + 1) . '.focus()">', 'class' => 'tcenter'); $cell_4 = array('data' => '<input type="text" name="peso_' . $row['numero_questao'] . '" class="w50" value="' . $peso . '" >', 'class' => 'tcenter'); $cell_5 = array('data' => '<input type="checkbox" name="anula_' . $row['numero_questao'] . '" ' . $anula . '> <input type="hidden" name="pk_sim_gabarito_' . $row['numero_questao'] . '" value="' . $row['pk_sim_gabarito'] . '">', 'class' => 'tcenter'); $this->table->add_row($cell_1, $cell_2, $cell_3, $cell_4, $cell_5); } $this->table->set_template($tmpl); $data['msg'] = '<div class="alert informacao">Para anular itens de questões do tipo VF, digite "N" (maiúsculo).</div>'; } else { $data['msg'] = '<div class="alert atencao">Nenhuma prova incluída. Para cadastrar, clique no botão acima.</div>'; } $primeira = array_shift($result['registros']); $data['primeira'] = $primeira['numero_questao']; $ultima = array_pop($result['registros']); $data['ultima'] = $ultima['numero_questao']; $this->load->view($this->load->getUrlTema(), $data); }