Refactor of all createGroups complete
Co-authored-by: AndiBuls <andreas.buls@uni-duesseldorf.de>
This commit is contained in:
@ -59,7 +59,7 @@ public class WebController {
|
|||||||
|
|
||||||
@RolesAllowed({"ROLE_orga", "ROLE_actuator)"})
|
@RolesAllowed({"ROLE_orga", "ROLE_actuator)"})
|
||||||
@GetMapping("/createOrga")
|
@GetMapping("/createOrga")
|
||||||
public String createOrga(KeycloakAuthenticationToken token, Model model) {
|
public String createGroupAsOrga(KeycloakAuthenticationToken token, Model model) {
|
||||||
Account account = keyCloakService.createAccountFromPrincipal(token);
|
Account account = keyCloakService.createAccountFromPrincipal(token);
|
||||||
model.addAttribute("account", account);
|
model.addAttribute("account", account);
|
||||||
model.addAttribute("lectures", groupService.getAllLecturesWithVisibilityPublic());
|
model.addAttribute("lectures", groupService.getAllLecturesWithVisibilityPublic());
|
||||||
@ -68,7 +68,7 @@ public class WebController {
|
|||||||
|
|
||||||
@RolesAllowed({"ROLE_orga", "ROLE_actuator)"})
|
@RolesAllowed({"ROLE_orga", "ROLE_actuator)"})
|
||||||
@PostMapping("/createOrga")
|
@PostMapping("/createOrga")
|
||||||
public String pCreateOrga(KeycloakAuthenticationToken token,
|
public String postCrateGroupAsOrga(KeycloakAuthenticationToken token,
|
||||||
@RequestParam("title") String title,
|
@RequestParam("title") String title,
|
||||||
@RequestParam("description") String description,
|
@RequestParam("description") String description,
|
||||||
@RequestParam(value = "visibility", required = false) Boolean visibility,
|
@RequestParam(value = "visibility", required = false) Boolean visibility,
|
||||||
@ -80,17 +80,16 @@ public class WebController {
|
|||||||
|
|
||||||
Account account = keyCloakService.createAccountFromPrincipal(token);
|
Account account = keyCloakService.createAccountFromPrincipal(token);
|
||||||
UUID parentUUID = controllerService.getUUID(parent);
|
UUID parentUUID = controllerService.getUUID(parent);
|
||||||
List<User> userList = new ArrayList<>();
|
|
||||||
validationService.checkFields(description, title, userMaximum, maxInfiniteUsers);
|
validationService.checkFields(description, title, userMaximum, maxInfiniteUsers);
|
||||||
Group group = userService.getGroupById(controllerService.createOrga(account, title, description, visibility, lecture, maxInfiniteUsers, userMaximum, parentUUID, file));
|
controllerService.createGroupAsOrga(account, title, description, visibility, lecture, maxInfiniteUsers, userMaximum, parentUUID, file);
|
||||||
userList = validationService.checkFile(file, userList, group.getId().toString(), group, account);
|
|
||||||
controllerService.addUserList(userList, group.getId());
|
|
||||||
return "redirect:/gruppen2/";
|
return "redirect:/gruppen2/";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RolesAllowed({"ROLE_studentin"})
|
@RolesAllowed({"ROLE_studentin"})
|
||||||
@GetMapping("/createStudent")
|
@GetMapping("/createStudent")
|
||||||
public String createStudent(KeycloakAuthenticationToken token, Model model) {
|
public String createGroupAsStudent(KeycloakAuthenticationToken token, Model model) {
|
||||||
Account account = keyCloakService.createAccountFromPrincipal(token);
|
Account account = keyCloakService.createAccountFromPrincipal(token);
|
||||||
model.addAttribute("account", account);
|
model.addAttribute("account", account);
|
||||||
model.addAttribute("lectures", groupService.getAllLecturesWithVisibilityPublic());
|
model.addAttribute("lectures", groupService.getAllLecturesWithVisibilityPublic());
|
||||||
@ -99,7 +98,7 @@ public class WebController {
|
|||||||
|
|
||||||
@RolesAllowed({"ROLE_studentin"})
|
@RolesAllowed({"ROLE_studentin"})
|
||||||
@PostMapping("/createStudent")
|
@PostMapping("/createStudent")
|
||||||
public String pCreateStudent(KeycloakAuthenticationToken token,
|
public String postCreateGroupAsStudent(KeycloakAuthenticationToken token,
|
||||||
@RequestParam("title") String title,
|
@RequestParam("title") String title,
|
||||||
@RequestParam("description") String description,
|
@RequestParam("description") String description,
|
||||||
@RequestParam(value = "visibility", required = false) Boolean visibility,
|
@RequestParam(value = "visibility", required = false) Boolean visibility,
|
||||||
@ -110,7 +109,7 @@ public class WebController {
|
|||||||
Account account = keyCloakService.createAccountFromPrincipal(token);
|
Account account = keyCloakService.createAccountFromPrincipal(token);
|
||||||
UUID parentUUID = controllerService.getUUID(parent);
|
UUID parentUUID = controllerService.getUUID(parent);
|
||||||
validationService.checkFields(description, title, userMaximum, maxInfiniteUsers);
|
validationService.checkFields(description, title, userMaximum, maxInfiniteUsers);
|
||||||
controllerService.createGroup(account, title, description, visibility, maxInfiniteUsers, userMaximum, parentUUID);
|
controllerService.createGroup(account, title, description, visibility, null, maxInfiniteUsers, userMaximum, parentUUID);
|
||||||
return "redirect:/gruppen2/";
|
return "redirect:/gruppen2/";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -55,32 +55,12 @@ public class ControllerService {
|
|||||||
* @param title Gruppentitel
|
* @param title Gruppentitel
|
||||||
* @param description Gruppenbeschreibung
|
* @param description Gruppenbeschreibung
|
||||||
*/
|
*/
|
||||||
public void createGroup(Account account, String title, String description, Boolean isVisibilityPrivate, Boolean isMaximumInfinite, Long userMaximum, UUID parent) throws EventException {
|
public UUID createGroup(Account account, String title, String description, Boolean isVisibilityPrivate, Boolean isLecture, Boolean isMaximumInfinite, Long userMaximum, UUID parent) throws EventException {
|
||||||
|
userMaximum = checkInfiniteUsers(isMaximumInfinite, userMaximum);
|
||||||
|
|
||||||
Visibility groupVisibility = setGroupVisibility(isVisibilityPrivate);
|
Visibility groupVisibility = setGroupVisibility(isVisibilityPrivate);
|
||||||
UUID groupId = UUID.randomUUID();
|
UUID groupId = UUID.randomUUID();
|
||||||
|
|
||||||
userMaximum = checkInfiniteUsers(isMaximumInfinite, userMaximum);
|
|
||||||
|
|
||||||
CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), parent, GroupType.SIMPLE, groupVisibility, userMaximum);
|
|
||||||
eventService.saveEvent(createGroupEvent);
|
|
||||||
|
|
||||||
addUser(account, groupId);
|
|
||||||
updateTitle(account, groupId, title);
|
|
||||||
updateDescription(account, groupId, description);
|
|
||||||
updateRole(account.getName(), groupId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID createOrga(Account account, String title, String description, Boolean isVisibilityPrivate, Boolean isLecture, Boolean isMaximumInfinite, Long userMaximum, UUID parent, MultipartFile file) throws EventException, IOException {
|
|
||||||
userMaximum = checkInfiniteUsers(isMaximumInfinite, userMaximum);
|
|
||||||
|
|
||||||
List<User> userList = readCsvFile(file);
|
|
||||||
|
|
||||||
if (userList.size() > userMaximum) {
|
|
||||||
userMaximum = (long) userList.size() + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
UUID groupId = UUID.randomUUID();
|
|
||||||
Visibility groupVisibility = setGroupVisibility(isVisibilityPrivate);
|
|
||||||
GroupType groupType = setGroupType(isLecture);
|
GroupType groupType = setGroupType(isLecture);
|
||||||
|
|
||||||
CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), parent, groupType, groupVisibility, userMaximum);
|
CreateGroupEvent createGroupEvent = new CreateGroupEvent(groupId, account.getName(), parent, groupType, groupVisibility, userMaximum);
|
||||||
@ -94,6 +74,18 @@ public class ControllerService {
|
|||||||
return groupId;
|
return groupId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createGroupAsOrga(Account account, String title, String description, Boolean isVisibilityPrivate, Boolean isLecture, Boolean isMaximumInfinite, Long userMaximum, UUID parent, MultipartFile file) throws EventException, IOException {
|
||||||
|
userMaximum = checkInfiniteUsers(isMaximumInfinite, userMaximum);
|
||||||
|
|
||||||
|
List<User> userList = readCsvFile(file);
|
||||||
|
userMaximum = adjustUserMaximum((long) userList.size(), 1L, userMaximum);
|
||||||
|
|
||||||
|
UUID groupId = createGroup(account, title, description, isVisibilityPrivate, isLecture, isMaximumInfinite, userMaximum, parent);
|
||||||
|
|
||||||
|
addUserList(userList, groupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private Long checkInfiniteUsers(Boolean isMaximumInfinite, Long userMaximum) {
|
private Long checkInfiniteUsers(Boolean isMaximumInfinite, Long userMaximum) {
|
||||||
isMaximumInfinite = isMaximumInfinite != null;
|
isMaximumInfinite = isMaximumInfinite != null;
|
||||||
|
|
||||||
@ -123,7 +115,7 @@ public class ControllerService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<User> readCsvFile(MultipartFile file) throws EventException, IOException {
|
private List<User> readCsvFile(MultipartFile file) throws EventException, IOException {
|
||||||
if (!file.isEmpty()) {
|
if (!file.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
List<User> userList = CsvService.read(file.getInputStream());
|
List<User> userList = CsvService.read(file.getInputStream());
|
||||||
@ -136,6 +128,13 @@ public class ControllerService {
|
|||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Long adjustUserMaximum(Long newUsers, Long oldUsers, Long maxUsers){
|
||||||
|
if (oldUsers + newUsers > maxUsers) {
|
||||||
|
maxUsers = oldUsers + newUsers;
|
||||||
|
}
|
||||||
|
return maxUsers;
|
||||||
|
}
|
||||||
|
|
||||||
public void addUser(Account account, UUID groupId) {
|
public void addUser(Account account, UUID groupId) {
|
||||||
AddUserEvent addUserEvent = new AddUserEvent(groupId, account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail());
|
AddUserEvent addUserEvent = new AddUserEvent(groupId, account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail());
|
||||||
eventService.saveEvent(addUserEvent);
|
eventService.saveEvent(addUserEvent);
|
||||||
|
|||||||
Reference in New Issue
Block a user