carrera.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. require_once "{$_SERVER['DOCUMENT_ROOT']}/class/c_login.php";
  3. header('Content-Type: application/json');
  4. if (!Login::is_logged()) {
  5. header('HTTP/1.1 401 Unauthorized');
  6. echo json_encode(['error' => 'No se ha iniciado sesión']);
  7. exit();
  8. }
  9. $user = Login::get_user();
  10. try {
  11. switch ($_SERVER['REQUEST_METHOD']) {
  12. case 'GET':
  13. // Fetch all puestos
  14. $facultad_id = $user->facultad['facultad_id'];
  15. $periodo_nivel_id = $db->where('periodo_id', $user->periodo_id)->getOne('periodo', 'nivel_id')['nivel_id'];
  16. $carreras = $db->query(<<<SQL
  17. SELECT carrera_id, carrera_nombre, clave_carrera,
  18. facultad_id, facultad_nombre,
  19. nivel_id, nivel_nombre
  20. FROM carrera
  21. join nivel using (nivel_id)
  22. join facultad using (facultad_id)
  23. WHERE facultad_id = :facultad_id OR :facultad_id IS NULL AND
  24. nivel.nivel_id = :periodo_nivel_id
  25. ORDER BY facultad_nombre, carrera_nombre
  26. SQL, [
  27. 'facultad_id' => $facultad_id,
  28. 'periodo_nivel_id' => $periodo_nivel_id
  29. ]);
  30. echo json_encode($carreras);
  31. break;
  32. case 'PUT':
  33. // Update carrera {nivel_id}
  34. $raw = file_get_contents('php://input');
  35. $data = json_decode($raw, true);
  36. if (!isset($data['carrera_id'], $data['nivel_id'])) {
  37. header('HTTP/1.1 400 Bad Request');
  38. echo json_encode(['error' => 'Falta el id de la carrera o el nivel']);
  39. exit();
  40. }
  41. $carrera_id = $data['carrera_id'];
  42. $nivel_id = $data['nivel_id'];
  43. $db->where('carrera_id', $carrera_id)->update('carrera', ['nivel_id' => $nivel_id]);
  44. $carrera_nombre = $db->where('carrera_id', $carrera_id)->getOne('carrera', 'carrera_nombre')['carrera_nombre'];
  45. $nivel_nombre = $db->where('nivel_id', $nivel_id)->getOne('nivel', 'nivel_nombre')['nivel_nombre'];
  46. echo json_encode(['success' => "$carrera_nombre actualizada a $nivel_nombre"]);
  47. break;
  48. default:
  49. header('HTTP/1.1 405 Method Not Allowed');
  50. echo json_encode(['error' => 'Método no permitido']);
  51. break;
  52. }
  53. } catch (PDOException $e) {
  54. echo json_encode([
  55. 'error' => $e->getMessage(),
  56. 'query' => $db->getLastQuery(),
  57. 'exception' => $e->getTraceAsString()
  58. ]);
  59. }