public function listar_ranking_faltas() { $data = $this->getParametroVisao(); $data['page'] = 'home'; $data['tema'] != '' ? $this->load->setTheme($data['tema']) : ''; $data['msg'] = $this->getMsg(); $data['abaAtiva'] = 8; $data['abaPage'] = 'listar_ranking_faltas'; $data['alias'] = 'listar_ranking_faltas'; $data['msg'] = !isset($_GET['print']) ? '<div class="alert informacao"><strong>Atenção</strong><br />Por padrão, o sistema exibe inicialmente as faltas não justificadas. Para incluir as faltas por licença e justificadas clique nos checkboxs correspondentes, um de cada vez.</div>' : ''; $data['js'] = array('js/modules/fap/fap.js'); $pk_unidade = isset($_GET['pk_unidade']) && $_GET['pk_unidade'] != '' ? $_GET['pk_unidade'] : 0; $pk_serie = isset($_GET['pk_serie']) && $_GET['pk_serie'] != '' ? $_GET['pk_serie'] : 0; // tipos de falta onde 5 = licença; 6 = justificada; e 7 = Não justificada $licenca = isset($_GET['licenca']) && $_GET['licenca'] != '' ? '5,' : ''; $justificada = isset($_GET['justificada']) && $_GET['justificada'] != '' ? '6,' : ''; $njustificada = isset($_GET['njustificada']) && $_GET['njustificada'] != '' ? '7,' : ''; $data['licenca'] = substr($licenca, 0, -1); $data['justificada'] = substr($justificada, 0, -1); $data['njustificada'] = substr($njustificada, 0, -1); // concatena os tipos e retira a vírgula do final $tipos = substr($licenca . $justificada . $njustificada, 0, -1); $tipos_faltas = array($tipos); // cria a tabela temporária com os dados selecionados $sqlFap = new SqlFap(); $result = $sqlFap->insert_temp_faltas($tipos_faltas, $data['ano_letivo']); $sqlFap = new SqlFap(); $result = $sqlFap->listar_ranking_faltas($data['ano_letivo']); $array_result = array(); foreach ($result['registros'] as $row) { if ($row['totalaulas'] > 0) { $percent = $row['totalfaltas'] / $row['totalaulas'] * 100; } else { $percent = 0; } $array_result[] = array('fk_usuario_professor' => $row['fk_usuario_professor'], 'professor_nome' => $row['professor_previsto'], 'totalaulas' => $row['totalaulas'], 'totalfaltas' => $row['totalfaltas'], 'percent' => $percent, 'fk_usuario' => $row['fk_usuario']); } foreach ($array_result as &$ma) { $tmp[] =& $ma["percent"]; } if (count($array_result) > 0) { array_multisort($tmp, SORT_DESC, $array_result); } $result['registros'] = $array_result; if ($result['total'] > 0) { $this->load->library('table'); $arrHead[] = 'Posição'; $arrHead[] = 'Nome'; $arrHead[] = 'Aulas'; $arrHead[] = 'Faltas'; $arrHead[] = '%'; $this->table->set_heading($arrHead); $count = 0; $i = 0; $_SESSION['rankingAnterior'] = 0; $_SESSION['indicador'] = 0; $ranking = 1; foreach ($result['registros'] as $row) { $count++; $tmpl = Util::zebrar($count, count($result['registros'])); $i++; if (round($row['percent']) == $_SESSION['indicador']) { $ranking = $_SESSION['rankingAnterior']; } else { $ranking = $i; } $cell_ranking = array('data' => $ranking, 'class' => 'tcenter'); $cell_aulas = array('data' => $row['totalaulas'], 'class' => 'tcenter'); $cell_faltas = array('data' => $row['totalfaltas'], 'class' => 'tcenter'); $this->table->add_row($cell_ranking, '<a rel="shadowbox[Mixed]" href="' . base_url() . $this->uri->segment(1) . '/' . $this->uri->segment(2) . '/detalhe_fap/' . $row['fk_usuario'] . '/' . $row['fk_usuario_professor'] . '?shadowbox=1" class="link">' . $row['professor_nome'] . '</a>', $cell_aulas, $cell_faltas, round($row['percent']) . '%'); $_SESSION['indicador'] = round($row['percent']); $_SESSION['rankingAnterior'] = $ranking; } $this->table->set_template($tmpl); } else { $data['msg'] = '<div class="alert atencao">Nenhum registro encontrado</div>'; $data['total'] = $result['total']; } $data['total'] = $result['total']; $config['base_url'] = base_url() . $this->uri->segment(1) . '/' . $this->uri->segment(2) . '/' . $this->uri->segment(3) . '/'; // Select filtro de unidade $sqlFap = new SqlFap(); $data['unidade'] = $sqlFap->listar_unidades_faltas($tipos_faltas, $data['ano_letivo']); $unidade = explode("&pk_unidade=", $_SERVER['QUERY_STRING']); $data['unidade_url'] = $config['base_url'] . '?' . $unidade[0]; // Select filtro de serie $sqlFap = new SqlFap(); $data['serie'] = $sqlFap->listar_series_faltas($pk_unidade, $tipos_faltas, $data['ano_letivo']); $serie = explode("&pk_serie=", $_SERVER['QUERY_STRING']); $data['serie_url'] = $config['base_url'] . '?' . $serie[0]; // Select filtro de turmas $sqlFap = new SqlFap(); $data['turma'] = $sqlFap->listar_turmas_faltas($pk_unidade, $pk_serie, $tipos_faltas, $data['ano_letivo']); $turma = explode("&pk_turma=", $_SERVER['QUERY_STRING']); $data['turma_url'] = $config['base_url'] . '?' . $turma[0]; $tipo = explode("&licenca=", $_SERVER['QUERY_STRING']); $data['licenca_url'] = $config['base_url'] . '?' . $tipo[0]; $tipo = explode("&justificada=", $_SERVER['QUERY_STRING']); $data['justificada_url'] = $config['base_url'] . '?' . $tipo[0]; $tipo = explode("&njustificada=", $_SERVER['QUERY_STRING']); $data['njustificada_url'] = $config['base_url'] . '?' . $tipo[0]; if ($this->input->is_ajax_request()) { echo json_encode(array('content' => $this->load->view($this->uri->segment(3), $data, true))); } else { $this->load->view($this->load->getUrlTema(), $data); } }