Files
paad/action/carrera.php
2024-03-06 17:45:49 -06:00

66 lines
2.5 KiB
PHP

<?php
require_once "{$_SERVER['DOCUMENT_ROOT']}/class/c_login.php";
header('Content-Type: application/json');
if (!Login::is_logged()) {
header('HTTP/1.1 401 Unauthorized');
echo json_encode(['error' => 'No se ha iniciado sesión']);
exit();
}
$user = Login::get_user();
try {
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
// Fetch all puestos
$facultad_id = $user->facultad['facultad_id'];
$periodo_nivel_id = $db->where('periodo_id', $user->periodo_id)->getOne('periodo', 'nivel_id')['nivel_id'];
$carreras = $db->query(<<<SQL
SELECT carrera_id, carrera_nombre, clave_carrera,
facultad_id, facultad_nombre,
nivel_id, nivel_nombre
FROM carrera
join nivel using (nivel_id)
join facultad using (facultad_id)
WHERE facultad_id = :facultad_id OR :facultad_id IS NULL AND
nivel.nivel_id = :periodo_nivel_id
ORDER BY facultad_nombre, carrera_nombre
SQL, [
'facultad_id' => $facultad_id,
'periodo_nivel_id' => $periodo_nivel_id
]);
echo json_encode($carreras);
break;
case 'PUT':
// Update carrera {nivel_id}
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
if (!isset($data['carrera_id'], $data['nivel_id'])) {
header('HTTP/1.1 400 Bad Request');
echo json_encode(['error' => 'Falta el id de la carrera o el nivel']);
exit();
}
$carrera_id = $data['carrera_id'];
$nivel_id = $data['nivel_id'];
$db->where('carrera_id', $carrera_id)->update('carrera', ['nivel_id' => $nivel_id]);
$carrera_nombre = $db->where('carrera_id', $carrera_id)->getOne('carrera', 'carrera_nombre')['carrera_nombre'];
$nivel_nombre = $db->where('nivel_id', $nivel_id)->getOne('nivel', 'nivel_nombre')['nivel_nombre'];
echo json_encode(['success' => "$carrera_nombre actualizada a $nivel_nombre"]);
break;
default:
header('HTTP/1.1 405 Method Not Allowed');
echo json_encode(['error' => 'Método no permitido']);
break;
}
} catch (PDOException $e) {
echo json_encode([
'error' => $e->getMessage(),
'query' => $db->getLastQuery(),
'exception' => $e->getTraceAsString()
]);
}