fetchOne('SELECT class_id FROM student_sessions WHERE id = ?', [$sessionId]); if (!$session || !$session['class_id']) Response::ok([]); $assignments = $db->fetchAll( 'SELECT a.id, a.module_id, a.level, a.starts_at, a.ends_at, a.created_at FROM class_assignments a WHERE a.class_id = ? AND a.active = 1 AND a.starts_at <= NOW() AND (a.ends_at IS NULL OR a.ends_at > NOW()) ORDER BY a.created_at DESC', [$session['class_id']] ); Response::ok($assignments); } // Lehrperson-Ansicht $teacherId = Session::requireTeacher(); $classId = (int)($_GET['class_id'] ?? 0); if (!$classId) Response::error('class_id erforderlich'); $class = $db->fetchOne('SELECT id FROM classes WHERE id = ? AND teacher_id = ?', [$classId, $teacherId]); if (!$class) Response::error('Klasse nicht gefunden', 404); $assignments = $db->fetchAll( 'SELECT id, module_id, level, starts_at, ends_at, active, created_at FROM class_assignments WHERE class_id = ? ORDER BY created_at DESC', [$classId] ); Response::ok($assignments); } if ($method === 'POST') { $teacherId = Session::requireTeacher(); $body = json_decode(file_get_contents('php://input'), true); $action = $body['action'] ?? ''; if ($action === 'create') { $classId = (int)($body['classId'] ?? 0); $moduleId = $body['moduleId'] ?? ''; $level = max(1, min(5, (int)($body['level'] ?? 1))); $endsAt = !empty($body['endsAt']) ? $body['endsAt'] : null; if (!$classId || !$moduleId) Response::error('classId und moduleId erforderlich'); $class = $db->fetchOne('SELECT id FROM classes WHERE id = ? AND teacher_id = ?', [$classId, $teacherId]); if (!$class) Response::error('Klasse nicht gefunden', 404); // Vorherige aktive Aufgabe für dieses Modul deaktivieren $db->execute( 'UPDATE class_assignments SET active = 0 WHERE class_id = ? AND module_id = ? AND active = 1', [$classId, $moduleId] ); $db->execute( 'INSERT INTO class_assignments (class_id, teacher_id, module_id, level, starts_at, ends_at) VALUES (?, ?, ?, ?, NOW(), ?)', [$classId, $teacherId, $moduleId, $level, $endsAt] ); Response::ok(['id' => (int)$db->lastInsertId()]); } if ($action === 'stop') { $assignmentId = (int)($body['assignmentId'] ?? 0); if (!$assignmentId) Response::error('assignmentId erforderlich'); $db->execute( 'UPDATE class_assignments SET active = 0, ends_at = NOW() WHERE id = ? AND teacher_id = ?', [$assignmentId, $teacherId] ); Response::ok(); } Response::error('Unbekannte Aktion'); } Response::error('Methode nicht erlaubt', 405);