reprobadosgrupo_select.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /* AJAX
  3. * Selecciona los datos del alumno
  4. * Recibe:
  5. * id - ID de la carrera
  6. * Return:
  7. * resultado o cadena de error
  8. */
  9. require_once("../../include/constantes.php");
  10. require_once("../../include/nocache.php");
  11. require_once("../../include/util.php");
  12. require_once("../../include/bd_pdo.php");
  13. require_once("../../classes/ValidaSesion.php");
  14. //quita la llave del arreglo
  15. function removeKey($arr){
  16. $res = array();
  17. foreach($arr as $old){
  18. $res[] = $old;
  19. }
  20. return $res;
  21. }
  22. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  23. $objSesion = new ValidaSesion($pdo, array(123), GEMA);
  24. if(!$objSesion->tieneAcceso()){
  25. $return["error"] = "Error! No tienes permisos para realizar esta acción.";
  26. }else if(!isset($_POST["plan"], $_POST["sem"])){
  27. $return["error"] = "Error! No se recibió la información para el reporte.";
  28. }else{
  29. $plan = filter_input(INPUT_POST, "plan", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  30. $sem = filter_input(INPUT_POST, "sem", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  31. $error = false;
  32. $labelsArr =array();
  33. //materias por asignar
  34. $stmt = $pdo->prepare('Select * from fs_materiagrupo(:plan, :sem, NULL) WHERE "Area_hasAlerta" = true');
  35. $stmt->bindParam(":plan", $plan);
  36. $stmt->bindParam(":sem", $sem);
  37. if(!$stmt->execute()){
  38. $return["error"] = "Ocurrió un error al leer las materias del semestre.";
  39. $error = true;
  40. }else{
  41. $mat_rs = $stmt->fetchAll();
  42. foreach($mat_rs as $mat){
  43. $labelsArr[$mat["Materia_id"]] = $mat["Materia_desc"];
  44. }
  45. $labelsArr = removeKey($labelsArr);
  46. }
  47. if(!$error){
  48. //reporte por grupos
  49. $stmt = $pdo->prepare('Select * from fs_reprobadas_grupo(:periodo, :plan, :sem)');//sólo no revalidadas
  50. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  51. $stmt->bindParam(":plan", $plan);
  52. $stmt->bindParam(":sem", $sem);
  53. if(!$stmt->execute()){
  54. $return["error"] = "Ocurrió un error al cargar las materias reprobadas por grupo";
  55. $error = true;
  56. //print_r($stmt->errorInfo());
  57. }else{
  58. $return["query"] = 'Select * from fs_reprobadas_grupo('.$_SESSION["periodo_id"].', '.$plan.', '.$sem.')';
  59. $rs = $stmt->fetchAll();
  60. $return["query_total"] = count($rs);
  61. $gpoArr = array();
  62. $grupo_last = -1;
  63. $califArr = array();
  64. $g = 0;
  65. foreach($rs as $grupo){
  66. if($grupo_last != $grupo["Grupo_id"]){
  67. if($grupo_last != -1){
  68. $gpoArr[$g]["califArr"]=removeKey($califArr);
  69. $g++;
  70. }
  71. $grupo_last = $grupo["Grupo_id"];
  72. $califArr = array();
  73. foreach($mat_rs as $mat){
  74. $califArr[$mat["Materia_id"]] = array("total"=>0, "reprobados"=>0, "materia"=>$mat["Materia_desc"]);
  75. }
  76. }
  77. $gpoArr[$g] = array("id" => $grupo["Grupo_id"], "desc" =>$grupo["Grupo_desc"]." ".$grupo["Carrera_prefijo"], "califArr"=>array());
  78. $califArr[$grupo["Materia_id"]] = array("total"=>$grupo["Calificacion_total"], "reprobadas"=>$grupo["Calificacion_reprobadas"],
  79. "data"=>($grupo["Calificacion_total"]==0)?0:round($grupo["Calificacion_reprobadas"]*100/$grupo["Calificacion_total"]), "materia"=>$grupo["Materia_desc"]);
  80. }
  81. if($grupo_last != -1){
  82. $gpoArr[$g]["califArr"]=removeKey($califArr);
  83. }
  84. unset($g);
  85. }
  86. $stmt->closeCursor();
  87. $return["grupoArr"] = $gpoArr;
  88. $return["labelArr"] = $labelsArr;
  89. }
  90. }
  91. $return["json"] = json_encode($return);
  92. echo json_encode($return);
  93. ?>