diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index bea3010..bc8ef88 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -174,6 +174,9 @@ public class Gruppen2Controller { User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); Long parentId = group.getParent(); Group parent = new Group(); + if(group.getTitle() == null){ + throw new GroupNotFoundException(this.getClass().toString()); + } if (parentId != null) { parent = userService.getGroupById(parentId); } @@ -244,6 +247,18 @@ public class Gruppen2Controller { User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); controllerService.passIfLastAdmin(account, groupId); controllerService.deleteUser(user.getId(), groupId); + if(userService.getGroupById(groupId).getMembers().size() == 0){ + controllerService.deleteGroupEvent(user.getId(), groupId); + } + return "redirect:/gruppen2/"; + } + + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) + @PostMapping("/deleteGroup") + public String pDeleteGroup(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId){ + Account account = keyCloakService.createAccountFromPrincipal(token); + User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); + controllerService.deleteGroupEvent(user.getId(), groupId); return "redirect:/gruppen2/"; } @@ -283,9 +298,12 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @PostMapping("/details/members/deleteUser") - public String deleteUser(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId, + public String deleteUser(@RequestParam("group_id") Long groupId, @RequestParam("user_id") String userId) throws EventException { controllerService.deleteUser(userId, groupId); + if(userService.getGroupById(groupId).getMembers().size() == 0){ + controllerService.deleteGroupEvent(userId ,groupId); + } return "redirect:/gruppen2/details/members/" + groupId; } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index dd1a886..1642c1c 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -21,6 +21,7 @@ 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") }) @Getter @NoArgsConstructor diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 4d651d4..0d831ea 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -159,8 +159,8 @@ public class ControllerService { eventService.saveEvent(deleteUserEvent); } - public void deleteGroupEvent(User user, Long groupId) { - DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(groupId, user.getId()); + public void deleteGroupEvent(String user_id, Long groupId) { + DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(groupId, user_id); eventService.saveEvent(deleteGroupEvent); } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index fc9362c..69e6ddc 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -102,6 +102,9 @@ public class GroupService { List visibleGroups = projectEventList(eventsVisible); List visibleLectures = new ArrayList<>(); for (Group group : visibleGroups) { + if(group.getType() == null){ + continue; + } if (group.getType().equals(GroupType.LECTURE)) { visibleLectures.add(group); } @@ -121,6 +124,9 @@ public class GroupService { public List findGroupWith(String search, Account account) throws EventException { List groups = new ArrayList<>(); for (Group group : getAllGroupWithVisibilityPublic(account.getName())) { + if(group.getType() == null){ + continue; + } if (group.getTitle().toLowerCase().contains(search.toLowerCase()) || group.getDescription().toLowerCase().contains(search.toLowerCase())) { groups.add(group); } diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index ec34e6a..157649a 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -59,6 +59,12 @@ type="submit">Gruppe verlassen +
+ +
diff --git a/src/main/resources/templates/editMembers.html b/src/main/resources/templates/editMembers.html index 386374c..a58cc85 100644 --- a/src/main/resources/templates/editMembers.html +++ b/src/main/resources/templates/editMembers.html @@ -99,7 +99,7 @@ type="hidden"> - +