1
Files
lecture-professional-softwa…/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java
2020-03-19 15:30:19 +01:00

48 lines
1.4 KiB
Java

package mops.gruppen2.domain.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
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.GroupFullException;
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
/**
* Fügt einen einzelnen Nutzer einer Gruppe hinzu.
*/
@Getter
@AllArgsConstructor
@NoArgsConstructor // For Jackson
public class AddUserEvent extends Event {
private String givenname;
private String familyname;
private String email;
public AddUserEvent(Long groupId, String userId, String givenname, String familyname, String email) {
super(groupId, userId);
this.givenname = givenname;
this.familyname = familyname;
this.email = email;
}
@Override
public void applyEvent(Group group) throws EventException {
User user = new User(this.userId, this.givenname, this.familyname, this.email);
if (group.getMembers().contains(user)) {
throw new UserAlreadyExistsException(this.getClass().toString());
}
//andere exception
if (group.getMembers().size() == group.getUserMaximum()){
throw new GroupFullException(this.getClass().toString());
}
group.getMembers().add(user);
group.getRoles().put(userId, Role.MEMBER);
}
}