From 98688c68a6eb912d5356adfad6dc57cd4b95d434 Mon Sep 17 00:00:00 2001
From: "bedran.sezer" <bedran.sezer@etu.hesge.ch>
Date: Fri, 9 Aug 2024 12:58:45 +0200
Subject: [PATCH] add stats

---
 ExpressAPI/src/routes/ExerciseRoutes.ts | 35 +++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index ae3d4b9..5bc2a77 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -76,6 +76,41 @@ class ExerciseRoutes implements RoutesManager {
         backend.delete('/exercises/:exerciseIdOrUrl', SecurityMiddleware.check(true, SecurityCheckType.ADMIN, SecurityCheckType.EXERCISE_MEMBERS), this.deleteExercise.bind(this) as RequestHandler);
 
         backend.post('/exercises/:exerciseIdOrUrl/results', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), ParamsValidatorMiddleware.validate(this.resultValidator), this.createResult.bind(this) as RequestHandler);
+
+        backend.get('/exercises', this.getAllExercises.bind(this));
+
+        backend.get('/exercises/:exerciseIdOrLink/results', SecurityMiddleware.check(true), this.getExerciseResultsByIdOrLink.bind(this));
+    }
+
+    private async getExerciseResultsByIdOrLink(req: express.Request, res: express.Response) {
+        const exerciseIdOrLink = req.params.exerciseIdOrLink;
+
+
+        const exercise = await db.exercise.findFirst({
+            where: {
+                OR: [
+                    { id: exerciseIdOrLink },
+                    { gitlabLink: exerciseIdOrLink }
+                ]
+            }
+        });
+
+        if (!exercise) {
+            return res.status(StatusCodes.NOT_FOUND).send('Exercise not found');
+        }
+
+
+        const results = await db.result.findMany({
+            where: { exerciseId: exercise.id },
+        });
+
+        return res.status(StatusCodes.OK).json(results);
+    }
+
+
+    private async getAllExercises(req: express.Request, res: express.Response) {
+        const exo = await db.exercise.findMany();
+        return req.session.sendResponse(res, StatusCodes.OK, exo);
     }
 
     private getExerciseName(assignment: Assignment, members: Array<Gitlab.UserSchema>, suffix: number): string {
-- 
GitLab