1

Merge pull request #102 from hhu-propra2/fix-search-after-leaving

fix-search after leaving group
This commit is contained in:
tomvahl
2020-03-19 14:20:19 +01:00
committed by GitHub
4 changed files with 27 additions and 14 deletions

View File

@ -226,7 +226,9 @@ public class Gruppen2Controller {
@PostMapping("/details/members/changeRole") @PostMapping("/details/members/changeRole")
public String changeRole(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId, public String changeRole(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId,
@RequestParam("user_id") String userId) throws EventException { @RequestParam("user_id") String userId) throws EventException {
Account account = keyCloakService.createAccountFromPrincipal(token);
controllerService.updateRole(userId, groupId); controllerService.updateRole(userId, groupId);
if(userId.equals(account.getName())) return "redirect:/gruppen2/details/" + groupId;
return "redirect:/gruppen2/details/members/" + groupId; return "redirect:/gruppen2/details/members/" + groupId;
} }

View File

@ -3,14 +3,16 @@ package mops.gruppen2.domain;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(exclude = {"givenname", "familyname", "email"}) @EqualsAndHashCode(exclude = {"givenname", "familyname", "email"})
public class User { public class User {
private final String id; private String id;
private final String givenname; private String givenname;
private final String familyname; private String familyname;
private final String email; private String email;
} }

View File

@ -1,6 +1,7 @@
package mops.gruppen2.service; package mops.gruppen2.service;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User;
import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.dto.EventDTO;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.EventException;
@ -66,11 +67,11 @@ public class GroupService {
return groups.get(groupId); return groups.get(groupId);
} }
private List<Long> removeUserGroups(List<Long> groupIds, List<Long> userGroups) { private List<Group> removeUserGroups(List<Group> visibleGroups, List<Group> userGroups) {
for (Long groupId : userGroups) { for (Group group : userGroups) {
groupIds.remove(groupId); visibleGroups.remove(group);
} }
return groupIds; return visibleGroups;
} }
/** /**
@ -81,10 +82,18 @@ public class GroupService {
* @throws EventException Projektionsfehler * @throws EventException Projektionsfehler
*/ */
public List<Group> getAllGroupWithVisibilityPublic(String userId) throws EventException { public List<Group> getAllGroupWithVisibilityPublic(String userId) throws EventException {
List<Long> groupIds = removeUserGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE), eventRepository.findGroup_idsWhereUser_id(userId)); User user = new User(userId,null, null, null);
List<EventDTO> eventDTOS = eventRepository.findAllEventsOfGroups(groupIds); List<Event> eventsVisible = eventService.translateEventDTOs(eventRepository.findAllEventsOfGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE)));
List<Event> events = eventService.translateEventDTOs(eventDTOS); List<Group> visibleGroups = projectEventList(eventsVisible);
return projectEventList(events); List<Event> eventsUser = getGroupEvents(eventRepository.findGroup_idsWhereUser_id(userId));
List<Group> groups = projectEventList(eventsUser);
List<Group> newGroups = new ArrayList<>();
for (Group group : groups) {
if (group.getMembers().contains(user)) {
newGroups.add(group);
}
}
return removeUserGroups(visibleGroups, newGroups);
} }

View File

@ -93,7 +93,7 @@
type="hidden"> type="hidden">
<input th:name="user_id" th:value="${member.getId()}" <input th:name="user_id" th:value="${member.getId()}"
type="hidden"> type="hidden">
<button class="btn btn-danger btn-sm">Mitglied entfernen <button th:if='${member.getId() != account.getName()}' class="btn btn-danger btn-sm">Mitglied entfernen
</button> </button>
</form> </form>
</td> </td>