asignaextras_select.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. /* AJAX
  3. * Selecciona los datos de la carrera
  4. * Recibe:
  5. * json de la clase
  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/bd_pdo.php");
  12. require_once("../../classes/ValidaSesion.php");
  13. //require_once("../classes/LogActividad.php");//die on error
  14. function estaEnReprobadas($mat_id, $arreglo){
  15. foreach($arreglo as $reprobada){
  16. if($reprobada["Materia_id"] == $mat_id)
  17. return true;
  18. }
  19. return false;
  20. }
  21. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  22. $objSesion = new ValidaSesion($pdo, 102, GEMA);
  23. if(!$objSesion->tieneAcceso() || !$objSesion->puedeEditar()){
  24. $return["error"] = "Error! No tienes permisos para realizar esta acción.";
  25. }else if(!isset($_POST["idArr"]) || !isset($_POST["plan"])){
  26. $return["error"] = "Error! No se recibió la información de los alumnos.";
  27. }else{
  28. $idArr = $_POST["idArr"];
  29. $plan = filter_input(INPUT_POST, "plan", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  30. $tipo = filter_input(INPUT_POST, "tipo", FILTER_SANITIZE_NUMBER_INT);//tipo 2 ord, 3 extra
  31. $error = true;
  32. $return["error"] = "";
  33. try {
  34. $pdo->beginTransaction();
  35. $error = false;
  36. $alumnosRes = array();
  37. //---- Selecciona datos de alumnos ----
  38. $stmt = $pdo->prepare('Select * from fs_alumnobusca(NULL, :id, NULL, :plan, NULL, 1, 0, NULL)');
  39. $stmt->bindParam(":plan", $plan);
  40. foreach($idArr as $id){
  41. $id_num = intval($id);
  42. $stmt->bindParam(":id", $id_num);//busca claves que contengan $id
  43. if(!$stmt->execute()){
  44. $t = $stmt->errorInfo();
  45. $return["error"] .= "Ocurrió un error al seleccionar el alumno '".$id."'. ".$t[2];
  46. $error = true;
  47. }else{
  48. foreach($stmt->fetchAll() as $al){
  49. if($al["Usuario_claveULSA"] == $id){//valida que sea clave completa
  50. $alumnosRes[] = array("id" => $al["Usuario_claveULSA"], "nombre" => $al["Usuario_apellidos"]." ".$al["Usuario_nombre"], "plan"=>$al["Carrera_desc"]." ". $al["PlanEstudio_desc"], "matArr"=>array());
  51. }
  52. }
  53. }
  54. }
  55. $stmt->closeCursor();
  56. if(!$error){
  57. for($i=0; $i < count($alumnosRes); $i++){
  58. $stmt = $pdo->prepare('Select * from fs_alumnomaterias_reprobadas(:id)');//obtiene materias que ya reprobó. Sólo éstas pueden tener calificación de extraordinario
  59. $stmt->bindParam(":id", $alumnosRes[$i]["id"]);
  60. if(!$stmt->execute()){
  61. $t = $stmt->errorInfo();
  62. $return["error"] .= "Ocurrió un error al seleccionar las materias reprobadas del alumno '".$id."'. ".$t[2];
  63. $error = true;
  64. }else{
  65. $reprobadas = $stmt->fetchAll();
  66. $stmt->closeCursor();
  67. $stmt = $pdo->prepare('Select * from fs_alumnomaterias(:id, :periodo, NULL)');
  68. $stmt->bindParam(":id", $alumnosRes[$i]["id"]);
  69. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  70. if(!$stmt->execute()){
  71. $t = $stmt->errorInfo();
  72. $return["error"] .= "Ocurrió un error al seleccionar las materias del alumno '".$id."'. ".$t[2];
  73. $error = true;
  74. }else{
  75. $matRes = array();
  76. $mat_last = -1;
  77. $m = 0;
  78. foreach($stmt->fetchAll() as $mat){
  79. if($mat_last != $mat["Materia_id"]){
  80. if($mat_last != -1){
  81. if(estaEnReprobadas($mat_last, $reprobadas)){
  82. $matRes[$m]["califArr"]=$califArr;
  83. $m++;
  84. }
  85. }
  86. $mat_last = $mat["Materia_id"];
  87. $califArr = array();
  88. }
  89. if(estaEnReprobadas($mat_last, $reprobadas)){
  90. $matRes[$m] = array("id" => $mat["Materia_id"], "desc" => $mat["Materia_desc"], "clave"=>$mat["Materia_clave"], "plan"=>$mat["Carrera_desc"]." ". $mat["PlanEstudio_desc"],
  91. "sem"=> $mat["Materia_semestre"], "grupo_id"=>$mat["Grupo_id"], "grupo" => $mat["Grupo_desc"]." ".$mat["Carrera_prefijo"], "califArr"=>array());
  92. //if($mat["Calificacion_calif"] != null && $mat["Calificacion_calif"] != ""){
  93. $califArr[] = array("calif"=>$mat["Calificacion_calif"], "fecha"=>$mat["Calificacion_fecha"], "calif_tipo"=>$mat["TipoCalificacion_id"], "calif_tipo_desc"=>$mat["TipoCalificacion_desc"], "calif_tipo_corta"=>$mat["TipoCalificacion_desc_corta"], "revalidada"=>$mat["TipoCalificacion_esEquivalencia"]);
  94. //}
  95. }
  96. }
  97. if($mat_last != -1){
  98. if(estaEnReprobadas($mat["Materia_id"], $reprobadas)){
  99. $matRes[$m]["califArr"]=$califArr;
  100. }
  101. }
  102. $alumnosRes[$i]["matArr"] = $matRes;
  103. }
  104. }
  105. }
  106. $stmt->closeCursor();
  107. }
  108. if(!$error){
  109. $pdo->commit();
  110. unset($return["error"]);
  111. $return["ok"] = "Las materias se cargaron correctamente";
  112. $return["alumnos"] = $alumnosRes;
  113. }else
  114. $pdo->rollBack();
  115. $stmt = null; // cierra conexion
  116. } catch(PDOException $e) {
  117. $pdo->rollBack();
  118. $return["error"] = "Ocurrió un error al obtener las materias de los alumnos.";
  119. }
  120. }
  121. $return["json"] = json_encode($return);
  122. echo json_encode($return);
  123. ?>