From 62222870edc8277a023436336d41d908ea2cde73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.swiss>
Date: Tue, 25 Feb 2025 16:13:38 +0100
Subject: [PATCH] Routes => Fix exercises counting (with deleted ones)

---
 ExpressAPI/src/managers/ExerciseManager.ts | 7 +++----
 ExpressAPI/src/routes/ExerciseRoutes.ts    | 2 +-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/ExpressAPI/src/managers/ExerciseManager.ts b/ExpressAPI/src/managers/ExerciseManager.ts
index bc64be6..e18207f 100644
--- a/ExpressAPI/src/managers/ExerciseManager.ts
+++ b/ExpressAPI/src/managers/ExerciseManager.ts
@@ -15,11 +15,10 @@ class ExerciseManager {
                                             }) as unknown as Exercise ?? undefined;
     }
 
-    getFromAssignment(assignmentName: string, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Array<Exercise>> {
+    // deleteFilter is a boolean that is true to get only deleted exercises, false to get only non-deleted exercises, and undefined to get all exercises
+    getFromAssignment(assignmentName: string, deleteFilter: boolean | undefined = undefined, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Array<Exercise>> {
         return db.exercise.findMany({
-                                        where  : {
-                                            assignmentName: assignmentName
-                                        },
+                                        where  : { assignmentName: assignmentName, ...(deleteFilter !== undefined ? { deleted: deleteFilter } : {}) },
                                         include: include
                                     }) as Promise<Array<Exercise>>;
     }
diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index f3939c7..5137daa 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -133,7 +133,7 @@ class ExerciseRoutes implements RoutesManager {
 
 
     private async checkExerciseLimit(assignment: Assignment, members: Array<Gitlab.UserSchema>): Promise<Array<Gitlab.UserSchema>> {
-        const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, { members: true });
+        const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, false, { members: true });
         const reachedLimitUsers: Array<Gitlab.UserSchema> = [];
         if ( exercises.length > 0 ) {
             for ( const member of members ) {
-- 
GitLab