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