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