Skip to content
Snippets Groups Projects

Resolve "Implement shared edition and shared labs"

Compare and
36 files
+ 1035
42
Compare changes
  • Side-by-side
  • Inline

Files

@@ -18,23 +18,23 @@
package nl.tudelft.queue.controller;
import static nl.tudelft.labracore.api.dto.PersonDetailsDTO.DefaultRoleEnum.ADMIN;
import static nl.tudelft.labracore.api.dto.PersonDetailsDTO.DefaultRoleEnum.TEACHER;
import static nl.tudelft.labracore.api.dto.RoleEditionDetailsDTO.TypeEnum.TEACHER_RO;
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import nl.tudelft.labracore.api.EditionControllerApi;
import nl.tudelft.labracore.api.PersonControllerApi;
import nl.tudelft.labracore.api.SessionControllerApi;
import nl.tudelft.labracore.api.dto.*;
import nl.tudelft.labracore.lib.security.user.AuthenticatedPerson;
import nl.tudelft.labracore.lib.security.user.Person;
import nl.tudelft.librador.dto.view.View;
import nl.tudelft.queue.cache.EditionCacheManager;
import nl.tudelft.queue.cache.EditionCollectionCacheManager;
import nl.tudelft.queue.cache.PersonCacheManager;
import nl.tudelft.queue.cache.SessionCacheManager;
import nl.tudelft.queue.dto.view.FeedbackViewDTO;
@@ -81,12 +81,18 @@ public class HomeController {
@Autowired
private EditionCacheManager eCache;
@Autowired
private EditionCollectionCacheManager ecCache;
@Autowired
private PersonCacheManager pCache;
@Autowired
private SessionCacheManager sCache;
@Autowired
private SessionControllerApi sApi;
@Autowired
private EditionService es;
@@ -163,7 +169,11 @@ public class HomeController {
var sessions = sCache.get(editions.values().stream()
.flatMap(e -> e.getSessions().stream())
.filter(s -> s.getEnd().isAfter(now))
.map(SessionSummaryDTO::getId));
.map(SessionSummaryDTO::getId)).stream().collect(Collectors.toSet());
var sharedEditions = editions.values().stream().map(EditionDetailsDTO::getEditionCollections)
.flatMap(List::stream).map(e -> ecCache.getOrThrow(e.getId()))
.collect(Collectors.toSet());
var calendarEntries = ls.convertToCalendarEntries(
lr.findAllBySessions(
@@ -175,6 +185,17 @@ public class HomeController {
.filter(qs -> ps.canEnqueueSelfNow(qs.getId()) || qs.getSlot().open())
.collect(Collectors.toList())));
var sharedLabs = sharedEditions.stream().collect(Collectors.toMap(
EditionCollectionDetailsDTO::getId,
s -> es.sortLabs(View.convert(new ArrayList<>(lr.findAllBySessions(
eCache.get(s.getEditions().stream().map(EditionSummaryDTO::getId).toList())
.stream().map(EditionDetailsDTO::getSessions).flatMap(List::stream)
.map(SessionSummaryDTO::getId).collect(Collectors.toList()))),
QueueSessionSummaryDTO.class)).stream()
.filter(QueueSessionSummaryDTO::getIsShared)
.filter(qs -> ps.canEnqueueSelf(qs.getId()) || qs.getSlot().open())
.collect(Collectors.toList())));
if (pd.getDefaultRole() == ADMIN) {
var runningEditions = eCache.get(Objects.requireNonNull(
eApi.getAllEditionsActiveAtDate(LocalDateTime.now())
@@ -194,7 +215,16 @@ public class HomeController {
model.addAttribute("runningLabs", runningLabs);
}
if (pd.getDefaultRole() == ADMIN || pd.getDefaultRole() == TEACHER) {
model.addAttribute("allEditions",
eApi.getAllEditionsActiveDuringPeriod(
new Period().start(LocalDateTime.now()).end(LocalDateTime.now().plusYears(1)))
.collectList().block());
}
model.addAttribute("editions", editions);
model.addAttribute("sharedEditions", sharedEditions);
model.addAttribute("sharedLabs", sharedLabs);
model.addAttribute("user", pd);
model.addAttribute("labs", labs);
model.addAttribute("activeRoles", activeRoles);
Loading