Finalizes a lecture session by marking remaining students absent, deleting in-memory references, and notifying all connected clients via Socket.IO.

handleLectureFinish

If the finalize operation fails

import { handleLectureFinish } from './handleLectureFinish'

socket.on('lectureFinishedWithButton', async (lectureid: string) => {
if (!['teacher', 'admin', 'counselor'].some(role => socket.user?.role.includes(role))) {
socket.emit('error', {
code: 'UNAUTHORIZED',
message: 'Only teachers, admins, or counselors can finish lectures',
});
return;
}
try {
logger.info(`Lecture ${lectureid} finishing...`);
await handleLectureFinish(
lectureid,
io,
notYetPresentStudents,
presentStudents,
lectureData,
lectureTimeoutIds
);
} catch (err) {
logger.error('Error finalizing lecture:', err);
}
});