fetchOne('SELECT id, name FROM classes WHERE join_code = ?', [$joinCode]); if (!$class) { Response::error('Klasse nicht gefunden'); } $displayName = mb_substr(trim($body['displayName'] ?? ''), 0, 64); $uuid = Session::createStudent((int)$class['id'], $displayName); Response::ok([ 'sessionId' => $uuid, 'className' => $class['name'], 'classId' => (int)$class['id'], ]); } if ($action === 'status') { $sessionId = Session::studentId(); if (!$sessionId) { Response::json(['loggedIn' => false]); } $session = $db->fetchOne( 'SELECT s.display_name, s.class_id, c.name as class_name FROM student_sessions s LEFT JOIN classes c ON c.id = s.class_id WHERE s.id = ?', [$sessionId] ); if (!$session) { Response::json(['loggedIn' => false]); } // last_seen aktualisieren $db->execute('UPDATE student_sessions SET last_seen = NOW() WHERE id = ?', [$sessionId]); Response::json([ 'loggedIn' => true, 'sessionId' => $sessionId, 'displayName' => $session['display_name'], 'classId' => $session['class_id'], 'className' => $session['class_name'], ]); } Response::error('Unbekannte Aktion');