From 7e61015592d39f1d1be708f774376f96d144cd8e Mon Sep 17 00:00:00 2001
From: Henry Page <h.page@student.tudelft.nl>
Date: Thu, 8 Jun 2023 00:54:41 +0200
Subject: [PATCH] temp
---
.../nl/tudelft/queue/service/LabService.java | 1 +
.../tudelft/queue/service/RoleDTOService.java | 16 +++++++++++
.../lab/view/components/slots-info.html | 28 +++++++++++++++++++
3 files changed, 45 insertions(+)
diff --git a/src/main/java/nl/tudelft/queue/service/LabService.java b/src/main/java/nl/tudelft/queue/service/LabService.java
index 79eea8c1d..ab2149ab5 100644
--- a/src/main/java/nl/tudelft/queue/service/LabService.java
+++ b/src/main/java/nl/tudelft/queue/service/LabService.java
@@ -18,6 +18,7 @@
package nl.tudelft.queue.service;
import static java.time.LocalDateTime.now;
+import static nl.tudelft.labracore.api.dto.RolePersonDetailsDTO.TypeEnum.*;
import static nl.tudelft.queue.misc.QueueSessionStatus.*;
import java.io.IOException;
diff --git a/src/main/java/nl/tudelft/queue/service/RoleDTOService.java b/src/main/java/nl/tudelft/queue/service/RoleDTOService.java
index 440df091f..6c8db0953 100644
--- a/src/main/java/nl/tudelft/queue/service/RoleDTOService.java
+++ b/src/main/java/nl/tudelft/queue/service/RoleDTOService.java
@@ -28,6 +28,8 @@ import nl.tudelft.labracore.api.RoleControllerApi;
import nl.tudelft.labracore.api.dto.*;
import nl.tudelft.labracore.lib.security.user.Person;
import nl.tudelft.queue.cache.EditionRolesCacheManager;
+import nl.tudelft.queue.cache.SessionCacheManager;
+import nl.tudelft.queue.model.QueueSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -40,6 +42,9 @@ public class RoleDTOService {
@Autowired
private RoleControllerApi rApi;
+ @Autowired
+ private SessionCacheManager sessionCacheManager;
+
public List<String> names(List<PersonSummaryDTO> people) {
return people.stream().map(PersonSummaryDTO::getDisplayName).collect(Collectors.toList());
}
@@ -131,6 +136,17 @@ public class RoleDTOService {
return roles(eDto, Set.of(TA));
}
+ public List<PersonSummaryDTO> assistantsAndManagers(QueueSession<?> qSession) {
+ return erCache
+ .getAndIgnoreMissing(sessionCacheManager.getRequired(qSession.getId()).getEditions().stream()
+ .map(EditionSummaryDTO::getId))
+ .stream().flatMap(rh -> rh.getRoles().stream())
+ .filter(role -> Set.of(TA, HEAD_TA, TEACHER, TEACHER_RO).contains(role.getType()))
+ .map(RolePersonDetailsDTO::getPerson)
+ .distinct()
+ .collect(Collectors.toList());
+ }
+
public List<PersonSummaryDTO> headTAs(EditionDetailsDTO eDto) {
return roles(eDto, Set.of(HEAD_TA));
}
diff --git a/src/main/resources/templates/lab/view/components/slots-info.html b/src/main/resources/templates/lab/view/components/slots-info.html
index 12fd5772c..dce4117b6 100644
--- a/src/main/resources/templates/lab/view/components/slots-info.html
+++ b/src/main/resources/templates/lab/view/components/slots-info.html
@@ -34,6 +34,10 @@
<a href="#ts-capacity-tab" class="nav-link" data-toggle="list" aria-selected="true"><i
class="fa fa-chair"></i> Edit Time-slot Capacity</a>
</li>
+ <li class="nav-item" role="tab">
+ <a href="#ts-distribution-tab" class="nav-link" data-toggle="list" aria-selected="true"><i
+ class="fa fa-solid fa-people"></i> Distribute Requests</a>
+ </li>
</ul>
<div class="tab-content">
@@ -192,6 +196,30 @@
</div>
</th:block>
+ <th:block th:if="${@permissionService.canManageSession(qSession.data)}">
+ <div id="ts-distribution-tab" class="tab-pane fade">
+ <h2>Distribute Requests</h2>
+ <p>Distribute pending requests among selected TAs.</p>
+ <form th:with="allAssistants = ${@roleDTOService.assistantsAndManagers(qSession.data)}">
+ <label class="col-sm-1 col-form-label" for="assistant-select">Select Assistants:</label>
+ <div class="col-sm-3">
+ <select multiple class="selectpicker form-control"
+ id="assistant-select"
+ data-live-search="true"
+ required>
+ <th:block th:each="assistant : ${allAssistants}">
+ <option th:value="${assistant.id}"
+ th:text="|${assistant.displayName}|">
+ </option>
+ </th:block>
+ </select>
+ </div>
+ </form>
+
+
+ </div>
+ </th:block>
+
<hr>
</div>
--
GitLab