import { Graduation, GraduationChange } from "./graduation-common.ts"; import { Student } from "./student-common.ts"; const students = [ new Student(1, "foo bar"), new Student(2, "maxi mustermensch"), new Student(3, "1"), new Student(4, "2"), new Student(5, "3"), new Student(6, "4"), new Student(7, "5"), new Student(8, "6"), ]; async function fetchStudentsMock(id?: number, name?: string) { return students.filter((s) => { return ( (typeof id === "undefined" || s.id === id) && (typeof name === "undefined" || s.name.includes(name)) ); }); } async function fetchSubjectsMock() { return ["Mathe", "Deutsch", "Englisch"]; } function fetchProgressMock(subject: string) { return new Promise((resolve) => { if (subject === "Mathe") { resolve([40, 10, 3]); } else if (subject === "Deutsch") { resolve([10, 2, 0]); } else if (subject === "Englisch") { resolve([50, 25, 10]); } else { resolve([0, 0, 0]); } }); } const graduations = new Map(); for (const s of students) { switch (s.name) { case "foo bar": graduations.set( s, Graduation.from(s, [ GraduationChange.newGreenPointChange(false, "Gute Arbeit", "Florian Fischer"), GraduationChange.newOrangePointChange(true, "", "Florian Fischer"), ]), ); break; case "maxi mustermensch": graduations.set( s, Graduation.from(s, [ GraduationChange.newGreenPointChange(false, "", "Florian Fischer"), GraduationChange.newGreenPointChange(false, "", "Florian Fischer"), GraduationChange.newCoachAssignmentChange({ 2: ["Florian Fischer"] }), ]), ); break; case "b b b": graduations.set( s, Graduation.from(s, [GraduationChange.newRedPointChange(false, "", "Florian Fischer")]), ); break; case "1": case "2": case "3": case "4": graduations.set( s, Graduation.from(s, [GraduationChange.newGreenPointChange(true, "", "Florian Fischer")]), ); break; case "5": graduations.set( s, Graduation.from(s, [ GraduationChange.newGreenPointChange(true, "", "Florian Fischer"), GraduationChange.newGreenPointChange(true, "", "Florian Fischer"), ]), ); break; default: graduations.set(s, Graduation.from(s, [])); } } async function fetchGraduationMock(s: Student) { return graduations.get(s); } async function fetchGraduationChangesMock() { return Array.from(graduations.values().map((g) => g.changes)).flat(); } export { fetchStudentsMock, fetchSubjectsMock, fetchProgressMock, fetchGraduationMock, fetchGraduationChangesMock, };