change memberlist to map, introduce wrappertypes for title, description, limit for easy validation
This commit is contained in:
1
lombok.config
Normal file
1
lombok.config
Normal file
@ -0,0 +1 @@
|
|||||||
|
lombok.anyConstructor.addConstructorProperties = true
|
@ -1,7 +0,0 @@
|
|||||||
package mops.gruppen2.domain;
|
|
||||||
|
|
||||||
public enum GroupType {
|
|
||||||
PUBLIC,
|
|
||||||
PRIVATE,
|
|
||||||
LECTURE
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
package mops.gruppen2.domain;
|
|
||||||
|
|
||||||
public enum Limit {
|
|
||||||
INFINITE,
|
|
||||||
LOCKED
|
|
||||||
}
|
|
@ -1,23 +1,18 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.Role;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.exception.GroupFullException;
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Role;
|
||||||
import java.util.UUID;
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fügt einen einzelnen Nutzer einer Gruppe hinzu.
|
* Fügt einen einzelnen Nutzer einer Gruppe hinzu.
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class AddUserEvent extends Event {
|
public class AddUserEvent extends Event {
|
||||||
@ -26,12 +21,7 @@ public class AddUserEvent extends Event {
|
|||||||
private String familyname;
|
private String familyname;
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
public AddUserEvent(UUID groupId, String userId, String givenname, String familyname, String email) {
|
private AddUserEvent() {}
|
||||||
super(groupId, userId);
|
|
||||||
this.givenname = givenname;
|
|
||||||
this.familyname = familyname;
|
|
||||||
this.email = email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AddUserEvent(Group group, User user) {
|
public AddUserEvent(Group group, User user) {
|
||||||
super(group.getId(), user.getId());
|
super(group.getId(), user.getId());
|
||||||
@ -42,17 +32,10 @@ public class AddUserEvent extends Event {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) throws EventException {
|
protected void applyEvent(Group group) throws EventException {
|
||||||
User user = new User(userId, givenname, familyname, email);
|
ValidationHelper.throwIfMember(group, new User(userId));
|
||||||
|
ValidationHelper.throwIfGroupFull(group);
|
||||||
|
|
||||||
if (group.getMembers().contains(user)) {
|
group.getMembers().put(userId, new User(userId, givenname, familyname, email));
|
||||||
throw new UserAlreadyExistsException(getClass().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (group.getMembers().size() >= group.getUserLimit()) {
|
|
||||||
throw new GroupFullException(getClass().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
group.getMembers().add(user);
|
|
||||||
group.getRoles().put(userId, Role.MEMBER);
|
group.getRoles().put(userId, Role.MEMBER);
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers());
|
log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers());
|
||||||
|
@ -1,34 +1,34 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.domain.GroupType;
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class CreateGroupEvent extends Event {
|
public class CreateGroupEvent extends Event {
|
||||||
|
|
||||||
private UUID groupParent;
|
private UUID groupParent;
|
||||||
private GroupType groupType;
|
private Type type;
|
||||||
|
|
||||||
public CreateGroupEvent(UUID groupId, String userId, UUID parent, GroupType type) {
|
private CreateGroupEvent() {}
|
||||||
|
|
||||||
|
public CreateGroupEvent(UUID groupId, String userId, UUID parent, Type type) {
|
||||||
super(groupId, userId);
|
super(groupId, userId);
|
||||||
groupParent = parent;
|
groupParent = parent;
|
||||||
groupType = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) {
|
protected void applyEvent(Group group) {
|
||||||
group.setId(groupId);
|
group.setId(groupId);
|
||||||
group.setParent(groupParent);
|
group.setParent(groupParent);
|
||||||
group.setType(groupType);
|
group.setType(type);
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tNeue Gruppe: {}", group.toString());
|
log.trace("\t\t\t\t\tNeue Gruppe: {}", group.toString());
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,17 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.domain.User;
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class DeleteGroupEvent extends Event {
|
public class DeleteGroupEvent extends Event {
|
||||||
|
|
||||||
public DeleteGroupEvent(UUID groupId, String userId) {
|
private DeleteGroupEvent() {}
|
||||||
super(groupId, userId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeleteGroupEvent(Group group, User user) {
|
public DeleteGroupEvent(Group group, User user) {
|
||||||
super(group.getId(), user.getId());
|
super(group.getId(), user.getId());
|
||||||
@ -31,7 +25,7 @@ public class DeleteGroupEvent extends Event {
|
|||||||
group.setDescription(null);
|
group.setDescription(null);
|
||||||
group.setType(null);
|
group.setType(null);
|
||||||
group.setParent(null);
|
group.setParent(null);
|
||||||
group.setUserLimit(0L);
|
group.setUserLimit(null);
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tGelöschte Gruppe: {}", group);
|
log.trace("\t\t\t\t\tGelöschte Gruppe: {}", group);
|
||||||
}
|
}
|
||||||
|
@ -1,47 +1,35 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.exception.UserNotFoundException;
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import java.util.UUID;
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entfernt ein einzelnes Mitglied einer Gruppe.
|
* Entfernt ein einzelnes Mitglied einer Gruppe.
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class DeleteUserEvent extends Event {
|
public class DeleteUserEvent extends Event {
|
||||||
|
|
||||||
public DeleteUserEvent(UUID groupId, String userId) {
|
private DeleteUserEvent() {}
|
||||||
super(groupId, userId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DeleteUserEvent(Group group, User user) {
|
public DeleteUserEvent(Group group, User user) {
|
||||||
super(group.getId(), user.getId());
|
super(group.getId(), user.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: what the fuck use List.remove
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) throws EventException {
|
protected void applyEvent(Group group) throws EventException {
|
||||||
for (User user : group.getMembers()) {
|
ValidationHelper.throwIfNoMember(group, new User(userId));
|
||||||
if (user.getId().equals(userId)) {
|
|
||||||
group.getMembers().remove(user);
|
|
||||||
group.getRoles().remove(user.getId());
|
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers());
|
group.getMembers().remove(userId);
|
||||||
log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles());
|
group.getRoles().remove(userId);
|
||||||
|
|
||||||
return;
|
log.trace("\t\t\t\t\tNeue Members: {}", group.getMembers());
|
||||||
}
|
log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles());
|
||||||
}
|
|
||||||
throw new UserNotFoundException(getClass().toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,9 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.exception.GroupIdMismatchException;
|
import mops.gruppen2.domain.exception.GroupIdMismatchException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -1,43 +1,32 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Description;
|
||||||
import mops.gruppen2.domain.User;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ändert nur die Gruppenbeschreibung.
|
* Ändert nur die Gruppenbeschreibung.
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class UpdateGroupDescriptionEvent extends Event {
|
public class UpdateGroupDescriptionEvent extends Event {
|
||||||
|
|
||||||
private String newGroupDescription;
|
private Description groupDescription;
|
||||||
|
|
||||||
public UpdateGroupDescriptionEvent(UUID groupId, String userId, String newGroupDescription) {
|
private UpdateGroupDescriptionEvent() {}
|
||||||
super(groupId, userId);
|
|
||||||
this.newGroupDescription = newGroupDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UpdateGroupDescriptionEvent(Group group, User user, String newGroupDescription) {
|
public UpdateGroupDescriptionEvent(Group group, User user, Description groupDescription) {
|
||||||
super(group.getId(), user.getId());
|
super(group.getId(), user.getId());
|
||||||
this.newGroupDescription = newGroupDescription;
|
this.groupDescription = groupDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) {
|
protected void applyEvent(Group group) {
|
||||||
if (newGroupDescription.isEmpty()) {
|
group.setDescription(groupDescription);
|
||||||
throw new BadParameterException("Die Beschreibung ist leer.");
|
|
||||||
}
|
|
||||||
|
|
||||||
group.setDescription(newGroupDescription);
|
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tNeue Beschreibung: {}", group.getDescription());
|
log.trace("\t\t\t\t\tNeue Beschreibung: {}", group.getDescription());
|
||||||
}
|
}
|
||||||
|
@ -1,42 +1,31 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.domain.User;
|
import mops.gruppen2.domain.model.Title;
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ändert nur den Gruppentitel.
|
* Ändert nur den Gruppentitel.
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class UpdateGroupTitleEvent extends Event {
|
public class UpdateGroupTitleEvent extends Event {
|
||||||
|
|
||||||
private String newGroupTitle;
|
private Title newGroupTitle;
|
||||||
|
|
||||||
public UpdateGroupTitleEvent(UUID groupId, String userId, String newGroupTitle) {
|
private UpdateGroupTitleEvent() {}
|
||||||
super(groupId, userId);
|
|
||||||
this.newGroupTitle = newGroupTitle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UpdateGroupTitleEvent(Group group, User user, String newGroupTitle) {
|
public UpdateGroupTitleEvent(Group group, User user, Title newGroupTitle) {
|
||||||
super(group.getId(), user.getId());
|
super(group.getId(), user.getId());
|
||||||
this.newGroupTitle = newGroupTitle;
|
this.newGroupTitle = newGroupTitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) {
|
protected void applyEvent(Group group) {
|
||||||
if (newGroupTitle.isEmpty()) {
|
|
||||||
throw new BadParameterException("Der Titel ist leer.");
|
|
||||||
}
|
|
||||||
|
|
||||||
group.setTitle(newGroupTitle);
|
group.setTitle(newGroupTitle);
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tNeuer Titel: {}", group.getTitle());
|
log.trace("\t\t\t\t\tNeuer Titel: {}", group.getTitle());
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.Role;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.UserNotFoundException;
|
import mops.gruppen2.domain.exception.UserNotFoundException;
|
||||||
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Role;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -15,13 +15,14 @@ import java.util.UUID;
|
|||||||
* Aktualisiert die Gruppenrolle eines Teilnehmers.
|
* Aktualisiert die Gruppenrolle eines Teilnehmers.
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor // For Jackson
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class UpdateRoleEvent extends Event {
|
public class UpdateRoleEvent extends Event {
|
||||||
|
|
||||||
private Role newRole;
|
private Role newRole;
|
||||||
|
|
||||||
|
private UpdateRoleEvent() {}
|
||||||
|
|
||||||
public UpdateRoleEvent(UUID groupId, String userId, Role newRole) {
|
public UpdateRoleEvent(UUID groupId, String userId, Role newRole) {
|
||||||
super(groupId, userId);
|
super(groupId, userId);
|
||||||
this.newRole = newRole;
|
this.newRole = newRole;
|
||||||
@ -34,15 +35,11 @@ public class UpdateRoleEvent extends Event {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) throws UserNotFoundException {
|
protected void applyEvent(Group group) throws UserNotFoundException {
|
||||||
if (group.getRoles().containsKey(userId)) {
|
ValidationHelper.throwIfNoMember(group, new User(userId));
|
||||||
group.getRoles().put(userId, newRole);
|
|
||||||
|
|
||||||
log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles());
|
group.getRoles().put(userId, newRole);
|
||||||
|
|
||||||
return;
|
log.trace("\t\t\t\t\tNeue Rollen: {}", group.getRoles());
|
||||||
}
|
|
||||||
|
|
||||||
throw new UserNotFoundException(getClass().toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,38 +1,32 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.exception.BadParameterException;
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import java.util.UUID;
|
import mops.gruppen2.domain.model.Limit;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor
|
|
||||||
@ToString
|
@ToString
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public class UpdateUserLimitEvent extends Event {
|
public class UpdateUserLimitEvent extends Event {
|
||||||
|
|
||||||
private long userLimit;
|
private Limit userLimit;
|
||||||
|
|
||||||
public UpdateUserLimitEvent(UUID groupId, String userId, long userLimit) {
|
private UpdateUserLimitEvent() {}
|
||||||
super(groupId, userId);
|
|
||||||
this.userLimit = userLimit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UpdateUserLimitEvent(Group group, User user, long userLimit) {
|
public UpdateUserLimitEvent(Group group, User user, Limit userLimit) {
|
||||||
super(group.getId(), user.getId());
|
super(group.getId(), user.getId());
|
||||||
this.userLimit = userLimit;
|
this.userLimit = userLimit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyEvent(Group group) throws EventException {
|
protected void applyEvent(Group group) throws EventException {
|
||||||
if (userLimit <= 0 || userLimit < group.getMembers().size()) {
|
if (userLimit.getUserLimit() < group.getMembers().size()) {
|
||||||
throw new BadParameterException("Usermaximum zu klein.");
|
throw new BadParameterException("Teilnehmerlimit zu klein.");
|
||||||
}
|
}
|
||||||
|
|
||||||
group.setUserLimit(userLimit);
|
group.setUserLimit(userLimit);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package mops.gruppen2.domain.helper;
|
package mops.gruppen2.domain.helper;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.web.api.GroupRequestWrapper;
|
import mops.gruppen2.web.api.GroupRequestWrapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -4,9 +4,9 @@ import com.fasterxml.jackson.databind.ObjectReader;
|
|||||||
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
|
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
|
||||||
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
|
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.exception.WrongFileException;
|
import mops.gruppen2.domain.exception.WrongFileException;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
package mops.gruppen2.domain.helper;
|
package mops.gruppen2.domain.helper;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.exception.BadParameterException;
|
||||||
import mops.gruppen2.domain.exception.GroupFullException;
|
import mops.gruppen2.domain.exception.GroupFullException;
|
||||||
import mops.gruppen2.domain.exception.NoAccessException;
|
import mops.gruppen2.domain.exception.NoAccessException;
|
||||||
import mops.gruppen2.domain.exception.NoAdminAfterActionException;
|
import mops.gruppen2.domain.exception.NoAdminAfterActionException;
|
||||||
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
||||||
import mops.gruppen2.domain.exception.UserNotFoundException;
|
import mops.gruppen2.domain.exception.UserNotFoundException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.web.form.CreateForm;
|
import mops.gruppen2.web.form.CreateForm;
|
||||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||||
|
|
||||||
import static mops.gruppen2.domain.Role.ADMIN;
|
import static mops.gruppen2.domain.model.Role.ADMIN;
|
||||||
|
|
||||||
@Log4j2
|
@Log4j2
|
||||||
public final class ValidationHelper {
|
public final class ValidationHelper {
|
||||||
@ -28,7 +28,7 @@ public final class ValidationHelper {
|
|||||||
* Überprüft, ob ein User in einer Gruppe teilnimmt.
|
* Überprüft, ob ein User in einer Gruppe teilnimmt.
|
||||||
*/
|
*/
|
||||||
public static boolean checkIfMember(Group group, User user) {
|
public static boolean checkIfMember(Group group, User user) {
|
||||||
return group.getMembers().contains(user);
|
return group.getMembers().containsKey(user.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkIfLastMember(User user, Group group) {
|
public static boolean checkIfLastMember(User user, Group group) {
|
||||||
@ -39,7 +39,7 @@ public final class ValidationHelper {
|
|||||||
* Überprüft, ob eine Gruppe voll ist.
|
* Überprüft, ob eine Gruppe voll ist.
|
||||||
*/
|
*/
|
||||||
public static boolean checkIfGroupFull(Group group) {
|
public static boolean checkIfGroupFull(Group group) {
|
||||||
return group.getMembers().size() >= group.getUserLimit();
|
return group.getMembers().size() >= group.getUserLimit().getUserLimit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -111,7 +111,7 @@ public final class ValidationHelper {
|
|||||||
|
|
||||||
public static void validateCreateForm(KeycloakAuthenticationToken token, CreateForm form) {
|
public static void validateCreateForm(KeycloakAuthenticationToken token, CreateForm form) {
|
||||||
if (!token.getAccount().getRoles().contains("orga")
|
if (!token.getAccount().getRoles().contains("orga")
|
||||||
&& form.getType() == GroupType.LECTURE) {
|
&& form.getType() == Type.LECTURE) {
|
||||||
throw new BadParameterException("Eine Veranstaltung kann nur von ORGA erstellt werden.");
|
throw new BadParameterException("Eine Veranstaltung kann nur von ORGA erstellt werden.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
src/main/java/mops/gruppen2/domain/model/Description.java
Normal file
20
src/main/java/mops/gruppen2/domain/model/Description.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
|
|
||||||
|
@Value
|
||||||
|
@Getter
|
||||||
|
//@AllArgsConstructor
|
||||||
|
//@NoArgsConstructor
|
||||||
|
public class Description {
|
||||||
|
|
||||||
|
//private Description() {}
|
||||||
|
|
||||||
|
@NotBlank
|
||||||
|
@Size(min = 4, max = 512)
|
||||||
|
String groupDescription;
|
||||||
|
}
|
@ -1,13 +1,11 @@
|
|||||||
package mops.gruppen2.domain;
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -26,19 +24,16 @@ public class Group {
|
|||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
private UUID parent;
|
private UUID parent;
|
||||||
|
|
||||||
//TODO: Single Type for Public/Private/Lecture?
|
private Type type;
|
||||||
private GroupType type;
|
|
||||||
|
|
||||||
private String title;
|
private Title title;
|
||||||
private String description;
|
private Description description;
|
||||||
|
|
||||||
// Default + Minimum: 1
|
|
||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
private long userLimit = 1;
|
private Limit userLimit = new Limit(1); // Add initial user
|
||||||
|
|
||||||
//TODO: List to Hashmap
|
|
||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
private final List<User> members = new ArrayList<>();
|
private final Map<String, User> members = new HashMap<>();
|
||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
private final Map<String, Role> roles = new HashMap<>();
|
private final Map<String, Role> roles = new HashMap<>();
|
||||||
}
|
}
|
19
src/main/java/mops/gruppen2/domain/model/Limit.java
Normal file
19
src/main/java/mops/gruppen2/domain/model/Limit.java
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
|
import javax.validation.constraints.Max;
|
||||||
|
import javax.validation.constraints.Min;
|
||||||
|
|
||||||
|
@Value
|
||||||
|
//@Getter
|
||||||
|
//@AllArgsConstructor
|
||||||
|
//@NoArgsConstructor
|
||||||
|
public class Limit {
|
||||||
|
|
||||||
|
//private Limit() {}
|
||||||
|
|
||||||
|
@Min(1)
|
||||||
|
@Max(999_999)
|
||||||
|
long userLimit;
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package mops.gruppen2.domain;
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
public enum Role {
|
public enum Role {
|
||||||
ADMIN,
|
ADMIN,
|
19
src/main/java/mops/gruppen2/domain/model/Title.java
Normal file
19
src/main/java/mops/gruppen2/domain/model/Title.java
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
|
|
||||||
|
@Value
|
||||||
|
//@Getter
|
||||||
|
//@AllArgsConstructor
|
||||||
|
//@NoArgsConstructor
|
||||||
|
public class Title {
|
||||||
|
|
||||||
|
//private Title() {}
|
||||||
|
|
||||||
|
@NotBlank
|
||||||
|
@Size(min = 4, max = 128)
|
||||||
|
String groupTitle;
|
||||||
|
}
|
7
src/main/java/mops/gruppen2/domain/model/Type.java
Normal file
7
src/main/java/mops/gruppen2/domain/model/Type.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
PUBLIC,
|
||||||
|
PRIVATE,
|
||||||
|
LECTURE
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package mops.gruppen2.domain;
|
package mops.gruppen2.domain.model;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
@ -2,13 +2,13 @@ package mops.gruppen2.domain.service;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.event.AddUserEvent;
|
import mops.gruppen2.domain.event.AddUserEvent;
|
||||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||||
import mops.gruppen2.domain.event.Event;
|
import mops.gruppen2.domain.event.Event;
|
||||||
import mops.gruppen2.domain.exception.BadPayloadException;
|
import mops.gruppen2.domain.exception.BadPayloadException;
|
||||||
import mops.gruppen2.domain.helper.IdHelper;
|
import mops.gruppen2.domain.helper.IdHelper;
|
||||||
import mops.gruppen2.domain.helper.JsonHelper;
|
import mops.gruppen2.domain.helper.JsonHelper;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.persistance.EventRepository;
|
import mops.gruppen2.persistance.EventRepository;
|
||||||
import mops.gruppen2.persistance.dto.EventDTO;
|
import mops.gruppen2.persistance.dto.EventDTO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
package mops.gruppen2.domain.service;
|
package mops.gruppen2.domain.service;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.Role;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.event.AddUserEvent;
|
import mops.gruppen2.domain.event.AddUserEvent;
|
||||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||||
import mops.gruppen2.domain.event.DeleteGroupEvent;
|
import mops.gruppen2.domain.event.DeleteGroupEvent;
|
||||||
@ -16,6 +12,13 @@ import mops.gruppen2.domain.event.UpdateRoleEvent;
|
|||||||
import mops.gruppen2.domain.event.UpdateUserLimitEvent;
|
import mops.gruppen2.domain.event.UpdateUserLimitEvent;
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
|
import mops.gruppen2.domain.model.Description;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Limit;
|
||||||
|
import mops.gruppen2.domain.model.Role;
|
||||||
|
import mops.gruppen2.domain.model.Title;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -49,16 +52,16 @@ public class GroupService {
|
|||||||
* @param description Gruppenbeschreibung
|
* @param description Gruppenbeschreibung
|
||||||
*/
|
*/
|
||||||
public Group createGroup(User user,
|
public Group createGroup(User user,
|
||||||
String title,
|
Title title,
|
||||||
String description,
|
Description description,
|
||||||
GroupType groupType,
|
Type type,
|
||||||
long userLimit,
|
Limit userLimit,
|
||||||
UUID parent) {
|
UUID parent) {
|
||||||
|
|
||||||
// Regeln:
|
// Regeln:
|
||||||
// isPrivate -> !isLecture
|
// isPrivate -> !isLecture
|
||||||
// isLecture -> !isPrivate
|
// isLecture -> !isPrivate
|
||||||
Group group = createGroup(user, parent, groupType);
|
Group group = createGroup(user, parent, type);
|
||||||
|
|
||||||
// Die Reihenfolge ist wichtig, da der ausführende User Admin sein muss
|
// Die Reihenfolge ist wichtig, da der ausführende User Admin sein muss
|
||||||
addUser(user, group);
|
addUser(user, group);
|
||||||
@ -102,8 +105,8 @@ public class GroupService {
|
|||||||
*
|
*
|
||||||
* @return Das neue Teilnehmermaximum
|
* @return Das neue Teilnehmermaximum
|
||||||
*/
|
*/
|
||||||
private static long getAdjustedUserLimit(List<User> newUsers, Group group) {
|
private static Limit getAdjustedUserLimit(List<User> newUsers, Group group) {
|
||||||
return Math.max((long) group.getMembers().size() + newUsers.size(), group.getUserLimit());
|
return new Limit(Math.max((long) group.getMembers().size() + newUsers.size(), group.getUserLimit().getUserLimit()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -131,11 +134,11 @@ public class GroupService {
|
|||||||
/**
|
/**
|
||||||
* Erzeugt eine Gruppe, speichert diese und gibt diese zurück.
|
* Erzeugt eine Gruppe, speichert diese und gibt diese zurück.
|
||||||
*/
|
*/
|
||||||
private Group createGroup(User user, UUID parent, GroupType groupType) {
|
private Group createGroup(User user, UUID parent, Type type) {
|
||||||
Event event = new CreateGroupEvent(UUID.randomUUID(),
|
Event event = new CreateGroupEvent(UUID.randomUUID(),
|
||||||
user.getId(),
|
user.getId(),
|
||||||
parent,
|
parent,
|
||||||
groupType);
|
type);
|
||||||
Group group = new Group();
|
Group group = new Group();
|
||||||
event.apply(group);
|
event.apply(group);
|
||||||
|
|
||||||
@ -206,14 +209,14 @@ public class GroupService {
|
|||||||
* Prüft, ob der Nutzer Admin ist und ob der Titel valide ist.
|
* Prüft, ob der Nutzer Admin ist und ob der Titel valide ist.
|
||||||
* Bei keiner Änderung wird nichts erzeugt.
|
* Bei keiner Änderung wird nichts erzeugt.
|
||||||
*/
|
*/
|
||||||
public void updateTitle(User user, Group group, String title) {
|
public void updateTitle(User user, Group group, Title title) {
|
||||||
ValidationHelper.throwIfNoAdmin(group, user);
|
ValidationHelper.throwIfNoAdmin(group, user);
|
||||||
|
|
||||||
if (title.trim().equals(group.getTitle())) {
|
if (title.equals(group.getTitle())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Event event = new UpdateGroupTitleEvent(group, user, title.trim());
|
Event event = new UpdateGroupTitleEvent(group, user, title);
|
||||||
event.apply(group);
|
event.apply(group);
|
||||||
|
|
||||||
eventStoreService.saveEvent(event);
|
eventStoreService.saveEvent(event);
|
||||||
@ -224,14 +227,14 @@ public class GroupService {
|
|||||||
* Prüft, ob der Nutzer Admin ist und ob die Beschreibung valide ist.
|
* Prüft, ob der Nutzer Admin ist und ob die Beschreibung valide ist.
|
||||||
* Bei keiner Änderung wird nichts erzeugt.
|
* Bei keiner Änderung wird nichts erzeugt.
|
||||||
*/
|
*/
|
||||||
public void updateDescription(User user, Group group, String description) {
|
public void updateDescription(User user, Group group, Description description) {
|
||||||
ValidationHelper.throwIfNoAdmin(group, user);
|
ValidationHelper.throwIfNoAdmin(group, user);
|
||||||
|
|
||||||
if (description.trim().equals(group.getDescription())) {
|
if (description.equals(group.getDescription())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Event event = new UpdateGroupDescriptionEvent(group, user, description.trim());
|
Event event = new UpdateGroupDescriptionEvent(group, user, description);
|
||||||
event.apply(group);
|
event.apply(group);
|
||||||
|
|
||||||
eventStoreService.saveEvent(event);
|
eventStoreService.saveEvent(event);
|
||||||
@ -260,7 +263,7 @@ public class GroupService {
|
|||||||
* Prüft, ob der Nutzer Admin ist und ob das Limit valide ist.
|
* Prüft, ob der Nutzer Admin ist und ob das Limit valide ist.
|
||||||
* Bei keiner Änderung wird nichts erzeugt.
|
* Bei keiner Änderung wird nichts erzeugt.
|
||||||
*/
|
*/
|
||||||
public void updateUserLimit(User user, Group group, long userLimit) {
|
public void updateUserLimit(User user, Group group, Limit userLimit) {
|
||||||
ValidationHelper.throwIfNoAdmin(group, user);
|
ValidationHelper.throwIfNoAdmin(group, user);
|
||||||
|
|
||||||
if (userLimit == group.getUserLimit()) {
|
if (userLimit == group.getUserLimit()) {
|
||||||
@ -268,8 +271,8 @@ public class GroupService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Event event;
|
Event event;
|
||||||
if (userLimit < group.getMembers().size()) {
|
if (userLimit.getUserLimit() < group.getMembers().size()) {
|
||||||
event = new UpdateUserLimitEvent(group, user, group.getMembers().size());
|
event = new UpdateUserLimitEvent(group, user, new Limit(group.getMembers().size()));
|
||||||
} else {
|
} else {
|
||||||
event = new UpdateUserLimitEvent(group, user, userLimit);
|
event = new UpdateUserLimitEvent(group, user, userLimit);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package mops.gruppen2.domain.service;
|
package mops.gruppen2.domain.service;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.InvalidInviteException;
|
import mops.gruppen2.domain.exception.InvalidInviteException;
|
||||||
import mops.gruppen2.domain.exception.NoInviteExistException;
|
import mops.gruppen2.domain.exception.NoInviteExistException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.persistance.InviteRepository;
|
import mops.gruppen2.persistance.InviteRepository;
|
||||||
import mops.gruppen2.persistance.dto.InviteLinkDTO;
|
import mops.gruppen2.persistance.dto.InviteLinkDTO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package mops.gruppen2.domain.service;
|
package mops.gruppen2.domain.service;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.event.Event;
|
import mops.gruppen2.domain.event.Event;
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
import mops.gruppen2.domain.exception.GroupNotFoundException;
|
import mops.gruppen2.domain.exception.GroupNotFoundException;
|
||||||
import mops.gruppen2.domain.helper.IdHelper;
|
import mops.gruppen2.domain.helper.IdHelper;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ public class ProjectionService {
|
|||||||
List<Group> groups = projectGroups(events);
|
List<Group> groups = projectGroups(events);
|
||||||
|
|
||||||
return groups.stream()
|
return groups.stream()
|
||||||
.filter(group -> group.getType() == GroupType.PUBLIC)
|
.filter(group -> group.getType() != Type.PRIVATE)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ public class ProjectionService {
|
|||||||
List<Group> lectures = projectGroups(events);
|
List<Group> lectures = projectGroups(events);
|
||||||
|
|
||||||
return lectures.stream()
|
return lectures.stream()
|
||||||
.filter(group -> group.getType() == GroupType.LECTURE)
|
.filter(group -> group.getType() == Type.LECTURE)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package mops.gruppen2.domain.service;
|
package mops.gruppen2.domain.service;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.EventException;
|
import mops.gruppen2.domain.exception.EventException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -56,10 +56,10 @@ public class SearchService {
|
|||||||
*/
|
*/
|
||||||
private static void sortByGroupType(List<Group> groups) {
|
private static void sortByGroupType(List<Group> groups) {
|
||||||
groups.sort((Group g1, Group g2) -> {
|
groups.sort((Group g1, Group g2) -> {
|
||||||
if (g1.getType() == GroupType.LECTURE) {
|
if (g1.getType() == Type.LECTURE) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (g2.getType() == GroupType.LECTURE) {
|
if (g2.getType() == Type.LECTURE) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,12 +3,13 @@ package mops.gruppen2.web;
|
|||||||
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.helper.APIHelper;
|
import mops.gruppen2.domain.helper.APIHelper;
|
||||||
import mops.gruppen2.domain.helper.IdHelper;
|
import mops.gruppen2.domain.helper.IdHelper;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.domain.service.EventStoreService;
|
import mops.gruppen2.domain.service.EventStoreService;
|
||||||
import mops.gruppen2.domain.service.ProjectionService;
|
import mops.gruppen2.domain.service.ProjectionService;
|
||||||
import mops.gruppen2.web.api.GroupRequestWrapper;
|
import mops.gruppen2.web.api.GroupRequestWrapper;
|
||||||
@ -26,6 +27,7 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
@Log4j2
|
@Log4j2
|
||||||
@TraceMethodCalls
|
@TraceMethodCalls
|
||||||
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/gruppen2/api")
|
@RequestMapping("/gruppen2/api")
|
||||||
public class APIController {
|
public class APIController {
|
||||||
@ -33,11 +35,6 @@ public class APIController {
|
|||||||
private final EventStoreService eventStoreService;
|
private final EventStoreService eventStoreService;
|
||||||
private final ProjectionService projectionService;
|
private final ProjectionService projectionService;
|
||||||
|
|
||||||
public APIController(EventStoreService eventStoreService, ProjectionService projectionService) {
|
|
||||||
this.eventStoreService = eventStoreService;
|
|
||||||
this.projectionService = projectionService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Erzeugt eine Liste aus Gruppen, welche sich seit einer übergebenen Event-Id geändert haben.
|
* Erzeugt eine Liste aus Gruppen, welche sich seit einer übergebenen Event-Id geändert haben.
|
||||||
* Die Gruppen werden vollständig projiziert, enthalten also alle Informationen zum entsprechenden Zeitpunkt.
|
* Die Gruppen werden vollständig projiziert, enthalten also alle Informationen zum entsprechenden Zeitpunkt.
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
package mops.gruppen2.web;
|
package mops.gruppen2.web;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.helper.CsvHelper;
|
import mops.gruppen2.domain.helper.CsvHelper;
|
||||||
import mops.gruppen2.domain.helper.IdHelper;
|
import mops.gruppen2.domain.helper.IdHelper;
|
||||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
|
import mops.gruppen2.domain.model.Description;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Limit;
|
||||||
|
import mops.gruppen2.domain.model.Title;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.domain.service.GroupService;
|
import mops.gruppen2.domain.service.GroupService;
|
||||||
import mops.gruppen2.domain.service.ProjectionService;
|
import mops.gruppen2.domain.service.ProjectionService;
|
||||||
import mops.gruppen2.web.form.CreateForm;
|
import mops.gruppen2.web.form.CreateForm;
|
||||||
import mops.gruppen2.web.form.MetaForm;
|
|
||||||
import mops.gruppen2.web.form.UserLimitForm;
|
|
||||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
@ -26,6 +28,7 @@ import javax.validation.Valid;
|
|||||||
@SuppressWarnings("SameReturnValue")
|
@SuppressWarnings("SameReturnValue")
|
||||||
@Log4j2
|
@Log4j2
|
||||||
@TraceMethodCalls
|
@TraceMethodCalls
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/gruppen2")
|
@RequestMapping("/gruppen2")
|
||||||
public class GroupCreationController {
|
public class GroupCreationController {
|
||||||
@ -33,11 +36,6 @@ public class GroupCreationController {
|
|||||||
private final GroupService groupService;
|
private final GroupService groupService;
|
||||||
private final ProjectionService projectionService;
|
private final ProjectionService projectionService;
|
||||||
|
|
||||||
public GroupCreationController(GroupService groupService, ProjectionService projectionService) {
|
|
||||||
this.groupService = groupService;
|
|
||||||
this.projectionService = projectionService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@RolesAllowed({"ROLE_orga", "ROLE_studentin"})
|
@RolesAllowed({"ROLE_orga", "ROLE_studentin"})
|
||||||
@GetMapping("/create")
|
@GetMapping("/create")
|
||||||
public String getCreate(Model model) {
|
public String getCreate(Model model) {
|
||||||
@ -52,18 +50,19 @@ public class GroupCreationController {
|
|||||||
@CacheEvict(value = "groups", allEntries = true)
|
@CacheEvict(value = "groups", allEntries = true)
|
||||||
public String postCreateOrga(KeycloakAuthenticationToken token,
|
public String postCreateOrga(KeycloakAuthenticationToken token,
|
||||||
@Valid CreateForm create,
|
@Valid CreateForm create,
|
||||||
@Valid MetaForm meta,
|
@Valid Title title,
|
||||||
@Valid UserLimitForm limit) {
|
@Valid Description description,
|
||||||
|
@Valid Limit limit) {
|
||||||
|
|
||||||
// Zusätzlicher check: studentin kann keine lecture erstellen
|
// Zusätzlicher check: studentin kann keine lecture erstellen
|
||||||
ValidationHelper.validateCreateForm(token, create);
|
ValidationHelper.validateCreateForm(token, create);
|
||||||
|
|
||||||
User user = new User(token);
|
User user = new User(token);
|
||||||
Group group = groupService.createGroup(user,
|
Group group = groupService.createGroup(user,
|
||||||
meta.getTitle(),
|
title,
|
||||||
meta.getDescription(),
|
description,
|
||||||
create.getType(),
|
create.getType(),
|
||||||
limit.getUserlimit(),
|
limit,
|
||||||
create.getParent());
|
create.getParent());
|
||||||
|
|
||||||
// ROLE_studentin kann kein CSV importieren
|
// ROLE_studentin kann kein CSV importieren
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
package mops.gruppen2.web;
|
package mops.gruppen2.web;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.helper.CsvHelper;
|
import mops.gruppen2.domain.helper.CsvHelper;
|
||||||
import mops.gruppen2.domain.helper.IdHelper;
|
import mops.gruppen2.domain.helper.IdHelper;
|
||||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
|
import mops.gruppen2.domain.model.Description;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Limit;
|
||||||
|
import mops.gruppen2.domain.model.Title;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.domain.service.GroupService;
|
import mops.gruppen2.domain.service.GroupService;
|
||||||
import mops.gruppen2.domain.service.InviteService;
|
import mops.gruppen2.domain.service.InviteService;
|
||||||
import mops.gruppen2.domain.service.ProjectionService;
|
import mops.gruppen2.domain.service.ProjectionService;
|
||||||
import mops.gruppen2.web.form.MetaForm;
|
|
||||||
import mops.gruppen2.web.form.UserLimitForm;
|
|
||||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
@ -31,6 +33,7 @@ import java.util.UUID;
|
|||||||
@SuppressWarnings("SameReturnValue")
|
@SuppressWarnings("SameReturnValue")
|
||||||
@Log4j2
|
@Log4j2
|
||||||
@TraceMethodCalls
|
@TraceMethodCalls
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/gruppen2")
|
@RequestMapping("/gruppen2")
|
||||||
public class GroupDetailsController {
|
public class GroupDetailsController {
|
||||||
@ -39,13 +42,6 @@ public class GroupDetailsController {
|
|||||||
private final GroupService groupService;
|
private final GroupService groupService;
|
||||||
private final ProjectionService projectionService;
|
private final ProjectionService projectionService;
|
||||||
|
|
||||||
public GroupDetailsController(InviteService inviteService, GroupService groupService, ProjectionService projectionService) {
|
|
||||||
this.inviteService = inviteService;
|
|
||||||
this.groupService = groupService;
|
|
||||||
this.projectionService = projectionService;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@RolesAllowed({"ROLE_orga", "ROLE_studentin"})
|
@RolesAllowed({"ROLE_orga", "ROLE_studentin"})
|
||||||
@GetMapping("/details/{id}")
|
@GetMapping("/details/{id}")
|
||||||
public String getDetailsPage(KeycloakAuthenticationToken token,
|
public String getDetailsPage(KeycloakAuthenticationToken token,
|
||||||
@ -132,13 +128,14 @@ public class GroupDetailsController {
|
|||||||
@CacheEvict(value = "groups", allEntries = true)
|
@CacheEvict(value = "groups", allEntries = true)
|
||||||
public String postDetailsEditMeta(KeycloakAuthenticationToken token,
|
public String postDetailsEditMeta(KeycloakAuthenticationToken token,
|
||||||
@PathVariable("id") String groupId,
|
@PathVariable("id") String groupId,
|
||||||
@Valid MetaForm form) {
|
@Valid Title title,
|
||||||
|
@Valid Description description) {
|
||||||
|
|
||||||
User user = new User(token);
|
User user = new User(token);
|
||||||
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
|
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
|
||||||
|
|
||||||
groupService.updateTitle(user, group, form.getTitle());
|
groupService.updateTitle(user, group, title);
|
||||||
groupService.updateDescription(user, group, form.getDescription());
|
groupService.updateDescription(user, group, description);
|
||||||
|
|
||||||
return "redirect:/gruppen2/details/" + groupId + "/edit";
|
return "redirect:/gruppen2/details/" + groupId + "/edit";
|
||||||
}
|
}
|
||||||
@ -148,11 +145,11 @@ public class GroupDetailsController {
|
|||||||
@CacheEvict(value = "groups", allEntries = true)
|
@CacheEvict(value = "groups", allEntries = true)
|
||||||
public String postDetailsEditUserLimit(KeycloakAuthenticationToken token,
|
public String postDetailsEditUserLimit(KeycloakAuthenticationToken token,
|
||||||
@PathVariable("id") String groupId,
|
@PathVariable("id") String groupId,
|
||||||
@Valid UserLimitForm form) {
|
@Valid Limit limit) {
|
||||||
User user = new User(token);
|
User user = new User(token);
|
||||||
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
|
Group group = projectionService.projectSingleGroup(UUID.fromString(groupId));
|
||||||
|
|
||||||
groupService.updateUserLimit(user, group, form.getUserlimit());
|
groupService.updateUserLimit(user, group, limit);
|
||||||
|
|
||||||
return "redirect:/gruppen2/details/" + groupId + "/edit";
|
return "redirect:/gruppen2/details/" + groupId + "/edit";
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
package mops.gruppen2.web;
|
package mops.gruppen2.web;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.aspect.annotation.TraceMethodCall;
|
import mops.gruppen2.aspect.annotation.TraceMethodCall;
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.exception.PageNotFoundException;
|
import mops.gruppen2.domain.exception.PageNotFoundException;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.domain.service.ProjectionService;
|
import mops.gruppen2.domain.service.ProjectionService;
|
||||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
@ -16,15 +17,12 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
@SuppressWarnings("SameReturnValue")
|
@SuppressWarnings("SameReturnValue")
|
||||||
@Log4j2
|
@Log4j2
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Controller
|
@Controller
|
||||||
public class GruppenfindungController {
|
public class GruppenfindungController {
|
||||||
|
|
||||||
private final ProjectionService projectionService;
|
private final ProjectionService projectionService;
|
||||||
|
|
||||||
public GruppenfindungController(ProjectionService projectionService) {
|
|
||||||
this.projectionService = projectionService;
|
|
||||||
}
|
|
||||||
|
|
||||||
// For convenience
|
// For convenience
|
||||||
//@GetMapping("")
|
//@GetMapping("")
|
||||||
//public String redirect() {
|
//public String redirect() {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package mops.gruppen2.web;
|
package mops.gruppen2.web;
|
||||||
|
|
||||||
import mops.gruppen2.domain.Account;
|
import mops.gruppen2.domain.Account;
|
||||||
import mops.gruppen2.domain.GroupType;
|
import mops.gruppen2.domain.model.Role;
|
||||||
import mops.gruppen2.domain.Role;
|
import mops.gruppen2.domain.model.Type;
|
||||||
import mops.gruppen2.domain.User;
|
import mops.gruppen2.domain.model.User;
|
||||||
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
@ -26,9 +26,9 @@ public class ModelAttributeControllerAdvice {
|
|||||||
// Add enums
|
// Add enums
|
||||||
model.addAttribute("member", Role.MEMBER);
|
model.addAttribute("member", Role.MEMBER);
|
||||||
model.addAttribute("admin", Role.ADMIN);
|
model.addAttribute("admin", Role.ADMIN);
|
||||||
model.addAttribute("public", GroupType.PUBLIC);
|
model.addAttribute("public", Type.PUBLIC);
|
||||||
model.addAttribute("private", GroupType.PRIVATE);
|
model.addAttribute("private", Type.PRIVATE);
|
||||||
model.addAttribute("lecture", GroupType.LECTURE);
|
model.addAttribute("lecture", Type.LECTURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
package mops.gruppen2.web;
|
package mops.gruppen2.web;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
import mops.gruppen2.aspect.annotation.TraceMethodCalls;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.helper.ValidationHelper;
|
import mops.gruppen2.domain.helper.ValidationHelper;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.domain.service.InviteService;
|
import mops.gruppen2.domain.service.InviteService;
|
||||||
import mops.gruppen2.domain.service.ProjectionService;
|
import mops.gruppen2.domain.service.ProjectionService;
|
||||||
import mops.gruppen2.domain.service.SearchService;
|
import mops.gruppen2.domain.service.SearchService;
|
||||||
@ -25,6 +26,7 @@ import java.util.List;
|
|||||||
@SuppressWarnings("SameReturnValue")
|
@SuppressWarnings("SameReturnValue")
|
||||||
@Log4j2
|
@Log4j2
|
||||||
@TraceMethodCalls
|
@TraceMethodCalls
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/gruppen2")
|
@RequestMapping("/gruppen2")
|
||||||
public class SearchAndInviteController {
|
public class SearchAndInviteController {
|
||||||
@ -33,12 +35,6 @@ public class SearchAndInviteController {
|
|||||||
private final ProjectionService projectionService;
|
private final ProjectionService projectionService;
|
||||||
private final SearchService searchService;
|
private final SearchService searchService;
|
||||||
|
|
||||||
public SearchAndInviteController(InviteService inviteService, ProjectionService projectionService, SearchService searchService) {
|
|
||||||
this.inviteService = inviteService;
|
|
||||||
this.projectionService = projectionService;
|
|
||||||
this.searchService = searchService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@RolesAllowed({"ROLE_orga", "ROLE_studentin"})
|
@RolesAllowed({"ROLE_orga", "ROLE_studentin"})
|
||||||
@GetMapping("/search")
|
@GetMapping("/search")
|
||||||
public String getSearch(Model model) {
|
public String getSearch(Model model) {
|
||||||
@ -74,7 +70,7 @@ public class SearchAndInviteController {
|
|||||||
model.addAttribute("group", group);
|
model.addAttribute("group", group);
|
||||||
|
|
||||||
// Gruppe öffentlich
|
// Gruppe öffentlich
|
||||||
if (group.getType() == GroupType.PUBLIC) {
|
if (group.getType() == Type.PUBLIC) {
|
||||||
return "redirect:/gruppen2/details/" + group.getId();
|
return "redirect:/gruppen2/details/" + group.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package mops.gruppen2.web.api;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.web.form;
|
package mops.gruppen2.web.form;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.helper.IdHelper;
|
import mops.gruppen2.domain.helper.IdHelper;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -19,11 +19,11 @@ public class CreateForm {
|
|||||||
|
|
||||||
MultipartFile file;
|
MultipartFile file;
|
||||||
|
|
||||||
public GroupType getType() {
|
public Type getType() {
|
||||||
return GroupType.valueOf(type);
|
return Type.valueOf(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getParent() {
|
public UUID getParent() {
|
||||||
return getType() == GroupType.LECTURE ? IdHelper.emptyUUID() : IdHelper.stringToUUID(parent);
|
return getType() == Type.LECTURE ? IdHelper.emptyUUID() : IdHelper.stringToUUID(parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
package mops.gruppen2.web.form;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.Size;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class MetaForm {
|
|
||||||
|
|
||||||
@NotBlank
|
|
||||||
@Size(min = 4, max = 128)
|
|
||||||
String title;
|
|
||||||
|
|
||||||
@NotBlank
|
|
||||||
@Size(min = 4, max = 512)
|
|
||||||
String description;
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
package mops.gruppen2.web.form;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import javax.validation.constraints.Max;
|
|
||||||
import javax.validation.constraints.Min;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class UserLimitForm {
|
|
||||||
|
|
||||||
@Min(1)
|
|
||||||
@Max(999_999)
|
|
||||||
long userlimit;
|
|
||||||
}
|
|
@ -1,158 +0,0 @@
|
|||||||
INSERT INTO event
|
|
||||||
VALUES (1, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '07FEA694', 'CreateGroupEvent',
|
|
||||||
'{"type":"CreateGroupEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"07FEA694","groupParent":null,"groupType":"PUBLIC"}'),
|
|
||||||
(2, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '2', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"2","givenname":"Marcos","familyname":"Glover","email":"Marcos.Glover@mail.de"}'),
|
|
||||||
|
|
||||||
(3, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '2', 'UpdateUserLimitEvent',
|
|
||||||
'{"type":"UpdateUserLimitEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"2","userLimit":"1000"}'),
|
|
||||||
|
|
||||||
(4, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '5CFBF1AF', 'UpdateGroupTitleEvent',
|
|
||||||
'{"type":"UpdateGroupTitleEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"5CFBF1AF","newGroupTitle":"Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra"}'),
|
|
||||||
(5, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '41E11CBC', 'UpdateGroupDescriptionEvent',
|
|
||||||
'{"type":"UpdateGroupDescriptionEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"41E11CBC","newGroupDescription":"Have you seen my Bear Tibbers? Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyra Zyrav"}'),
|
|
||||||
(6, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '3', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"3","givenname":"Antwan","familyname":"Smitham","email":"Antwan.Smitham@mail.de"}'),
|
|
||||||
(7, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '4', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"4","givenname":"Numbers","familyname":"Rice","email":"Numbers.Rice@mail.de"}'),
|
|
||||||
(8, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '5', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"5","givenname":"Charlette","familyname":"Brakus","email":"Charlette.Brakus@mail.de"}'),
|
|
||||||
(9, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '6', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"6","givenname":"Alethea","familyname":"Kessler","email":"Alethea.Kessler@mail.de"}'),
|
|
||||||
(10, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '7', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"7","givenname":"Daren","familyname":"Kreiger","email":"Daren.Kreiger@mail.de"}'),
|
|
||||||
(11, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '8', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"8","givenname":"Gabriel","familyname":"Feeney","email":"Gabriel.Feeney@mail.de"}'),
|
|
||||||
(12, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '9', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"9","givenname":"Roosevelt","familyname":"Buckridge","email":"Roosevelt.Buckridge@mail.de"}'),
|
|
||||||
(13, '2d90ae27-1129-4b61-84a5-6c7d585e777e', '10', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"2d90ae27-1129-4b61-84a5-6c7d585e777e","userId":"10","givenname":"Eduardo","familyname":"Lowe","email":"Eduardo.Lowe@mail.de"}'),
|
|
||||||
|
|
||||||
(14, '555a531c-8b80-491c-88b4-8fc18170d318', '2D7D9CE0', 'CreateGroupEvent',
|
|
||||||
'{"type":"CreateGroupEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"2D7D9CE0","groupParent":null,"groupType":"PRIVATE"}'),
|
|
||||||
(15, '555a531c-8b80-491c-88b4-8fc18170d318', 'orga', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"orga","givenname":"Jerald","familyname":"Ward","email":"Jerald.Ward@mail.de"}'),
|
|
||||||
(16, '555a531c-8b80-491c-88b4-8fc18170d318', 'orga', 'UpdateRoleEvent',
|
|
||||||
'{"type":"UpdateRoleEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"orga","newRole":"ADMIN"}'),
|
|
||||||
|
|
||||||
|
|
||||||
(17, '555a531c-8b80-491c-88b4-8fc18170d318', '2', 'UpdateUserLimitEvent',
|
|
||||||
'{"type":"UpdateUserLimitEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"2","userLimit":"1000"}'),
|
|
||||||
|
|
||||||
(18, '555a531c-8b80-491c-88b4-8fc18170d318', '5CFBF1AF', 'UpdateGroupTitleEvent',
|
|
||||||
'{"type":"UpdateGroupTitleEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"5CFBF1AF","newGroupTitle":"Zyra"}'),
|
|
||||||
(19, '555a531c-8b80-491c-88b4-8fc18170d318', 'EF050D58', 'UpdateGroupDescriptionEvent',
|
|
||||||
'{"type":"UpdateGroupDescriptionEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"EF050D58","newGroupDescription":"Not Draven Draaaaven."}'),
|
|
||||||
(20, '555a531c-8b80-491c-88b4-8fc18170d318', '3', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"3","givenname":"Jesica","familyname":"OKeefe","email":"Jesica.OKeefe@mail.de"}'),
|
|
||||||
(21, '555a531c-8b80-491c-88b4-8fc18170d318', '4', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"555a531c-8b80-491c-88b4-8fc18170d318","userId":"4","givenname":"Jess","familyname":"Schamberger","email":"Jess.Schamberger@mail.de"}'),
|
|
||||||
|
|
||||||
(22, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', 'E7E2EC5F', 'CreateGroupEvent',
|
|
||||||
'{"type":"CreateGroupEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"E7E2EC5F","groupParent":null,"groupType":"LECTURE"}'),
|
|
||||||
(23, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', 'orga', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"orga","givenname":"Hana","familyname":"Connelly","email":"Hana.Connelly@mail.de"}'),
|
|
||||||
|
|
||||||
(24, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '2', 'UpdateUserLimitEvent',
|
|
||||||
'{"type":"UpdateUserLimitEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"2","userLimit":"1000"}'),
|
|
||||||
|
|
||||||
(25, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '4EDE191D', 'UpdateGroupTitleEvent',
|
|
||||||
'{"type":"UpdateGroupTitleEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"4EDE191D","newGroupTitle":"Vi"}'),
|
|
||||||
(26, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '6EF0B5F9', 'UpdateGroupDescriptionEvent',
|
|
||||||
'{"type":"UpdateGroupDescriptionEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"6EF0B5F9","newGroupDescription":"Ready to set the world on fire..."}'),
|
|
||||||
(27, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '3', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"3","givenname":"Steve","familyname":"Swaniawski","email":"Steve.Swaniawski@mail.de"}'),
|
|
||||||
(28, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '4', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"4","givenname":"Natalie","familyname":"Anderson","email":"Natalie.Anderson@mail.de"}'),
|
|
||||||
(29, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '5', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"5","givenname":"Asuncion","familyname":"Koss","email":"Asuncion.Koss@mail.de"}'),
|
|
||||||
(30, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '6', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"6","givenname":"Dana","familyname":"Kemmer","email":"Dana.Kemmer@mail.de"}'),
|
|
||||||
(31, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '7', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"7","givenname":"Herbert","familyname":"Moen","email":"Herbert.Moen@mail.de"}'),
|
|
||||||
(32, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '8', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"8","givenname":"Dick","familyname":"Goodwin","email":"Dick.Goodwin@mail.de"}'),
|
|
||||||
(33, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '9', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"9","givenname":"Deangelo","familyname":"Hoeger","email":"Deangelo.Hoeger@mail.de"}'),
|
|
||||||
(34, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '10', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"10","givenname":"Zina","familyname":"Abernathy","email":"Zina.Abernathy@mail.de"}'),
|
|
||||||
(35, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '11', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"11","givenname":"Karima","familyname":"Adams","email":"Karima.Adams@mail.de"}'),
|
|
||||||
(36, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '12', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"12","givenname":"Evette","familyname":"Price","email":"Evette.Price@mail.de"}'),
|
|
||||||
(37, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '13', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"13","givenname":"Chester","familyname":"Mayert","email":"Chester.Mayert@mail.de"}'),
|
|
||||||
(38, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '14', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"14","givenname":"Trang","familyname":"Watsica","email":"Trang.Watsica@mail.de"}'),
|
|
||||||
(39, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '15', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"15","givenname":"Cameron","familyname":"Terry","email":"Cameron.Terry@mail.de"}'),
|
|
||||||
(40, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '16', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"16","givenname":"Tynisha","familyname":"Grant","email":"Tynisha.Grant@mail.de"}'),
|
|
||||||
(41, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '17', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"17","givenname":"Leila","familyname":"Thiel","email":"Leila.Thiel@mail.de"}'),
|
|
||||||
(42, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '18', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"18","givenname":"Lorenzo","familyname":"Weimann","email":"Lorenzo.Weimann@mail.de"}'),
|
|
||||||
(43, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '19', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"19","givenname":"Alonzo","familyname":"Keebler","email":"Alonzo.Keebler@mail.de"}'),
|
|
||||||
(44, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '20', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"20","givenname":"Maximo","familyname":"Olson","email":"Maximo.Olson@mail.de"}'),
|
|
||||||
(45, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '21', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"21","givenname":"Lisa","familyname":"Konopelski","email":"Lisa.Konopelski@mail.de"}'),
|
|
||||||
(46, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '22', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"22","givenname":"Samuel","familyname":"Parisian","email":"Samuel.Parisian@mail.de"}'),
|
|
||||||
(47, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '23', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"23","givenname":"Irish","familyname":"Grant","email":"Irish.Grant@mail.de"}'),
|
|
||||||
(48, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '24', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"24","givenname":"Donnell","familyname":"Olson","email":"Donnell.Olson@mail.de"}'),
|
|
||||||
(49, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '25', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"25","givenname":"Jeana","familyname":"MacGyver","email":"Jeana.MacGyver@mail.de"}'),
|
|
||||||
(50, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '26', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"26","givenname":"Mark","familyname":"Stroman","email":"Mark.Stroman@mail.de"}'),
|
|
||||||
(51, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '27', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"27","givenname":"Genevive","familyname":"Christiansen","email":"Genevive.Christiansen@mail.de"}'),
|
|
||||||
(52, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '28', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"28","givenname":"Marshall","familyname":"Wisoky","email":"Marshall.Wisoky@mail.de"}'),
|
|
||||||
(53, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '29', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"29","givenname":"Hugo","familyname":"Krajcik","email":"Hugo.Krajcik@mail.de"}'),
|
|
||||||
(54, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '30', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"30","givenname":"Genevive","familyname":"Weber","email":"Genevive.Weber@mail.de"}'),
|
|
||||||
(55, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '31', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"31","givenname":"Cleotilde","familyname":"Baumbach","email":"Cleotilde.Baumbach@mail.de"}'),
|
|
||||||
(56, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '32', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"32","givenname":"Kaitlyn","familyname":"Bins","email":"Kaitlyn.Bins@mail.de"}'),
|
|
||||||
(57, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '33', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"33","givenname":"Sergio","familyname":"Hettinger","email":"Sergio.Hettinger@mail.de"}'),
|
|
||||||
(58, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '34', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"34","givenname":"Beckie","familyname":"Heaney","email":"Beckie.Heaney@mail.de"}'),
|
|
||||||
(59, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '35', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"35","givenname":"Kareem","familyname":"Considine","email":"Kareem.Considine@mail.de"}'),
|
|
||||||
(60, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '36', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"36","givenname":"Kenyatta","familyname":"Wolff","email":"Kenyatta.Wolff@mail.de"}'),
|
|
||||||
(61, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '37', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"37","givenname":"Brock","familyname":"Romaguera","email":"Brock.Romaguera@mail.de"}'),
|
|
||||||
(62, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '38', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"38","givenname":"Carey","familyname":"Reynolds","email":"Carey.Reynolds@mail.de"}'),
|
|
||||||
(63, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '39', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"39","givenname":"Gabriel","familyname":"Rath","email":"Gabriel.Rath@mail.de"}'),
|
|
||||||
(64, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '40', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"40","givenname":"Tristan","familyname":"Dare","email":"Tristan.Dare@mail.de"}'),
|
|
||||||
(65, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '41', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"41","givenname":"Augustus","familyname":"Reilly","email":"Augustus.Reilly@mail.de"}'),
|
|
||||||
(66, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '42', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"42","givenname":"Dwayne","familyname":"Lynch","email":"Dwayne.Lynch@mail.de"}'),
|
|
||||||
(67, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '43', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"43","givenname":"Ben","familyname":"Corkery","email":"Ben.Corkery@mail.de"}'),
|
|
||||||
(68, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '44', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"44","givenname":"Alfredo","familyname":"Towne","email":"Alfredo.Towne@mail.de"}'),
|
|
||||||
(69, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '45', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"45","givenname":"Shante","familyname":"Becker","email":"Shante.Becker@mail.de"}'),
|
|
||||||
(70, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '46', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"46","givenname":"Elinor","familyname":"Bernier","email":"Elinor.Bernier@mail.de"}'),
|
|
||||||
(71, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '47', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"47","givenname":"Lee","familyname":"Dibbert","email":"Lee.Dibbert@mail.de"}'),
|
|
||||||
(72, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '48', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"48","givenname":"Augustina","familyname":"Friesen","email":"Augustina.Friesen@mail.de"}'),
|
|
||||||
(73, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '49', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"49","givenname":"Kanesha","familyname":"Olson","email":"Kanesha.Olson@mail.de"}'),
|
|
||||||
(74, '5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3', '50', 'AddUserEvent',
|
|
||||||
'{"type":"AddUserEvent","groupId":"5e1c2b9a-bf3a-4c9e-9bf0-f5beecb69eb3","userId":"50","givenname":"Era","familyname":"Willms","email":"Era.Willms@mail.de"}');
|
|
@ -11,7 +11,7 @@
|
|||||||
<main th:fragment="bodycontent">
|
<main th:fragment="bodycontent">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
|
||||||
<h1 class="def-cursor" th:text="${group.getTitle()}"></h1>
|
<h1 class="def-cursor" th:text="${group.getTitle().getGroupTitle()}"></h1>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!--Gruppendetails-->
|
<!--Gruppendetails-->
|
||||||
@ -40,7 +40,7 @@
|
|||||||
<!--Anzahl Text-->
|
<!--Anzahl Text-->
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<span>Teilnehmer: </span>
|
<span>Teilnehmer: </span>
|
||||||
<span th:text="${group.getMembers().size() + ' von ' + group.getUserLimit()}"></span>
|
<span th:text="${group.getMembers().size() + ' von ' + group.getUserLimit().getUserLimit()}"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Bearbeiten-Button-->
|
<!--Bearbeiten-Button-->
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<div class="members">
|
<div class="members">
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<li class="list-group-item d-flex justify-content-between"
|
<li class="list-group-item d-flex justify-content-between"
|
||||||
th:each="member : ${group.getMembers()}">
|
th:each="member : ${group.getMembers().values()}">
|
||||||
<span th:text="${member.getGivenname() + ' ' + member.getFamilyname().charAt(0) + '.'}"></span>
|
<span th:text="${member.getGivenname() + ' ' + member.getFamilyname().charAt(0) + '.'}"></span>
|
||||||
<span th:replace="~{fragments/groups :: userbadges}"></span>
|
<span th:replace="~{fragments/groups :: userbadges}"></span>
|
||||||
</li>
|
</li>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<main th:fragment="bodycontent">
|
<main th:fragment="bodycontent">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<h1 class="def-cursor" th:text="${group.getTitle()}"></h1>
|
<h1 class="def-cursor" th:text="${group.getTitle().getGroupTitle()}"></h1>
|
||||||
|
|
||||||
<!--Fertig oder löschen-->
|
<!--Fertig oder löschen-->
|
||||||
<div class="content">
|
<div class="content">
|
||||||
@ -96,7 +96,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<li class="list-group-item d-flex justify-content-between" th:each="member : ${group.getMembers()}">
|
<li class="list-group-item d-flex justify-content-between" th:each="member : ${group.getMembers().values()}">
|
||||||
<div>
|
<div>
|
||||||
<span th:text="${member.getGivenname() + ' ' + member.getFamilyname().charAt(0) + '.'}"></span>
|
<span th:text="${member.getGivenname() + ' ' + member.getFamilyname().charAt(0) + '.'}"></span>
|
||||||
<span th:replace="~{fragments/groups :: userbadges}"></span>
|
<span th:replace="~{fragments/groups :: userbadges}"></span>
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text text-monospace">Gruppentitel:</span>
|
<span class="input-group-text text-monospace">Gruppentitel:</span>
|
||||||
</div>
|
</div>
|
||||||
<input type="text" class="form-control" th:name="title" th:value="${group?.getTitle()}"
|
<input type="text" class="form-control" name="groupTitle" minlength="4" maxlength="128"
|
||||||
required minlength="4" maxlength="128">
|
th:value="${group?.getTitle()?.getGroupTitle()}" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Gruppenbeschreibung-->
|
<!--Gruppenbeschreibung-->
|
||||||
@ -20,8 +20,8 @@
|
|||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text text-monospace">Beschreibung:</span>
|
<span class="input-group-text text-monospace">Beschreibung:</span>
|
||||||
</div>
|
</div>
|
||||||
<textarea class="form-control" th:name="description" th:text="${group?.getDescription()}"
|
<textarea class="form-control" name="groupDescription" minlength="4" maxlength="512"
|
||||||
required minlength="4" maxlength="512"></textarea>
|
th:text="${group?.getDescription()?.getGroupDescription()}" required></textarea>
|
||||||
</div>
|
</div>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
||||||
@ -47,11 +47,11 @@
|
|||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text text-monospace">Gehört zu:</span>
|
<span class="input-group-text text-monospace">Gehört zu:</span>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" id="parentdummy" value="00000000-0000-0000-0000-000000000000" disabled>
|
<input type="hidden" id="parentdummy" name="parent" value="00000000-0000-0000-0000-000000000000" disabled>
|
||||||
<select class="custom-select" id="parentselect" name="parent">
|
<select class="custom-select" id="parentselect" name="parent">
|
||||||
<option value="00000000-0000-0000-0000-000000000000" selected>Keiner</option>
|
<option value="00000000-0000-0000-0000-000000000000" selected>Keiner</option>
|
||||||
<option th:each="lecture : ${lectures}" th:value="${lecture.getId()}"
|
<option th:each="lecture : ${lectures}" th:value="${lecture.getId()}"
|
||||||
th:text="${lecture.getTitle()}"></option>
|
th:text="${lecture.getTitle().getGroupTitle()}"></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -61,17 +61,17 @@
|
|||||||
<th:block th:fragment="userlimit">
|
<th:block th:fragment="userlimit">
|
||||||
<label for="userlimit">Teilnehmeranzahl:</label>
|
<label for="userlimit">Teilnehmeranzahl:</label>
|
||||||
<div class="btn-toolbar row mx-0" id="userlimit">
|
<div class="btn-toolbar row mx-0" id="userlimit">
|
||||||
<input type="hidden" name="userlimit" id="limit" value="999999"
|
<input type="hidden" name="userLimit" id="limit" value="999999"
|
||||||
th:disabled="${group != null && group.getUserLimit() < 999999} ? 'disabled' : 'false'">
|
th:disabled="${group != null && group.getUserLimit().getUserLimit() < 999999} ? 'disabled' : 'false'">
|
||||||
<div class="btn-group btn-group-toggle col-sm-4 px-0" data-toggle="buttons">
|
<div class="btn-group btn-group-toggle col-sm-4 px-0" data-toggle="buttons">
|
||||||
<label class="btn btn-secondary active" onclick="disable('#limitselect'); enable('#limit')">
|
<label class="btn btn-secondary active" onclick="disable('#limitselect'); enable('#limit')">
|
||||||
<input type="radio"
|
<input type="radio"
|
||||||
th:checked="${group != null && group.getUserLimit() < 999999} ? 'false' : 'checked'">
|
th:checked="${group != null && group.getUserLimit().getUserLimit() < 999999} ? 'false' : 'checked'">
|
||||||
Unbegrenzt
|
Unbegrenzt
|
||||||
</label>
|
</label>
|
||||||
<label class="btn btn-secondary" onclick="enable('#limitselect'); disable('#limit')">
|
<label class="btn btn-secondary" onclick="enable('#limitselect'); disable('#limit')">
|
||||||
<input type="radio"
|
<input type="radio"
|
||||||
th:checked="${group != null && group.getUserLimit() < 999999} ? 'checked' : 'false'">
|
th:checked="${group != null && group.getUserLimit().getUserLimit() < 999999} ? 'checked' : 'false'">
|
||||||
Begrenzt
|
Begrenzt
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
@ -81,10 +81,10 @@
|
|||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text text-monospace">Limit:</span>
|
<span class="input-group-text text-monospace">Limit:</span>
|
||||||
</div>
|
</div>
|
||||||
<input type="number" class="form-control" name="userlimit"
|
<input type="number" class="form-control" name="userLimit"
|
||||||
th:value="${group != null} ? ${group.getUserLimit()} : '999999'"
|
th:value="${group != null} ? ${group.getUserLimit().getUserLimit()} : '999999'"
|
||||||
min="1" max="999999" id="limitselect" required
|
min="1" max="999999" id="limitselect" required
|
||||||
th:disabled="${group != null && group.getUserLimit() < 999999} ? 'false' : 'disabled'">
|
th:disabled="${group != null && group.getUserLimit().getUserLimit() < 999999} ? 'false' : 'disabled'">
|
||||||
<div class="input-group-append">
|
<div class="input-group-append">
|
||||||
<span class="input-group-text text-monospace">Teilnehmer</span>
|
<span class="input-group-text text-monospace">Teilnehmer</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -15,9 +15,9 @@
|
|||||||
th:if='${group.getType() == lecture}'>Veranstaltung</span>
|
th:if='${group.getType() == lecture}'>Veranstaltung</span>
|
||||||
|
|
||||||
<span class="badge badge-pill parent"
|
<span class="badge badge-pill parent"
|
||||||
th:unless="${parent == null || parent.getTitle() == null|| parent.getTitle() == ''}"
|
th:unless="${parent == null || parent?.getTitle()?.getGroupTitle() == null|| parent?.getTitle()?.getGroupTitle() == ''}"
|
||||||
th:title="${'Die Gruppe gehört zur Veranstaltung ' + parent.getTitle() + '.'}"
|
th:title="${'Die Gruppe gehört zur Veranstaltung ' + parent.getTitle().getGroupTitle() + '.'}"
|
||||||
th:text="${parent.getTitle()}">Parent</span>
|
th:text="${parent.getTitle().getGroupTitle()}">Parent</span>
|
||||||
|
|
||||||
<!--Needs completly projected (cached) groups-->
|
<!--Needs completly projected (cached) groups-->
|
||||||
<!--<span class="badge badge-success float-right"
|
<!--<span class="badge badge-success float-right"
|
||||||
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
<!--Description-->
|
<!--Description-->
|
||||||
<div class="content-text-in">
|
<div class="content-text-in">
|
||||||
<span th:text="${group.getDescription()}"></span>
|
<span th:text="${group.getDescription().getGroupDescription()}"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<div class="content-text-in" th:if="${group.getMembers().contains(user.getId())}"></div>-->
|
<!--<div class="content-text-in" th:if="${group.getMembers().contains(user.getId())}"></div>-->
|
||||||
@ -48,21 +48,21 @@
|
|||||||
<!--Buttonbar zum Gruppe beitreten-->
|
<!--Buttonbar zum Gruppe beitreten-->
|
||||||
<th:block th:fragment="joingroup">
|
<th:block th:fragment="joingroup">
|
||||||
<div class="content-heading">
|
<div class="content-heading">
|
||||||
<span th:if="${group.getMembers().size() < group.getUserLimit()}">
|
<span th:if="${group.getMembers().size() < group.getUserLimit().getUserLimit()}">
|
||||||
Möchtest du dieser Gruppe beitreten?
|
Möchtest du dieser Gruppe beitreten?
|
||||||
</span>
|
</span>
|
||||||
<span th:unless="${group.getMembers().size() < group.getUserLimit()}">
|
<span th:unless="${group.getMembers().size() < group.getUserLimit().getUserLimit()}">
|
||||||
Diese Gruppe hat ihre maximale Teilnehmeranzahl erreicht.
|
Diese Gruppe hat ihre maximale Teilnehmeranzahl erreicht.
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<form method="post" th:action="@{/gruppen2/details/{id}/join(id = ${group.getId()})}"
|
<form method="post" th:action="@{/gruppen2/details/{id}/join(id = ${group.getId()})}"
|
||||||
th:if="${group.getMembers().size() < group.getUserLimit()}">
|
th:if="${group.getMembers().size() < group.getUserLimit().getUserLimit()}">
|
||||||
<button class="btn btn-success" type="submit">Gruppe beitreten.</button>
|
<button class="btn btn-success" type="submit">Gruppe beitreten.</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="col" th:if="${group.getMembers().size() < group.getUserLimit()}"></div>
|
<div class="col" th:if="${group.getMembers().size() < group.getUserLimit().getUserLimit()}"></div>
|
||||||
|
|
||||||
<a class="btn btn-primary" href="/gruppen2"
|
<a class="btn btn-primary" href="/gruppen2"
|
||||||
type="submit">Startseite.</a>
|
type="submit">Startseite.</a>
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
<div class="content" th:each="group: ${groups}">
|
<div class="content" th:each="group: ${groups}">
|
||||||
<div class="content-heading row">
|
<div class="content-heading row">
|
||||||
<a class="link col" th:href="@{/gruppen2/details/{id}(id=${group.getId()})}"
|
<a class="link col" th:href="@{/gruppen2/details/{id}(id=${group.getId()})}"
|
||||||
th:text="${group.getTitle()}"></a>
|
th:text="${group.getTitle().getGroupTitle()}"></a>
|
||||||
|
|
||||||
<span th:replace="~{fragments/groups :: badges}"></span>
|
<span th:replace="~{fragments/groups :: badges}"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-text-in">
|
<div class="content-text-in">
|
||||||
<span th:text="${group.getDescription()}"></span>
|
<span th:text="${group.getDescription().getGroupDescription()}"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -10,8 +10,7 @@
|
|||||||
|
|
||||||
<main th:fragment="bodycontent">
|
<main th:fragment="bodycontent">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
<h1 class="def-cursor" th:text="${group.getTitle().getGroupTitle()}"></h1>
|
||||||
<h1 class="def-cursor" th:text="${group.getTitle()}"></h1>
|
|
||||||
|
|
||||||
<div class="content" th:insert="~{fragments/groups :: groupcontent}"></div>
|
<div class="content" th:insert="~{fragments/groups :: groupcontent}"></div>
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<main th:fragment="bodycontent">
|
<main th:fragment="bodycontent">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<h1 class="def-cursor" th:text="${group.getTitle()}"></h1>
|
<h1 class="def-cursor" th:text="${group.getTitle().getGroupTitle()}"></h1>
|
||||||
|
|
||||||
<div class="content" th:insert="~{fragments/groups :: groupcontent}"></div>
|
<div class="content" th:insert="~{fragments/groups :: groupcontent}"></div>
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text text-monospace">Suchbegriff:</span>
|
<span class="input-group-text text-monospace">Suchbegriff:</span>
|
||||||
</div>
|
</div>
|
||||||
<input class="form-control" th:name="string" type="text">
|
<input class="form-control" name="string" type="text">
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary" type="submit">Suchen</button>
|
<button class="btn btn-primary" type="submit">Suchen</button>
|
||||||
</form>
|
</form>
|
||||||
@ -32,10 +32,10 @@
|
|||||||
<span th:replace="~{fragments/groups :: badges}"></span>
|
<span th:replace="~{fragments/groups :: badges}"></span>
|
||||||
|
|
||||||
<a class="link col" th:href="@{/gruppen2/details/{id}(id=${group.getId()})}"
|
<a class="link col" th:href="@{/gruppen2/details/{id}(id=${group.getId()})}"
|
||||||
th:text="${group.getTitle()}"></a>
|
th:text="${group.getTitle().getGroupTitle()}"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-text-in">
|
<div class="content-text-in">
|
||||||
<span th:text="${group.getDescription()}"></span>
|
<span th:text="${group.getDescription().getGroupDescription()}"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -2,9 +2,6 @@ package mops.gruppen2;
|
|||||||
|
|
||||||
import com.github.javafaker.Faker;
|
import com.github.javafaker.Faker;
|
||||||
import mops.gruppen2.domain.Account;
|
import mops.gruppen2.domain.Account;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.Role;
|
|
||||||
import mops.gruppen2.domain.event.AddUserEvent;
|
import mops.gruppen2.domain.event.AddUserEvent;
|
||||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||||
import mops.gruppen2.domain.event.DeleteGroupEvent;
|
import mops.gruppen2.domain.event.DeleteGroupEvent;
|
||||||
@ -14,6 +11,9 @@ import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent;
|
|||||||
import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
|
import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
|
||||||
import mops.gruppen2.domain.event.UpdateRoleEvent;
|
import mops.gruppen2.domain.event.UpdateRoleEvent;
|
||||||
import mops.gruppen2.domain.event.UpdateUserLimitEvent;
|
import mops.gruppen2.domain.event.UpdateUserLimitEvent;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Role;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -151,7 +151,7 @@ public class TestBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Event createPrivateGroupEvent(UUID groupId) {
|
public static Event createPrivateGroupEvent(UUID groupId) {
|
||||||
return createGroupEvent(groupId, GroupType.PRIVATE);
|
return createGroupEvent(groupId, Type.PRIVATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Event createPrivateGroupEvent() {
|
public static Event createPrivateGroupEvent() {
|
||||||
@ -159,14 +159,14 @@ public class TestBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Event createPublicGroupEvent(UUID groupId) {
|
public static Event createPublicGroupEvent(UUID groupId) {
|
||||||
return createGroupEvent(groupId, GroupType.PUBLIC);
|
return createGroupEvent(groupId, Type.PUBLIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Event createPublicGroupEvent() {
|
public static Event createPublicGroupEvent() {
|
||||||
return createPublicGroupEvent(UUID.randomUUID());
|
return createPublicGroupEvent(UUID.randomUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Event createGroupEvent(UUID groupId, GroupType type) {
|
public static Event createGroupEvent(UUID groupId, Type type) {
|
||||||
return new CreateGroupEvent(
|
return new CreateGroupEvent(
|
||||||
groupId,
|
groupId,
|
||||||
faker.random().hex(),
|
faker.random().hex(),
|
||||||
@ -184,7 +184,7 @@ public class TestBuilder {
|
|||||||
groupId,
|
groupId,
|
||||||
faker.random().hex(),
|
faker.random().hex(),
|
||||||
null,
|
null,
|
||||||
GroupType.LECTURE
|
Type.LECTURE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.GroupFullException;
|
import mops.gruppen2.domain.exception.GroupFullException;
|
||||||
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.addUserEvent;
|
import static mops.gruppen2.TestBuilder.addUserEvent;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.domain.GroupType;
|
import mops.gruppen2.domain.model.Type;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.uuidMock;
|
import static mops.gruppen2.TestBuilder.uuidMock;
|
||||||
@ -15,12 +15,12 @@ class CreateGroupEventTest {
|
|||||||
Event createEvent = new CreateGroupEvent(uuidMock(0),
|
Event createEvent = new CreateGroupEvent(uuidMock(0),
|
||||||
"A",
|
"A",
|
||||||
uuidMock(1),
|
uuidMock(1),
|
||||||
GroupType.PUBLIC);
|
Type.PUBLIC);
|
||||||
|
|
||||||
Group group = TestBuilder.apply(createEvent);
|
Group group = TestBuilder.apply(createEvent);
|
||||||
|
|
||||||
assertThat(group.getMembers()).hasSize(0);
|
assertThat(group.getMembers()).hasSize(0);
|
||||||
assertThat(group.getType()).isEqualTo(GroupType.PUBLIC);
|
assertThat(group.getType()).isEqualTo(Type.PUBLIC);
|
||||||
assertThat(group.getId()).isEqualTo(uuidMock(0));
|
assertThat(group.getId()).isEqualTo(uuidMock(0));
|
||||||
assertThat(group.getParent()).isEqualTo(uuidMock(1));
|
assertThat(group.getParent()).isEqualTo(uuidMock(1));
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
import mops.gruppen2.domain.model.Group;
|
||||||
import mops.gruppen2.domain.GroupType;
|
import mops.gruppen2.domain.model.Type;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.uuidMock;
|
import static mops.gruppen2.TestBuilder.uuidMock;
|
||||||
@ -15,7 +15,7 @@ class DeleteGroupEventTest {
|
|||||||
Event createEvent = new CreateGroupEvent(uuidMock(0),
|
Event createEvent = new CreateGroupEvent(uuidMock(0),
|
||||||
"A",
|
"A",
|
||||||
uuidMock(1),
|
uuidMock(1),
|
||||||
GroupType.PUBLIC);
|
Type.PUBLIC);
|
||||||
Event deleteEvent = new DeleteGroupEvent(uuidMock(0), "A");
|
Event deleteEvent = new DeleteGroupEvent(uuidMock(0), "A");
|
||||||
|
|
||||||
Group group = TestBuilder.apply(createEvent, deleteEvent);
|
Group group = TestBuilder.apply(createEvent, deleteEvent);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.UserNotFoundException;
|
import mops.gruppen2.domain.exception.UserNotFoundException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.addUserEvent;
|
import static mops.gruppen2.TestBuilder.addUserEvent;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.GroupIdMismatchException;
|
import mops.gruppen2.domain.exception.GroupIdMismatchException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.createPublicGroupEvent;
|
import static mops.gruppen2.TestBuilder.createPublicGroupEvent;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.exception.BadParameterException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.createPublicGroupEvent;
|
import static mops.gruppen2.TestBuilder.createPublicGroupEvent;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.exception.BadParameterException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.createPublicGroupEvent;
|
import static mops.gruppen2.TestBuilder.createPublicGroupEvent;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.Role;
|
|
||||||
import mops.gruppen2.domain.exception.UserNotFoundException;
|
import mops.gruppen2.domain.exception.UserNotFoundException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Role;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.addUserEvent;
|
import static mops.gruppen2.TestBuilder.addUserEvent;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.exception.BadParameterException;
|
import mops.gruppen2.domain.exception.BadParameterException;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static mops.gruppen2.TestBuilder.addUserEvent;
|
import static mops.gruppen2.TestBuilder.addUserEvent;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package mops.gruppen2.domain.service;
|
package mops.gruppen2.domain.service;
|
||||||
|
|
||||||
import mops.gruppen2.Gruppen2Application;
|
import mops.gruppen2.Gruppen2Application;
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.event.Event;
|
import mops.gruppen2.domain.event.Event;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.persistance.EventRepository;
|
import mops.gruppen2.persistance.EventRepository;
|
||||||
import mops.gruppen2.persistance.dto.EventDTO;
|
import mops.gruppen2.persistance.dto.EventDTO;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
@ -2,10 +2,10 @@ package mops.gruppen2.domain.service;
|
|||||||
|
|
||||||
import mops.gruppen2.Gruppen2Application;
|
import mops.gruppen2.Gruppen2Application;
|
||||||
import mops.gruppen2.TestBuilder;
|
import mops.gruppen2.TestBuilder;
|
||||||
import mops.gruppen2.domain.Group;
|
|
||||||
import mops.gruppen2.domain.GroupType;
|
|
||||||
import mops.gruppen2.domain.User;
|
|
||||||
import mops.gruppen2.domain.event.Event;
|
import mops.gruppen2.domain.event.Event;
|
||||||
|
import mops.gruppen2.domain.model.Group;
|
||||||
|
import mops.gruppen2.domain.model.Type;
|
||||||
|
import mops.gruppen2.domain.model.User;
|
||||||
import mops.gruppen2.persistance.EventRepository;
|
import mops.gruppen2.persistance.EventRepository;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
@ -83,7 +83,7 @@ class GroupServiceTest {
|
|||||||
|
|
||||||
assertThat(groups).hasSize(1);
|
assertThat(groups).hasSize(1);
|
||||||
assertThat(groups.get(0).getMembers()).hasSize(5);
|
assertThat(groups.get(0).getMembers()).hasSize(5);
|
||||||
assertThat(groups.get(0).getType()).isEqualTo(GroupType.PRIVATE);
|
assertThat(groups.get(0).getType()).isEqualTo(Type.PRIVATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: ProjectionServiceTest
|
//TODO: ProjectionServiceTest
|
||||||
|
Reference in New Issue
Block a user