From a271f88dbc039ccebc1bb6108339d61d8473eb96 Mon Sep 17 00:00:00 2001
From: "kelly.nguyen" <kelly.nguyen@etu.hesge.ch>
Date: Fri, 24 May 2024 16:20:05 +0200
Subject: [PATCH] deleteAssignment with ID from BDD

---
 ExpressAPI/src/managers/GitlabManager.ts  |  9 +++----
 ExpressAPI/src/routes/AssignmentRoutes.ts | 32 ++++++++++++++++++-----
 2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts
index 05d9f2e..096161b 100644
--- a/ExpressAPI/src/managers/GitlabManager.ts
+++ b/ExpressAPI/src/managers/GitlabManager.ts
@@ -274,11 +274,10 @@ class GitlabManager {
     }
     
     async moveRepositorySubGroup(repoId : number, newRepoId : number) {
-        const response = await axios.put(this.getApiUrl(GitlabRoute.REPOSITORY_MOVE_SUBGROUP).replace('{{id}}', String(repoId)), {
-            namespace : newRepoId
-        }
-    );
-
+        const response = await axios.put(this.getApiUrl(GitlabRoute.REPOSITORY_MOVE_SUBGROUP).replace('{{id}}', String(repoId)), 
+        { 
+            namespace : newRepoId 
+        });
         return response.data;
     }
 }
diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts
index a0d2fa8..0cdda90 100644
--- a/ExpressAPI/src/routes/AssignmentRoutes.ts
+++ b/ExpressAPI/src/routes/AssignmentRoutes.ts
@@ -50,8 +50,8 @@ class AssignmentRoutes implements RoutesManager {
         
         backend.patch('/assignments/:assignmentNameOrUrl/publish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.publishAssignment.bind(this));
         backend.patch('/assignments/:assignmentNameOrUrl/unpublish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.unpublishAssignment.bind(this));
-
-        backend.patch('/assignments/:assignmentNameOrUrl/deleted', SecurityMiddleware.check(false, SecurityCheckType.ASSIGNMENT_STAFF), this.deleteAssignment.bind(this));
+        
+        backend.patch('/assignments/:assignmentNameOrUrl/deleted', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.deleteAssignment.bind(this));
     }
     // Get an assignment by its name or gitlab url
     private async getAssignment(req: express.Request, res: express.Response) {
@@ -215,19 +215,37 @@ class AssignmentRoutes implements RoutesManager {
     private async deleteAssignment(req : express.Request, res : express.Response) {
         const nameAssignment = req.params.assignmentNameOrUrl;
 
-        // recup l'id du repo en question
-        await GitlabManager.removeRepositoryMember(13893, 627);
-        await GitlabManager.moveRepositorySubGroup(13893, 14193);
+        const repo = await db.assignment.findUnique({
+            where : {
+                name : String(nameAssignment)
+            }
+        });
+
+        if (!repo) {
+            return req.session.sendResponse(res, StatusCodes.NOT_FOUND);
+        }
 
+        const members = await GitlabManager.getRepositoryMembers(String(repo['gitlabId']));
+        members.forEach(async member => {
+            if ( member.id !== Config.gitlab.account.id ) {
+                await GitlabManager.removeRepositoryMember(repo['gitlabId'], member.id);
+            }
+        });
+        await GitlabManager.moveRepositorySubGroup(repo['gitlabId'], 14193);
+        
+        // recup l'id du repo en question
+        await GitlabManager.removeRepositoryMember(repo['gitlabId'], 627);
+        
+        
         await db.assignment.update({
             where : {
-                name : nameAssignment
+                name : String(nameAssignment)
             },
             data : {
                 deleted : true
             }
         });
-
+        
         return req.session.sendResponse(res, StatusCodes.OK);
     }
 }
-- 
GitLab