DiploMaster/api/alumnos.php

121 lines
3.9 KiB
PHP

<?php
header('Content-Type: application/json');
require '../includes/config.php';
if (!is_logged_in()) {
http_response_code(401);
echo json_encode(['success' => false, 'error' => 'No autenticado']);
exit;
}
$method = $_SERVER['REQUEST_METHOD'];
try {
switch ($method) {
case 'GET':
// Obtener todos los alumnos
$query = "SELECT * FROM alumnos ORDER BY nombre ASC";
$stmt = $pdo->prepare($query);
$stmt->execute();
$alumnos = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode([
'success' => true,
'data' => $alumnos,
'count' => count($alumnos)
]);
break;
case 'POST':
$data = json_decode(file_get_contents('php://input'), true);
if (empty($data['nombre']) || empty($data['email'])) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'Nombre y email son requeridos']);
exit;
}
$stmt = $pdo->prepare("
INSERT INTO alumnos (nombre, email, telefono)
VALUES (?, ?, ?)
");
$stmt->execute([
$data['nombre'],
$data['email'],
$data['telefono'] ?? null
]);
echo json_encode([
'success' => true,
'id' => $pdo->lastInsertId(),
'message' => 'Alumno creado exitosamente'
]);
break;
case 'PUT':
$data = json_decode(file_get_contents('php://input'), true);
if (empty($data['id']) || empty($data['nombre']) || empty($data['email'])) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'Datos incompletos']);
exit;
}
$stmt = $pdo->prepare("
UPDATE alumnos SET
nombre = ?,
email = ?,
telefono = ?
WHERE id = ?
");
$stmt->execute([
$data['nombre'],
$data['email'],
$data['telefono'] ?? null,
$data['id']
]);
echo json_encode([
'success' => true,
'message' => 'Alumno actualizado exitosamente'
]);
break;
case 'DELETE':
$id = $_GET['id'] ?? null;
if (!$id) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'ID de alumno no proporcionado']);
exit;
}
// Verificar si el alumno está asignado a algún curso primero
$stmt = $pdo->prepare("SELECT COUNT(*) FROM alumnos_cursos WHERE alumno_id = ?");
$stmt->execute([$id]);
$tieneCursos = $stmt->fetchColumn();
if ($tieneCursos > 0) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'No se puede eliminar, el alumno está asignado a cursos']);
exit;
}
$stmt = $pdo->prepare("DELETE FROM alumnos WHERE id = ?");
$stmt->execute([$id]);
echo json_encode([
'success' => true,
'message' => 'Alumno eliminado exitosamente'
]);
break;
default:
http_response_code(405);
echo json_encode(['success' => false, 'error' => 'Método no permitido']);
}
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['success' => false, 'error' => 'Error en la base de datos: ' . $e->getMessage()]);
}
?>