DiploMaster/api/alumnos-cursos.php

115 lines
3.8 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'];
$profesorId = $_SESSION['profesor']['id'] ?? null;
try {
switch ($method) {
case 'GET':
$alumnoId = $_GET['alumno_id'] ?? null;
if ($alumnoId) {
// Obtener cursos de un alumno específico (con tipo)
$query = "SELECT c.id, c.nombre, c.tipo FROM cursos c
JOIN alumnos_cursos ac ON c.id = ac.curso_id
WHERE ac.alumno_id = ? AND c.profesor_id = ?";
$stmt = $pdo->prepare($query);
$stmt->execute([$alumnoId, $profesorId]);
} else {
// Obtener todos los alumnos
$query = "SELECT * FROM alumnos";
$stmt = $pdo->prepare($query);
$stmt->execute();
}
echo json_encode([
'success' => true,
'data' => $stmt->fetchAll(PDO::FETCH_ASSOC)
]);
break;
case 'POST':
$data = json_decode(file_get_contents('php://input'), true);
$cursoId = $data['curso_id'] ?? null;
$alumnos = $data['alumnos'] ?? [];
if (empty($cursoId) || empty($alumnos)) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'Datos incompletos']);
exit;
}
// Verificar que el curso pertenece al profesor
$stmt = $pdo->prepare("SELECT id FROM cursos WHERE id = ? AND profesor_id = ?");
$stmt->execute([$cursoId, $profesorId]);
if (!$stmt->fetch()) {
http_response_code(403);
echo json_encode(['success' => false, 'error' => 'No autorizado']);
exit;
}
foreach ($alumnos as $alumnoId) {
$stmt = $pdo->prepare("
INSERT INTO alumnos_cursos (alumno_id, curso_id, estado)
VALUES (?, ?, 'cursando')
ON DUPLICATE KEY UPDATE estado = 'cursando'
");
$stmt->execute([$alumnoId, $cursoId]);
}
echo json_encode([
'success' => true,
'message' => 'Alumnos asignados correctamente'
]);
break;
case 'DELETE':
$alumnoId = $_GET['alumno_id'] ?? null;
$cursoId = $_GET['curso_id'] ?? null;
if (!$alumnoId || !$cursoId) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'IDs requeridos']);
exit;
}
// Verificar que el curso pertenece al profesor
$stmt = $pdo->prepare("SELECT id FROM cursos WHERE id = ? AND profesor_id = ?");
$stmt->execute([$cursoId, $profesorId]);
if (!$stmt->fetch()) {
http_response_code(403);
echo json_encode(['success' => false, 'error' => 'No autorizado']);
exit;
}
// Eliminar asignación
$stmt = $pdo->prepare("DELETE FROM alumnos_cursos WHERE alumno_id = ? AND curso_id = ?");
$stmt->execute([$alumnoId, $cursoId]);
echo json_encode([
'success' => true,
'message' => 'Alumno desvinculado del curso correctamente'
]);
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()]);
}
?>