From 479db666a3f5962ab2983c0ffee1af0d3ac8aa3e Mon Sep 17 00:00:00 2001 From: XXNitram Date: Fri, 20 Mar 2020 02:32:37 +0100 Subject: [PATCH 1/5] Add method to get all lectures that are public --- .../java/mops/gruppen2/service/GroupService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index f7b5d62..fc9362c 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,6 +1,7 @@ package mops.gruppen2.service; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.User; import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.event.Event; @@ -96,6 +97,18 @@ public class GroupService { return removeUserGroups(visibleGroups, newGroups); } + public List getAllLecturesWithVisibilityPublic() throws EventException { + List eventsVisible = eventService.translateEventDTOs(eventRepository.findAllEventsOfGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE))); + List visibleGroups = projectEventList(eventsVisible); + List visibleLectures = new ArrayList<>(); + for (Group group : visibleGroups) { + if (group.getType().equals(GroupType.LECTURE)) { + visibleLectures.add(group); + } + } + return visibleLectures; + } + /** * Filtert alle öffentliche Gruppen nach dem Suchbegriff und gibt diese als Liste von Gruppen zurück. From 820782c2cec193981b1ff2a73d00fcd3bc7fb5e7 Mon Sep 17 00:00:00 2001 From: XXNitram Date: Fri, 20 Mar 2020 02:36:51 +0100 Subject: [PATCH 2/5] Add feature to link a group to a lecture --- .../controller/Gruppen2Controller.java | 20 +++++++++++++------ .../gruppen2/service/ControllerService.java | 12 +++++------ src/main/resources/templates/createOrga.html | 13 +++++------- .../resources/templates/createStudent.html | 13 +++++------- 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 6946481..031d3fd 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -75,7 +75,9 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_actuator)"}) @GetMapping("/createOrga") public String createOrga(KeycloakAuthenticationToken token, Model model) { - model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + Account account = keyCloakService.createAccountFromPrincipal(token); + model.addAttribute("account", account); + model.addAttribute("lectures", groupService.getAllLecturesWithVisibilityPublic()); return "createOrga"; } @@ -87,6 +89,7 @@ public class Gruppen2Controller { @RequestParam(value = "visibility", required = false) Boolean visibility, @RequestParam(value = "lecture", required = false) Boolean lecture, @RequestParam("userMaximum") Long userMaximum, + @RequestParam(value = "parent", required = false) Long parent, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException, EventException { Account account = keyCloakService.createAccountFromPrincipal(token); @@ -99,9 +102,11 @@ public class Gruppen2Controller { } } visibility = visibility == null; - lecture = lecture == null; + lecture = lecture != null; - controllerService.createOrga(account, title, description, visibility, lecture, userMaximum, userList); + if (lecture) parent = null; + + controllerService.createOrga(account, title, description, visibility, lecture, userMaximum, parent, userList); return "redirect:/gruppen2/"; } @@ -109,7 +114,9 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_studentin"}) @GetMapping("/createStudent") public String createStudent(KeycloakAuthenticationToken token, Model model) { - model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + Account account = keyCloakService.createAccountFromPrincipal(token); + model.addAttribute("account", account); + model.addAttribute("lectures", groupService.getAllLecturesWithVisibilityPublic()); return "createStudent"; } @@ -119,11 +126,12 @@ public class Gruppen2Controller { @RequestParam("title") String title, @RequestParam("description") String description, @RequestParam(value = "visibility", required = false) Boolean visibility, - @RequestParam("userMaximum") Long userMaximum) throws EventException { + @RequestParam("userMaximum") Long userMaximum, + @RequestParam(value = "parent", required = false) Long parent) throws EventException { Account account = keyCloakService.createAccountFromPrincipal(token); visibility = visibility == null; - controllerService.createGroup(account, title, description, visibility, userMaximum); + controllerService.createGroup(account, title, description, visibility, userMaximum, parent); return "redirect:/gruppen2/"; } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index d46e708..4d651d4 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -46,7 +46,7 @@ public class ControllerService { * @param title Gruppentitel * @param description Gruppenbeschreibung */ - public void createGroup(Account account, String title, String description, Boolean visibility, Long userMaximum) throws EventException { + public void createGroup(Account account, String title, String description, Boolean visibility, Long userMaximum, Long parent) throws EventException { Visibility visibility1; Long groupId = eventService.checkGroup(); @@ -57,7 +57,7 @@ public class ControllerService { createInviteLink(groupId); } - CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), null, GroupType.SIMPLE, visibility1, userMaximum); + CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), parent, GroupType.SIMPLE, visibility1, userMaximum); eventService.saveEvent(createGroupEvent); addUser(account, groupId); @@ -66,7 +66,7 @@ public class ControllerService { updateRole(account.getName(), groupId); } - public void createOrga(Account account, String title, String description, Boolean visibility, Boolean lecture, Long maximmum, List users) throws EventException { + public void createOrga(Account account, String title, String description, Boolean visibility, Boolean lecture, Long userMaximum, Long parent, List users) throws EventException { Visibility visibility1; Long groupId = eventService.checkGroup(); @@ -78,12 +78,12 @@ public class ControllerService { GroupType groupType; if (lecture) { - groupType = GroupType.SIMPLE; - } else { groupType = GroupType.LECTURE; + } else { + groupType = GroupType.SIMPLE; } - CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), null, groupType, visibility1, maximmum); + CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), parent, groupType, visibility1, userMaximum); eventService.saveEvent(createGroupEvent); addUser(account, groupId); diff --git a/src/main/resources/templates/createOrga.html b/src/main/resources/templates/createOrga.html index 35b06a9..e7aaaa6 100644 --- a/src/main/resources/templates/createOrga.html +++ b/src/main/resources/templates/createOrga.html @@ -67,15 +67,12 @@ type="checkbox"> -
- - + + - - - -
diff --git a/src/main/resources/templates/createStudent.html b/src/main/resources/templates/createStudent.html index 90777bc..ab750ea 100644 --- a/src/main/resources/templates/createStudent.html +++ b/src/main/resources/templates/createStudent.html @@ -57,15 +57,12 @@
-
- - + + - - - -
From 066d425d3571dbd1cdddba69b626331e5832571d Mon Sep 17 00:00:00 2001 From: XXNitram Date: Fri, 20 Mar 2020 02:38:24 +0100 Subject: [PATCH 3/5] Add badge that displays parent group in detail site --- .../gruppen2/controller/Gruppen2Controller.java | 14 ++++++++++++++ src/main/resources/templates/detailsMember.html | 4 +++- src/main/resources/templates/detailsNoMember.html | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 031d3fd..bea3010 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -172,7 +172,14 @@ public class Gruppen2Controller { Group group = userService.getGroupById(groupId); Account account = keyCloakService.createAccountFromPrincipal(token); User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); + Long parentId = group.getParent(); + Group parent = new Group(); + if (parentId != null) { + parent = userService.getGroupById(parentId); + } if (group != null) { + model.addAttribute("parentId", parentId); + model.addAttribute("parent", parent); model.addAttribute("group", group); model.addAttribute("roles", group.getRoles()); model.addAttribute("user", user); @@ -204,8 +211,15 @@ public class Gruppen2Controller { public String showGroupDetailsNoMember(KeycloakAuthenticationToken token, Model model, @RequestParam("id") Long groupId) throws EventException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); Group group = userService.getGroupById(groupId); + Long parentId = group.getParent(); + Group parent = new Group(); + if (parentId != null) { + parent = userService.getGroupById(parentId); + } if (group != null && group.getUserMaximum() > group.getMembers().size()) { model.addAttribute("group", group); + model.addAttribute("parentId", parentId); + model.addAttribute("parent", parent); return "detailsNoMember"; } throw new GroupNotFoundException(this.getClass().toString()); diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index 5d833de..0c44135 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -39,7 +39,9 @@ Öffentliche Gruppe Veranstaltung + th:if='${group.getType() == group.getType().LECTURE}'>Veranstaltung + Parent
diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index ece315e..64571cc 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -41,6 +41,8 @@ Veranstaltung + Parent

Date: Fri, 20 Mar 2020 02:39:59 +0100 Subject: [PATCH 4/5] Add function that collapses the drop-down list if the lecture checkbox is checked --- src/main/resources/templates/createOrga.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/resources/templates/createOrga.html b/src/main/resources/templates/createOrga.html index e7aaaa6..d06692a 100644 --- a/src/main/resources/templates/createOrga.html +++ b/src/main/resources/templates/createOrga.html @@ -104,6 +104,13 @@ var fileName = $(this).val().split("\\").pop(); $(this).siblings(".custom-file-label").addClass("selected").html(fileName); }); + + // Collapsing lectureParent if lecture is checked + $(document).ready(function () { + $('#lecture').change(function () { + $('#lectureParent').fadeToggle(); + }); + }); From acac3ca17c63955a04c5f4b00413a22364699311 Mon Sep 17 00:00:00 2001 From: XXNitram Date: Fri, 20 Mar 2020 02:59:41 +0100 Subject: [PATCH 5/5] Change badge colour --- src/main/resources/templates/detailsMember.html | 2 +- src/main/resources/templates/detailsNoMember.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index 0c44135..ec34e6a 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -40,7 +40,7 @@ th:if="${group.getVisibility() == group.getVisibility().PUBLIC}">Öffentliche Gruppe Veranstaltung - Parent
diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index 64571cc..be65b7f 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -41,7 +41,7 @@ Veranstaltung - Parent