import { getCourseParticipantsUrl } from "./config.js"; import { fetchStudents } from "./student-ENV.js"; /** * Class to represent a Group of Students. */ class Group { constructor(name, students) { this.name = name; if (!students) { this.students = []; } } setStudents(students) { this.students = students; } addStudent(student) { this.students.push(student); } async getStudents() { return this.students; } } let groups = new Map(); let bycsGroups = new Map(); function buildGroups(students) { for (const student of students) { for (const groupName of student.groups) { let group = groups.get(groupName); if (!group) { group = new Group(groupName); groups.set(groupName, group); if (groupName != student.getGroupName()) { bycsGroups.set(groupName, group); } } group.addStudent(student); // Create the individual student group const sGroupName = student.getGroupName(); groups.set(sGroupName, new Group(sGroupName, [student])); } } } /** * Fetch all Groups and return them as a map. */ async function fetchGroups() { if (groups.size) { return groups; } // Fetch all students and build the groups from them const students = await fetchStudents(); buildGroups(students); return groups; } async function fetchBycsGroups() { if (bycsGroups.size) { return bycsGroups; } // Fetch all students and build the groups from them const students = await fetchStudents(); buildGroups(students); return bycsGroups; } export { Group, buildGroups, fetchGroups, fetchBycsGroups };