add initial search-tags, die finden aber evtl zuviel
This commit is contained in:
@ -19,6 +19,7 @@ import mops.gruppen2.domain.model.group.wrapper.Link;
|
|||||||
import mops.gruppen2.domain.model.group.wrapper.Parent;
|
import mops.gruppen2.domain.model.group.wrapper.Parent;
|
||||||
import mops.gruppen2.domain.model.group.wrapper.Title;
|
import mops.gruppen2.domain.model.group.wrapper.Title;
|
||||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||||
|
import mops.gruppen2.domain.service.helper.SortHelper;
|
||||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@ -302,7 +303,7 @@ public class Group {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String format() {
|
public String format() {
|
||||||
return title + " " + description;
|
return type + ": " + title + " - " + description;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
package mops.gruppen2.domain.model.group;
|
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
|
||||||
public final class SortHelper {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sortiert die übergebene Liste an Gruppen, sodass Veranstaltungen am Anfang der Liste sind.
|
|
||||||
*
|
|
||||||
* @param groups Die Liste von Gruppen die sortiert werden soll
|
|
||||||
*/
|
|
||||||
public static void sortByGroupType(List<Group> groups) {
|
|
||||||
groups.sort((Group g1, Group g2) -> {
|
|
||||||
if (g1.getType() == Type.LECTURE) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (g2.getType() == Type.LECTURE) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g1.getType() == Type.PUBLIC) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g2.getType() == Type.PUBLIC) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Membership> sortByMemberRole(List<Membership> memberships) {
|
|
||||||
memberships.sort((Membership m1, Membership m2) -> {
|
|
||||||
if (m1.getRole() == Role.ADMIN) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (m2.getRole() == Role.ADMIN) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
return memberships;
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,7 +4,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.model.group.Group;
|
import mops.gruppen2.domain.model.group.Group;
|
||||||
import mops.gruppen2.domain.model.group.SortHelper;
|
|
||||||
import mops.gruppen2.infrastructure.GroupCache;
|
import mops.gruppen2.infrastructure.GroupCache;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -30,13 +29,11 @@ public class SearchService {
|
|||||||
*
|
*
|
||||||
* @throws EventException Projektionsfehler
|
* @throws EventException Projektionsfehler
|
||||||
*/
|
*/
|
||||||
//TODO: search in lectures
|
|
||||||
public List<Group> search(String search, String principal) {
|
public List<Group> search(String search, String principal) {
|
||||||
List<Group> groups = new ArrayList<>();
|
List<Group> groups = new ArrayList<>();
|
||||||
groups.addAll(groupCache.publics());
|
groups.addAll(groupCache.publics());
|
||||||
groups.addAll(groupCache.lectures());
|
groups.addAll(groupCache.lectures());
|
||||||
groups = removeUserGroups(groups, principal);
|
groups = removeUserGroups(groups, principal);
|
||||||
SortHelper.sortByGroupType(groups);
|
|
||||||
|
|
||||||
if (search.isEmpty()) {
|
if (search.isEmpty()) {
|
||||||
return groups;
|
return groups;
|
||||||
@ -44,6 +41,8 @@ public class SearchService {
|
|||||||
|
|
||||||
log.debug("Es wurde gesucht nach: {}", search);
|
log.debug("Es wurde gesucht nach: {}", search);
|
||||||
|
|
||||||
|
// Die Suche nach Typ (LECTURE, PUBLIC), ist nicht wirklich sicher,
|
||||||
|
// da im gesamtstring danach gesucht wird
|
||||||
return groups.stream()
|
return groups.stream()
|
||||||
.filter(group -> group.format().toLowerCase().contains(search.toLowerCase()))
|
.filter(group -> group.format().toLowerCase().contains(search.toLowerCase()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package mops.gruppen2.domain.service.helper;
|
||||||
|
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import mops.gruppen2.domain.model.group.Membership;
|
||||||
|
import mops.gruppen2.domain.model.group.Role;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public final class SortHelper {
|
||||||
|
|
||||||
|
public static List<Membership> sortByMemberRole(List<Membership> memberships) {
|
||||||
|
memberships.sort((Membership m1, Membership m2) -> {
|
||||||
|
if (m1.getRole() == Role.ADMIN) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (m2.getRole() == Role.ADMIN) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
return memberships;
|
||||||
|
}
|
||||||
|
}
|
@ -224,7 +224,9 @@ public class GroupDetailsController {
|
|||||||
Group group = groupCache.group(UUID.fromString(groupId));
|
Group group = groupCache.group(UUID.fromString(groupId));
|
||||||
|
|
||||||
ValidationHelper.throwIfNoAdmin(group, principal);
|
ValidationHelper.throwIfNoAdmin(group, principal);
|
||||||
ValidationHelper.throwIfLastAdmin(group, principal);
|
if (target.equals(principal)) {
|
||||||
|
ValidationHelper.throwIfLastAdmin(group, principal);
|
||||||
|
}
|
||||||
|
|
||||||
groupService.toggleMemberRole(group, principal, target);
|
groupService.toggleMemberRole(group, principal, target);
|
||||||
|
|
||||||
|
@ -16,14 +16,36 @@
|
|||||||
<!--Suchfilter-->
|
<!--Suchfilter-->
|
||||||
<div class="content top">
|
<div class="content top">
|
||||||
<form method="post" th:action="@{/gruppen2/search}">
|
<form method="post" th:action="@{/gruppen2/search}">
|
||||||
<div class="input-group mb-3">
|
<div class="row mb-3">
|
||||||
<div class="input-group-prepend">
|
<div class="input-group col mr-2">
|
||||||
<span class="input-group-text text-monospace">Suchbegriff:</span>
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text text-monospace">Suchbegriff:</span>
|
||||||
|
</div>
|
||||||
|
<input class="form-control" required minlength="1" name="string" type="text">
|
||||||
</div>
|
</div>
|
||||||
<input class="form-control" name="string" type="text">
|
|
||||||
|
<button class="btn btn-primary" type="submit">Suchen</button>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary" type="submit">Suchen</button>
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<form method="post" th:action="@{/gruppen2/search}">
|
||||||
|
<input type="hidden" name="string" value="">
|
||||||
|
<button class="btn btn-info" type="submit">Alle Anzeigen</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!--spacer-->
|
||||||
|
<span class="col"></span>
|
||||||
|
|
||||||
|
<form method="post" th:action="@{/gruppen2/search}">
|
||||||
|
<input type="hidden" name="string" value="LECTURE">
|
||||||
|
<button class="btn btn-info mr-2" type="submit">Vorlesungen</button>
|
||||||
|
</form>
|
||||||
|
<form method="post" th:action="@{/gruppen2/search}">
|
||||||
|
<input type="hidden" name="string" value="PUBLIC">
|
||||||
|
<button class="btn btn-info" type="submit">Öffentliche Gruppen</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Ergebnisliste-->
|
<!--Ergebnisliste-->
|
||||||
|
Reference in New Issue
Block a user