115 lines
3.8 KiB
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()]);
|
|
}
|
|
?>
|