1

add initial search-tags, die finden aber evtl zuviel

This commit is contained in:
Christoph
2020-04-17 17:24:49 +02:00
parent 8a7c02e01a
commit 9b58abdab2
6 changed files with 61 additions and 61 deletions

View File

@ -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

View File

@ -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;
}
}

View File

@ -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());

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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-->