Skip to content
Snippets Groups Projects

Display shared editions properly

3 files
+ 81
7
Compare changes
  • Side-by-side
  • Inline

Files

@@ -229,6 +229,9 @@ public class HomeController {
model.addAttribute("upcomingRoles", upcomingRoles);
model.addAttribute("sessions", calendarEntries);
getStatusSharedEditions(model, sharedEditions, activeRoles, upcomingRoles, archivedRoles,
finishedRoles);
model.addAttribute("page", "my-courses");
return "home/dashboard";
@@ -293,4 +296,56 @@ public class HomeController {
model.addAttribute("stars", fs.countRatings(assistantId));
}
/**
* Fills in the model for displaying shared editions.
*
* @param model The model to be filled in .
* @param sharedEditions The entire shared editions.
* @param active The active editions.
* @param upcoming The upcoming editions.
* @param archived The archived editions.
* @param finished The finished editions.
*/
private void getStatusSharedEditions(Model model, Set<EditionCollectionDetailsDTO> sharedEditions,
List<RoleEditionDetailsDTO> active, List<RoleEditionDetailsDTO> upcoming,
List<RoleEditionDetailsDTO> archived, List<RoleEditionDetailsDTO> finished) {
var archivedSharedEditions = sharedEditions.stream()
.filter(s -> s.getEditions().stream().allMatch(EditionSummaryDTO::getIsArchived))
.collect(Collectors.toSet());
var activeSharedEditions = sharedEditions.stream()
.filter(s -> s.getEditions().stream().anyMatch(e -> active.stream()
.map(RoleEditionDetailsDTO::getEdition).anyMatch(ac -> ac.equals(e))))
.collect(Collectors.toSet());
var upcomingSharedEditions = sharedEditions.stream().filter(s -> {
var editions = s.getEditions();
var sharedEditionsList = archived.stream().map(RoleEditionDetailsDTO::getEdition)
.collect(Collectors.toList());
boolean anyUpcoming = upcoming.stream().map(RoleEditionDetailsDTO::getEdition)
.anyMatch(editions::contains);
boolean noUpcomingIsArchived = upcoming.stream().map(RoleEditionDetailsDTO::getEdition)
.noneMatch(sharedEditionsList::contains);
boolean noneActive = active.stream().map(RoleEditionDetailsDTO::getEdition)
.noneMatch(editions::contains);
return anyUpcoming && noUpcomingIsArchived && noneActive;
}).collect(Collectors.toSet());
var finishedSharedEditions = sharedEditions.stream().filter(s -> {
var editions = s.getEditions();
boolean anyFinished = finished.stream().map(RoleEditionDetailsDTO::getEdition)
.anyMatch(editions::contains);
boolean noneUpcoming = upcoming.stream().map(RoleEditionDetailsDTO::getEdition)
.noneMatch(editions::contains);
boolean noneActive = active.stream().map(RoleEditionDetailsDTO::getEdition)
.noneMatch(editions::contains);
return anyFinished && noneUpcoming && noneActive;
}).collect(Collectors.toSet());
model.addAttribute("archivedSharedEditions", archivedSharedEditions);
model.addAttribute("activeSharedEditions", activeSharedEditions);
model.addAttribute("upcomingSharedEditions", upcomingSharedEditions);
model.addAttribute("finishedSharedEditions", finishedSharedEditions);
}
}
Loading