From 069885a77114c0d32f16db0830fa0799d6b60399 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 20 Mar 2020 16:38:39 +0100 Subject: [PATCH] add adjusting UserMax --- .../controller/Gruppen2Controller.java | 8 +++++++- .../mops/gruppen2/domain/event/Event.java | 3 ++- .../domain/event/UpdateUserMaxEvent.java | 19 +++++++++++++++++++ .../gruppen2/service/ControllerService.java | 13 ++++++------- 4 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 src/main/java/mops/gruppen2/domain/event/UpdateUserMaxEvent.java diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 59e5efe..f5294bf 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -141,12 +141,18 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_actuator)"}) @PostMapping("/details/members/addUsersFromCsv") - public String addUsersFromCsv(@RequestParam("group_id") Long groupId, + public String addUsersFromCsv(KeycloakAuthenticationToken token, + @RequestParam("group_id") Long groupId, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException { + Account account = keyCloakService.createAccountFromPrincipal(token); List userList = new ArrayList<>(); + Group group = userService.getGroupById(groupId); if (!file.isEmpty()) { try { userList = CsvService.read(file.getInputStream()); + if(userList.size()+group.getMembers().size()>group.getUserMaximum()){ + controllerService.updateMaxUser(account, groupId, Long.valueOf(userList.size()) + group.getMembers().size()); + } } catch (UnrecognizedPropertyException | CharConversionException ex) { throw new WrongFileException(file.getOriginalFilename()); } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 1642c1c..d5eff90 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -21,7 +21,8 @@ import mops.gruppen2.domain.exception.GroupIdMismatchException; @JsonSubTypes.Type(value = UpdateGroupDescriptionEvent.class, name = "UpdateGroupDescriptionEvent"), @JsonSubTypes.Type(value = UpdateGroupTitleEvent.class, name = "UpdateGroupTitleEvent"), @JsonSubTypes.Type(value = UpdateRoleEvent.class, name = "UpdateRoleEvent"), - @JsonSubTypes.Type(value = DeleteGroupEvent.class, name = "DeleteGroupEvent") + @JsonSubTypes.Type(value = DeleteGroupEvent.class, name = "DeleteGroupEvent"), + @JsonSubTypes.Type(value = UpdateUserMaxEvent.class, name = "UpdateUserMaxEvent") }) @Getter @NoArgsConstructor diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateUserMaxEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateUserMaxEvent.java new file mode 100644 index 0000000..f4d5d59 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/event/UpdateUserMaxEvent.java @@ -0,0 +1,19 @@ +package mops.gruppen2.domain.event; + +import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.exception.EventException; + +public class UpdateUserMaxEvent extends Event { + + private Long userMaximum; + + public UpdateUserMaxEvent(Long group_id, String user_id, Long userMaximum) { + super(group_id,user_id); + this.userMaximum = userMaximum; + } + + @Override + protected void applyEvent(Group group) throws EventException { + group.setUserMaximum(this.userMaximum); + } +} diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 0d831ea..455fd35 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -5,13 +5,7 @@ import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; import mops.gruppen2.domain.Visibility; -import mops.gruppen2.domain.event.AddUserEvent; -import mops.gruppen2.domain.event.CreateGroupEvent; -import mops.gruppen2.domain.event.DeleteGroupEvent; -import mops.gruppen2.domain.event.DeleteUserEvent; -import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent; -import mops.gruppen2.domain.event.UpdateGroupTitleEvent; -import mops.gruppen2.domain.event.UpdateRoleEvent; +import mops.gruppen2.domain.event.*; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.UserNotFoundException; import mops.gruppen2.security.Account; @@ -120,6 +114,11 @@ public class ControllerService { eventService.saveEvent(updateGroupDescriptionEvent); } + public void updateMaxUser(Account account, Long groupId, Long userMaximum) { + UpdateUserMaxEvent updateUserMaxEvent = new UpdateUserMaxEvent(groupId,account.getName(),userMaximum); + eventService.saveEvent(updateUserMaxEvent); + } + public void updateRole(String userId, Long groupId) throws EventException { UpdateRoleEvent updateRoleEvent; Group group = userService.getGroupById(groupId);