From 12d21f3c49c59b9207956f361ef0a541215d1b1f Mon Sep 17 00:00:00 2001 From: Gabriellvl Date: Mon, 7 Apr 2025 23:48:35 +0200 Subject: [PATCH] fix: check student in klas, conflict error --- backend/src/services/students.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/src/services/students.ts b/backend/src/services/students.ts index dc40e468..a8300db5 100644 --- a/backend/src/services/students.ts +++ b/backend/src/services/students.ts @@ -23,6 +23,8 @@ import { GroupDTO } from '@dwengo-1/common/interfaces/group'; import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission'; import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question'; import { ClassJoinRequestDTO } from '@dwengo-1/common/interfaces/class-join-request'; +import {BadRequestException} from "../exceptions/bad-request-exception"; +import {ConflictException} from "../exceptions/conflict-exception"; export async function getAllStudents(full: boolean): Promise { const studentRepository = getStudentRepository(); @@ -135,6 +137,10 @@ export async function createClassJoinRequest(username: string, classId: string): const student = await fetchStudent(username); // Throws error if student not found const cls = await fetchClass(classId); + if (cls.students.contains(student)) { + throw new ConflictException("Student already in this class"); + } + const request = mapToStudentRequest(student, cls); await requestRepo.save(request, { preventOverwrite: true }); return mapToStudentRequestDTO(request);