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.Title;
|
||||
import mops.gruppen2.domain.service.helper.CommonHelper;
|
||||
import mops.gruppen2.domain.service.helper.SortHelper;
|
||||
import mops.gruppen2.domain.service.helper.ValidationHelper;
|
||||
|
||||
import javax.validation.Valid;
|
||||
@ -302,7 +303,7 @@ public class Group {
|
||||
}
|
||||
|
||||
public String format() {
|
||||
return title + " " + description;
|
||||
return type + ": " + title + " - " + description;
|
||||
}
|
||||
|
||||
@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 mops.gruppen2.domain.exception.EventException;
|
||||
import mops.gruppen2.domain.model.group.Group;
|
||||
import mops.gruppen2.domain.model.group.SortHelper;
|
||||
import mops.gruppen2.infrastructure.GroupCache;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -30,13 +29,11 @@ public class SearchService {
|
||||
*
|
||||
* @throws EventException Projektionsfehler
|
||||
*/
|
||||
//TODO: search in lectures
|
||||
public List<Group> search(String search, String principal) {
|
||||
List<Group> groups = new ArrayList<>();
|
||||
groups.addAll(groupCache.publics());
|
||||
groups.addAll(groupCache.lectures());
|
||||
groups = removeUserGroups(groups, principal);
|
||||
SortHelper.sortByGroupType(groups);
|
||||
|
||||
if (search.isEmpty()) {
|
||||
return groups;
|
||||
@ -44,6 +41,8 @@ public class SearchService {
|
||||
|
||||
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()
|
||||
.filter(group -> group.format().toLowerCase().contains(search.toLowerCase()))
|
||||
.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));
|
||||
|
||||
ValidationHelper.throwIfNoAdmin(group, principal);
|
||||
ValidationHelper.throwIfLastAdmin(group, principal);
|
||||
if (target.equals(principal)) {
|
||||
ValidationHelper.throwIfLastAdmin(group, principal);
|
||||
}
|
||||
|
||||
groupService.toggleMemberRole(group, principal, target);
|
||||
|
||||
|
@ -16,14 +16,36 @@
|
||||
<!--Suchfilter-->
|
||||
<div class="content top">
|
||||
<form method="post" th:action="@{/gruppen2/search}">
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text text-monospace">Suchbegriff:</span>
|
||||
<div class="row mb-3">
|
||||
<div class="input-group col mr-2">
|
||||
<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>
|
||||
<input class="form-control" name="string" type="text">
|
||||
|
||||
<button class="btn btn-primary" type="submit">Suchen</button>
|
||||
</div>
|
||||
<button class="btn btn-primary" type="submit">Suchen</button>
|
||||
</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>
|
||||
|
||||
<!--Ergebnisliste-->
|
||||
|
Reference in New Issue
Block a user