Skip to content
Snippets Groups Projects

Hide non-queue editions by default

Files

@@ -18,7 +18,6 @@
package nl.tudelft.queue.controller;
import static java.time.LocalDateTime.now;
import static nl.tudelft.labracore.lib.LabracoreApiUtil.fromPageable;
import static nl.tudelft.queue.PageUtil.toPage;
import java.io.IOException;
@@ -29,13 +28,16 @@ import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import javax.validation.Valid;
import nl.tudelft.labracore.api.*;
import nl.tudelft.labracore.api.dto.*;
import nl.tudelft.labracore.lib.security.user.AuthenticatedPerson;
import nl.tudelft.labracore.lib.security.user.DefaultRole;
import nl.tudelft.labracore.lib.security.user.Person;
import nl.tudelft.librador.dto.view.View;
import nl.tudelft.queue.PageUtil;
import nl.tudelft.queue.cache.*;
import nl.tudelft.queue.csv.EmptyCsvException;
import nl.tudelft.queue.csv.InvalidCsvException;
@@ -43,17 +45,19 @@ import nl.tudelft.queue.dto.create.CourseRequestCreateDTO;
import nl.tudelft.queue.dto.create.QueueEditionCreateDTO;
import nl.tudelft.queue.dto.create.QueueRoleCreateDTO;
import nl.tudelft.queue.dto.util.EditionFilterDTO;
import nl.tudelft.queue.dto.view.QueueEditionDetailsDTO;
import nl.tudelft.queue.dto.view.QueueSessionSummaryDTO;
import nl.tudelft.queue.model.LabRequest;
import nl.tudelft.queue.model.QueueEdition;
import nl.tudelft.queue.model.enums.QueueSessionType;
import nl.tudelft.queue.model.labs.Lab;
import nl.tudelft.queue.repository.QueueEditionRepository;
import nl.tudelft.queue.repository.QueueSessionRepository;
import nl.tudelft.queue.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.core.io.Resource;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
@@ -138,6 +142,9 @@ public class EditionController {
@Autowired
private QuestionService qs;
@Autowired
private QueueEditionRepository qer;
@Autowired
@Lazy
private LabService ls;
@@ -159,16 +166,18 @@ public class EditionController {
PersonDetailsDTO pd = Objects.requireNonNull(pApi.getPersonById(person.getId()).block());
var filter = es.getFilter("/editions");
var editions = eApi
.getEditionsPageActiveOrTaughtBy(person.getId(), fromPageable(pageable), filter.getPrograms(),
filter.getNameSearch())
List<EditionDetailsDTO> lcEditions = eApi.getAllEditionsActiveOrTaughtBy(person.getId()).collectList()
.block();
eCache.register(lcEditions);
erCache.getAndIgnoreMissing(lcEditions.stream().map(EditionDetailsDTO::getId));
eCache.register(editions.getContent());
erCache.getAndIgnoreMissing(editions.getContent().stream().map(EditionDetailsDTO::getId));
var editions = es.queueEditionDTO(lcEditions, QueueEditionDetailsDTO.class);
if (person.getDefaultRole() != DefaultRole.ADMIN) {
editions = editions.stream().filter(e -> !e.getHidden()).toList();
}
var page = PageUtil.toPage(pageable, editions);
model.addAttribute("editions",
new PageImpl<>(editions.getContent(), pageable, editions.getTotalElements()));
model.addAttribute("editions", page);
model.addAttribute("programs", cCache.getAll()
.stream().map(CourseDetailsDTO::getProgram).distinct()
.sorted(Comparator.comparing(ProgramSummaryDTO::getName))
@@ -257,7 +266,8 @@ public class EditionController {
*/
@GetMapping("/edition/{editionId}")
public String getEditionView(@PathVariable Long editionId, Model model) {
EditionDetailsDTO edition = eCache.getRequired(editionId);
QueueEditionDetailsDTO edition = es.queueEditionDTO(eCache.getRequired(editionId),
QueueEditionDetailsDTO.class);
model.addAttribute("edition", edition);
model.addAttribute("assignments",
@@ -672,6 +682,7 @@ public class EditionController {
EditionCreateDTO edition = create.apply();
Long id = eApi.addEdition(edition).block();
qer.save(QueueEdition.builder().id(id).hidden(false).build());
return "redirect:/edition/" + id;
}
@@ -842,4 +853,20 @@ public class EditionController {
QueueSessionSummaryDTO.class);
}
/**
* Toggles the visibility of an edition in Queue.
*
* @param editionId The id of the edition
* @return A redirect to the edition page
*/
@Transactional
@PostMapping("/edition/{editionId}/visibility")
@PreAuthorize("@permissionService.canManageEdition(#editionId)")
public String toggleVisibility(@PathVariable Long editionId) {
QueueEdition qEdition = es.getOrCreateQueueEdition(editionId);
qEdition.setHidden(!qEdition.getHidden());
qer.save(qEdition);
return "redirect:/edition/{editionId}";
}
}
Loading