Update code with changes from git diff
This commit is contained in:
204
action/periodos.php
Normal file
204
action/periodos.php
Normal file
@@ -0,0 +1,204 @@
|
||||
<?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
|
||||
$periodo_id = $user->periodo_id;
|
||||
if (is_null($user->facultad['facultad_id'])) {
|
||||
$periodos = $db
|
||||
->where('CURRENT_DATE BETWEEN periodo_fecha_inicio AND periodo_fecha_fin')
|
||||
->join('nivel', 'nivel.nivel_id = periodo.nivel_id')
|
||||
->orderBy('periodo_id')
|
||||
->get('periodo', null, 'periodo.*, nivel_nombre as nivel');
|
||||
} else {
|
||||
$periodos = $db->query(
|
||||
"SELECT DISTINCT periodo.*, nivel_nombre as nivel FROM periodo
|
||||
JOIN horario_view USING (periodo_id)
|
||||
JOIN nivel ON nivel.nivel_id = periodo.nivel_id
|
||||
WHERE CURRENT_DATE BETWEEN periodo.periodo_fecha_inicio AND periodo.periodo_fecha_fin
|
||||
AND facultad_id = :facultad_id
|
||||
ORDER BY periodo_id
|
||||
",
|
||||
['facultad_id' => $user->facultad['facultad_id']]
|
||||
);
|
||||
}
|
||||
echo json_encode($periodos);
|
||||
break;
|
||||
|
||||
case 'PUT':
|
||||
// Update nivel_id of a periodo
|
||||
$raw = file_get_contents('php://input');
|
||||
$data = json_decode($raw, true);
|
||||
|
||||
if (!isset($data['action'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Falta la acción a realizar']);
|
||||
exit();
|
||||
}
|
||||
|
||||
switch ($data['action']) {
|
||||
case 'changeNivel':
|
||||
if (!isset($data['periodo_id'], $data['nivel_id'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Falta el id del periodo o el nivel']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$periodo_id = $data['periodo_id'];
|
||||
$nivel_id = $data['nivel_id'];
|
||||
$db->where('periodo_id', $periodo_id)->update('periodo', ['nivel_id' => $nivel_id]);
|
||||
|
||||
$periodo_nombre = $db->where('periodo_id', $periodo_id)->getOne('periodo', 'periodo_nombre')['periodo_nombre'];
|
||||
$nivel_nombre = $db->where('nivel_id', $nivel_id)->getOne('nivel', 'nivel_nombre')['nivel_nombre'];
|
||||
|
||||
echo json_encode([
|
||||
'success' =>
|
||||
"El nivel del periodo $periodo_nombre ha sido cambiado a $nivel_nombre"
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'changeFechaInicio':
|
||||
if (!isset($data['periodo_id'], $data['periodo_fecha_inicio'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Falta el id del periodo o la fecha de inicio']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$periodo_id = $data['periodo_id'];
|
||||
$periodo_fecha_inicio = $data['periodo_fecha_inicio'];
|
||||
$db->where('periodo_id', $periodo_id)->update('periodo', ['periodo_fecha_inicio' => $periodo_fecha_inicio]);
|
||||
|
||||
$periodo_nombre = $db->where('periodo_id', $periodo_id)->getOne('periodo', 'periodo_nombre')['periodo_nombre'];
|
||||
|
||||
echo json_encode([
|
||||
'success' =>
|
||||
"La fecha de inicio del periodo $periodo_nombre ha sido cambiada a $periodo_fecha_inicio"
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'changeFechaFin':
|
||||
if (!isset($data['periodo_id'], $data['periodo_fecha_fin'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Falta el id del periodo o la fecha de fin']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$periodo_id = $data['periodo_id'];
|
||||
$periodo_fecha_fin = $data['periodo_fecha_fin'];
|
||||
$db->where('periodo_id', $periodo_id)->update('periodo', ['periodo_fecha_fin' => $periodo_fecha_fin]);
|
||||
|
||||
$periodo_nombre = $db->where('periodo_id', $periodo_id)->getOne('periodo', 'periodo_nombre')['periodo_nombre'];
|
||||
|
||||
echo json_encode([
|
||||
'success' =>
|
||||
"La fecha de fin del periodo $periodo_nombre ha sido cambiada a $periodo_fecha_fin"
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'updatePeriodo':
|
||||
if (!isset($data['periodo_id'], $data['periodo_nombre'], $data['id_periodo_sgu'], $data['periodo_clave'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Faltan datos para actualizar el periodo']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$periodo_id = $data['periodo_id'];
|
||||
|
||||
$db->where('periodo_id', $periodo_id)->update('periodo', array_filter($data, fn($key) => in_array($key, [
|
||||
'periodo_nombre',
|
||||
'id_periodo_sgu',
|
||||
'periodo_clave',
|
||||
]), ARRAY_FILTER_USE_KEY));
|
||||
|
||||
$periodo_nombre = $db->where('periodo_id', $periodo_id)->getOne('periodo', 'periodo_nombre')['periodo_nombre'];
|
||||
|
||||
echo json_encode([
|
||||
'success' =>
|
||||
"El periodo $periodo_nombre ha sido actualizado"
|
||||
]);
|
||||
break;
|
||||
|
||||
default:
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Acción no válida']);
|
||||
exit();
|
||||
}
|
||||
|
||||
break;
|
||||
case 'POST':
|
||||
$raw = file_get_contents('php://input');
|
||||
$data = json_decode($raw, true);
|
||||
|
||||
if (!isset($data['periodo_nombre'], $data['nivel_id'], $data['periodo_fecha_inicio'], $data['periodo_fecha_fin'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Faltan datos para crear el periodo']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$newPeriodo = $db->insert(
|
||||
'periodo',
|
||||
array_filter($data, fn($key) => in_array($key, [
|
||||
'periodo_nombre',
|
||||
'nivel_id',
|
||||
'periodo_fecha_inicio',
|
||||
'periodo_fecha_fin',
|
||||
'periodo_clave',
|
||||
'id_periodo_sgu',
|
||||
]), ARRAY_FILTER_USE_KEY)
|
||||
);
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => 'El periodo ha sido creado',
|
||||
'periodo' => $newPeriodo
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'DELETE':
|
||||
// Delete a periodo
|
||||
$raw = file_get_contents('php://input');
|
||||
$data = json_decode($raw, true);
|
||||
|
||||
if (!isset($data['periodo_id'])) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
echo json_encode(['error' => 'Falta el id del periodo']);
|
||||
exit();
|
||||
}
|
||||
|
||||
$periodo_id = $data['periodo_id'];
|
||||
$periodo_nombre = $db->where('periodo_id', $periodo_id)->getOne('periodo', 'periodo_nombre')['periodo_nombre'];
|
||||
|
||||
$db->where('periodo_id', $periodo_id)->delete('periodo');
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => "El periodo $periodo_nombre ha sido eliminado"
|
||||
]);
|
||||
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()
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
echo json_encode([
|
||||
'error' => $e->getMessage(),
|
||||
'exception' => $e->getTraceAsString()
|
||||
]);
|
||||
}
|
||||
Reference in New Issue
Block a user