main.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <?php
  2. require_once("../include/constantes.php");
  3. require_once("../include/bd_pdo.php");
  4. require_once("../include/util.php");
  5. require_once("../classes/ValidaSesion.php");
  6. require_once("../classes/MainMenu.php");
  7. $menu = null;
  8. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  9. $objSesion = new ValidaSesion($pdo, NULL, GEMA);
  10. /*if(!$objSesion->tieneAcceso()){
  11. $objSesion->terminaSesion();
  12. }*/
  13. $stmt = $pdo->prepare('Select * from fs_sistema('.GEMA.')');
  14. if(!$stmt->execute()){
  15. $errorDesc .= "Ocurrió un error al cargar los datos del sistema";
  16. }else
  17. $sistema_rs = $stmt->fetch();
  18. $stmt->closeCursor();
  19. function inIntentos($id, $arr){
  20. foreach($arr as $data){
  21. if($id == $data["id"])
  22. return true;
  23. }
  24. return false;
  25. }
  26. ?>
  27. <!DOCTYPE html>
  28. <html lang="es" prefix="og: http://ogp.me/ns#">
  29. <head>
  30. <title>GEMA - Facultad de Ingeniería</title>
  31. <meta charset="utf-8">
  32. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  33. <link rel="icon" type="image/png" href="../img/favicon.png" />
  34. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  35. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  36. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  37. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  38. <link rel="stylesheet" href="../css/postit.css" type="text/css">
  39. </head>
  40. <body>
  41. <div >
  42. <?php
  43. //--- Objeto que pinta menu y header
  44. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, GEMA, $_SESSION["usuario_apellidos"]." ".$_SESSION["usuario_nombre"]);//usr, menu, pdo, sist
  45. $menuObj->printMenu();
  46. $stmt = $pdo->prepare('Select * from fs_periodousuario(:usr)');
  47. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  48. if(!$stmt->execute()){
  49. $errorDesc = "Ocurrió un error al cargar los datos de los periodos.";
  50. }else
  51. $periodo_rs = $stmt->fetchAll();
  52. $stmt->closeCursor();
  53. $stmt = null;
  54. $errorDesc = "";
  55. if(isset($_SESSION["periodo_id"]) && $_SESSION["periodo_id"] != ""){
  56. $stmt = $pdo->prepare('Select * from fs_alerta_alumnosinmaterias(:per, NULL, 0, '.MAX_ROWS.')');
  57. $stmt->bindParam(":per", $_SESSION["periodo_id"]);
  58. if(!$stmt->execute()){
  59. $errorDesc .= "Ocurrió un error al cargar los datos alumnos sin materias.<br>";
  60. print_r($stmt->errorInfo());
  61. }else
  62. $sinMaterias_rs = $stmt->fetchAll();
  63. $stmt->closeCursor();
  64. $stmt = null;
  65. $stmt = $pdo->prepare('Select COUNT("Usuario_claveULSA") as total from fs_alerta_alumnosinmaterias(:per, NULL, 0, NULL)');
  66. $stmt->bindParam(":per", $_SESSION["periodo_id"]);
  67. if(!$stmt->execute()){
  68. $errorDesc .= "Ocurrió un error al cargar los datos alumnos sin materias.<br>";
  69. print_r($stmt->errorInfo());
  70. }else{
  71. $rs = $stmt->fetch();
  72. }
  73. $total_sinMaterias = $rs["total"];
  74. $stmt->closeCursor();
  75. $stmt = null;
  76. unset($rs);
  77. }
  78. $i = 0;
  79. $intentosArr = array();
  80. // ---- Busca intentos por materia -----
  81. $stmt = $pdo->prepare('Select * from fs_materiasintentos(NULL, NULL, 2)');
  82. if(!$stmt->execute()){
  83. $errorDesc = "Ocurrió un error al cargar el total de materias reprobadas.";
  84. print_r($stmt->errorInfo());
  85. }else{
  86. $intentos_rs = $stmt->fetchAll();
  87. $last = -1;
  88. $total = 0;
  89. foreach($intentos_rs as $intento){
  90. if($last != $intento["Usuario_claveULSA"]){
  91. if($last != -1){
  92. $intentosArr[$i]["total"] = $total;
  93. $i++;
  94. $total = 0;
  95. }
  96. $last = $intento["Usuario_claveULSA"];
  97. $materiasArr = array();
  98. }
  99. $intentosArr[$i] = array("id" => $intento["Usuario_id"], "clave" => $intento["Usuario_claveULSA"], "nombre" =>$intento["Usuario_apellidos"]." ".$intento["Usuario_nombre"], "total"=>0);
  100. $total+= $intento["Intentos_total"];
  101. }
  102. if($last != -1){
  103. $intentosArr[$i]["total"] = $total;
  104. }
  105. unset($i);
  106. }
  107. $stmt->closeCursor();
  108. // ---- Busca intentos totales reprobados -----
  109. $stmt = $pdo->prepare('Select * from fs_materiasreprobadas(NULL, NULL, 2)');//sólo no revalidadas
  110. if(!$stmt->execute()){
  111. $errorDesc = "Ocurrió un error al cargar el total de materias reprobadas.";
  112. print_r($stmt->errorInfo());
  113. }else{
  114. $intentos_rs = $stmt->fetchAll();
  115. $last = -1;
  116. $total = 0;
  117. foreach($intentos_rs as $intento){
  118. if(!inIntentos($intento["Usuario_id"], $intentosArr)){
  119. if($last != $intento["Usuario_claveULSA"]){
  120. if($last != -1){
  121. $total++;
  122. }
  123. $last = $intento["Usuario_claveULSA"];
  124. }
  125. $intentosArr[$total] = array("id" => $intento["Usuario_id"], "clave" => $intento["Usuario_claveULSA"], "nombre" =>$intento["Usuario_apellidos"]." ".$intento["Usuario_nombre"], "total"=>$intento["Intentos_total"]);
  126. }
  127. }
  128. }
  129. /*usort($intentosArr, function ($item1, $item2) {
  130. return $item2['total'] <=> $item1['total'];
  131. });*/
  132. $stmt->closeCursor();
  133. //--Manejo de errores y mensajes de exito
  134. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  135. switch ($_GET["error"]){
  136. case 0: $errorDesc = "No se recibió la información del periodo."; break;
  137. case 1: $errorDesc = "Ocurrió un error al actualizar el periodo activo."; break;
  138. case 2: $errorDesc = "El periodo no puede ser seleccionado."; break;
  139. case 3: $errorDesc = "No tienes permiso de ingresar a esa sección."; break;
  140. }
  141. }
  142. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  143. switch ($_GET["ok"]){
  144. case 0: $successDesc = "El periodo se actualizó correctamente."; break;
  145. }
  146. }
  147. include_once("../include/errorMessage.php");
  148. ?>
  149. <main class="container-fluid content marco">
  150. <?php include("../include/periodoCambio.php");?>
  151. <!-- Alertas -->
  152. <div class="row mt-4 justify-content-center">
  153. <form action="materiasalumnos.php" method="post" id="formaSinMaterias">
  154. <input type="hidden" name="plan" id="plan">
  155. <input type="hidden" name="clave" id="clave">
  156. </form>
  157. <!-- ALUMNOS SIN MATERIAS -->
  158. <?php if(isset($sinMaterias_rs) && count($sinMaterias_rs) > 0){?>
  159. <div class="col-12 col-md-6">
  160. <div class="alerta-body bg-info">
  161. <div class="alerta-title alerta-blue p-3">
  162. <table border="0">
  163. <tr>
  164. <td class="text-center text-white pr-3"><span class="ing-usuario fa-3x"></span></td>
  165. <td><h5 class="text-white">Alumnos activos sin materias en el periodo</h5></td>
  166. </tr>
  167. </table>
  168. </div>
  169. <div class="small limit">
  170. <?php
  171. $muestra = count($sinMaterias_rs);
  172. if($muestra > MAX_ROWS){
  173. $muestra = MAX_ROWS;
  174. }
  175. echo "<h5 class='mb-3 text-center'>Se muestran ".$muestra." de ".$total_sinMaterias."</h5>";
  176. $objSesion2 = new ValidaSesion($pdo, 102, GEMA);//--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  177. foreach($sinMaterias_rs as $alumno){
  178. if($objSesion2->tieneAcceso()){
  179. echo "<p class='open-materias pointer' data-pag='alumnosestados.php' data-clave='".$alumno["Usuario_claveULSA"]."' data-plan='".$alumno["PlanEstudio_id"]."'><b>[".$alumno["Usuario_claveULSA"]."]</b> ".$alumno["Usuario_apellidos"]." ".$alumno["Usuario_nombre"]."</p>";
  180. }else{
  181. echo "<p><b>[".$alumno["Usuario_claveULSA"]."]</b>".$alumno["Usuario_apellidos"]." ".$alumno["Usuario_nombre"]."</p>";
  182. }
  183. }?>
  184. </div>
  185. </div>
  186. </div>
  187. <?php } ?>
  188. <!-- ALUMOS QUE DEBEN SER BAJA POR REPROBAR-->
  189. <?php if(isset($intentosArr) && count($intentosArr) > 0){?>
  190. <div class="col-12 col-md-6">
  191. <div class="alerta-body bg-info">
  192. <div class="alerta-title alerta-red p-3">
  193. <table border="0">
  194. <tr>
  195. <td class="text-center text-white pr-3"><span class="ing-cancelar fa-3x"></span></td>
  196. <td><h5 class="text-white">Sugerencias de baja</h5></td>
  197. </tr>
  198. </table>
  199. </div>
  200. <div class="small limit">
  201. <?php
  202. $objSesion2 = new ValidaSesion($pdo, 126, GEMA);//--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  203. foreach($intentosArr as $alumno){
  204. if($objSesion2->tieneAcceso() && $objSesion2->puedeEditar()){
  205. echo "<p class='open-materias pointer' data-pag='reporte_oportunidades.php' data-clave='".$alumno["clave"]."' data-plan=''><b>[".
  206. $alumno["clave"]."]</b> ".$alumno["nombre"]."</p>";
  207. }else{
  208. echo "<p class='mb-4'><b>[".$alumno["clave"]."]<b> ".$alumno["nombre"]."</p>";
  209. }
  210. }
  211. ?>
  212. </div>
  213. </div>
  214. </div>
  215. <?php } ?>
  216. </div>
  217. </main>
  218. <!--- FOOTER--->
  219. <div style="isolation: isolate;">
  220. <?php require_once("../include/footer.php"); ?>
  221. </div>
  222. </div>
  223. <script src="../js/jquery.min.js"></script>
  224. <script src="../js/bootstrap/popper.min.js"></script>
  225. <script src="../js/bootstrap/bootstrap.min.js"></script>
  226. <script src="../js/sidebarmenu.js"></script>
  227. <script src="../js/datalist.js"></script>
  228. <script>
  229. $(document).ready(function(){
  230. setDatalist("#periodo", <?php echo $_SESSION["periodo_id"]; ?>);
  231. $(document).on('click', '#dlPeriodo ul li' ,function(){
  232. $("#formaPeriodo").submit();
  233. });
  234. $('.open-materias').click(function(){
  235. $("#clave").val($(this).data("clave"));
  236. $("#plan").val($(this).data("plan"));
  237. $("#formaSinMaterias").prop("action", $(this).data("pag"))
  238. $("#formaSinMaterias").submit();
  239. })
  240. });
  241. </script>
  242. </body>
  243. </html>