From ace12c3140e7d2ed0e6b3d6baec6dfc7445a62e9 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Tue, 7 Jul 2020 12:22:45 +0300 Subject: [PATCH] Add updateusers end point for DMP --- .../src/main/java/eu/eudat/controllers/DMPs.java | 14 ++++++++++++++ .../logic/managers/DataManagementPlanManager.java | 12 ++++++++++++ .../src/app/core/services/dmp/dmp.service.ts | 5 +++++ 3 files changed, 31 insertions(+) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index 371a61386..135cac60b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -28,6 +28,7 @@ import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.models.data.listingmodels.DataManagementPlanListingModel; import eu.eudat.models.data.listingmodels.DataManagementPlanOverviewModel; +import eu.eudat.models.data.listingmodels.UserInfoListingModel; import eu.eudat.models.data.security.Principal; import eu.eudat.query.DMPQuery; import eu.eudat.types.ApiMessageCode; @@ -277,6 +278,19 @@ public class DMPs extends BaseController { } } + + @Transactional + @RequestMapping(method = RequestMethod.POST, value = {"/updateusers/{id}"}) + public ResponseEntity> updateUsers(@PathVariable String id, @RequestBody List users, Principal principal) { + try { + this.dataManagementPlanManager.updateUsers(UUID.fromString(id), users, principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully Updated Colaborators for Data Datamanagement Plan.")); + } catch (Exception e) { + logger.error(e.getMessage(), e); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Failed to update the users of Data Management Plan.")); + } + } + /* * DOI Generation * */ diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index 6d62ddb4e..495811aaa 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -867,6 +867,18 @@ public class DataManagementPlanManager { this.updateIndex(dmp); } + public void updateUsers(UUID id, List users, Principal principal) throws Exception { + DMP dmp = this.apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(id); + if (!isUserOwnerOfDmp(dmp, principal)) + throw new Exception("User does not have the privilege to do this action."); + clearUsers(dmp); + for (UserInfoListingModel userListing : users) { + UserInfo tempUser = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(userListing.getId()); + assignUser(dmp, tempUser, UserDMP.UserDMPRoles.fromInteger(userListing.getRole())); + } + + } + /* * Export Data * */ diff --git a/dmp-frontend/src/app/core/services/dmp/dmp.service.ts b/dmp-frontend/src/app/core/services/dmp/dmp.service.ts index 9819c90e3..e97f1ec25 100644 --- a/dmp-frontend/src/app/core/services/dmp/dmp.service.ts +++ b/dmp-frontend/src/app/core/services/dmp/dmp.service.ts @@ -19,6 +19,7 @@ import { ExploreDmpCriteriaModel } from '../../query/explore-dmp/explore-dmp-cri import { RequestItem } from '../../query/request-item'; import { BaseHttpService } from '../http/base-http.service'; import { ConfigurationService } from '../configuration/configuration.service'; +import { UserInfoListingModel } from '@app/core/model/user/user-info-listing'; @Injectable() export class DmpService { @@ -96,6 +97,10 @@ export class DmpService { return this.http.post(this.actionUrl + 'unfinalize/' + id, { headers: this.headers }); } + updateUsers(id: string, users: UserInfoListingModel[]): Observable { + return this.http.post(`${this.actionUrl}updateusers/${id}`, users, {headers: this.headers}); + } + getDoi(id: string): Observable { return this.http.post(this.actionUrl + 'createZenodoDoi/' + id, { headers: this.headers }); }