action_horario.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?
  2. #input $_GET['id_espacio_sgu']
  3. #output rutas: [ ...ruta, salones: [{...salon}] ]
  4. header('Content-Type: application/json charset=utf-8');
  5. ini_set('display_errors', 1);
  6. ini_set('display_startup_errors', 1);
  7. error_reporting(E_ALL);
  8. $ruta = "../";
  9. require_once $ruta . "class/c_login.php";
  10. if (!isset($_SESSION['user'])) {
  11. http_response_code(401);
  12. die(json_encode(['error' => 'unauthorized']));
  13. }
  14. $user = unserialize($_SESSION['user']);
  15. // check method
  16. try {
  17. if ($_SERVER['REQUEST_METHOD'] === 'GET') {
  18. if (!(isset($_GET['profesor_id']) || isset($_GET['grupo']))) {
  19. throw new Exception('missing parameters');
  20. }
  21. if (isset($_GET['profesor_id'])) {
  22. $data = $db->query(
  23. "SELECT *, (EXTRACT(EPOCH FROM (horario_fin - horario_hora) ) / EXTRACT(EPOCH FROM interval '15 minute'))::INT AS bloques
  24. FROM horario_view
  25. JOIN horario_profesor ON horario_profesor.horario_id = horario_view.horario_id
  26. WHERE horario_profesor.profesor_id = :profesor_id
  27. AND (facultad_id = :facultad_id OR :facultad_id IS NULL)",
  28. [
  29. 'profesor_id' => $_GET['profesor_id'],
  30. 'facultad_id' => $user->facultad['facultad_id'],
  31. ]
  32. );
  33. } else if (isset($_GET['grupo'])) {
  34. $data = $db->query(
  35. "SELECT *, (EXTRACT(EPOCH FROM (horario_fin - horario_hora) ) / EXTRACT(EPOCH FROM interval '15 minute'))::INT AS bloques
  36. FROM horario_view
  37. WHERE substring(horario_grupo, 7, 3) = (CAST(:grupo AS INT) + 1)::varchar
  38. AND (facultad_id = :facultad_id OR :facultad_id IS NULL) AND carrera_id = :carrera_id",
  39. [
  40. 'grupo' => $_GET['grupo'],
  41. 'facultad_id' => $user->facultad['facultad_id'],
  42. 'carrera_id' => $_GET['carrera_id'],
  43. ]
  44. );
  45. }
  46. $last_query = [
  47. 'query' => $db->getLastQuery(),
  48. ];
  49. echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
  50. } else {
  51. throw new Exception('invalid method');
  52. }
  53. } catch (PDOException $th) {
  54. http_response_code(500);
  55. echo json_encode([
  56. 'error' => $th->getMessage(),
  57. 'query' => $db->getLastQuery(),
  58. ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_PARTIAL_OUTPUT_ON_ERROR);
  59. exit;
  60. } catch (Exception $th) {
  61. http_response_code(500);
  62. echo json_encode([
  63. 'error' => $th->getMessage(),
  64. ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
  65. exit;
  66. }