diff --git a/backend/tests/test_assets/classes/classes.testdata.ts b/backend/tests/test_assets/classes/classes.testdata.ts index 0f223ec4..473c296f 100644 --- a/backend/tests/test_assets/classes/classes.testdata.ts +++ b/backend/tests/test_assets/classes/classes.testdata.ts @@ -15,7 +15,7 @@ export function makeTestClasses(em: EntityManager, students: Student[], teachers }); const studentsClass02: Student[] = students.slice(0, 2).concat(students.slice(3, 4)); - const teacherClass02: Teacher[] = teachers.slice(1, 2); + const teacherClass02: Teacher[] = teachers.slice(1, 2).concat(teachers.slice(4,5)); const class02 = em.create(Class, { classId: '34d484a1-295f-4e9f-bfdc-3e7a23d86a89', diff --git a/frontend/src/views/classes/SingleClass.vue b/frontend/src/views/classes/SingleClass.vue index af90a61c..39e65d61 100644 --- a/frontend/src/views/classes/SingleClass.vue +++ b/frontend/src/views/classes/SingleClass.vue @@ -9,7 +9,7 @@ import type { StudentDTO } from "@dwengo-1/common/interfaces/student"; import { useStudentJoinRequestQuery } from "@/queries/students"; import UsingQueryResult from "@/components/UsingQueryResult.vue"; - import { useTeacherJoinRequestsQuery } from "@/queries/teachers"; + import { useTeacherJoinRequestsQuery, useUpdateJoinRequestMutation } from "@/queries/teachers"; import type { ClassJoinRequestDTO } from "@dwengo-1/common/interfaces/class-join-request"; const { t } = useI18n(); @@ -27,6 +27,7 @@ const students = ref([]); const joinRequestsQuery = useTeacherJoinRequestsQuery(username, classId); + const { mutate } = useUpdateJoinRequestMutation(); // Find the username of the logged in user so it can be used to fetch other information // When loading the page @@ -66,12 +67,34 @@ //TODO when query; reload table so student not longer in table } - function acceptStudent(s: StudentDTO) { - //TODO + function handleJoinRequest(c: ClassJoinRequestDTO, accepted: boolean) { + mutate( + { + teacherUsername: username.value!, + studentUsername: c.requester.username, + classId: c.class, + accepted: accepted, + }, + { + onSuccess: () => { + showSnackbar(t("sent"), "success"); + }, + onError: (e) => { + showSnackbar(t("failed") + ": " + e.message, "error"); + }, + }, + ); } + const snackbar = ref({ + visible: false, + message: "", + color: "success", + }); - function rejectStudent(joinRequest: ClassJoinRequestDTO) { - //TODO + function showSnackbar(message: string, color: string): void { + snackbar.value.message = message; + snackbar.value.color = color; + snackbar.value.visible = true; }