Skip to content
Snippets Groups Projects

Draft: Button to redirect a request to head TA/lecturer

Files

@@ -39,6 +39,7 @@ import nl.tudelft.queue.model.LabRequest;
import nl.tudelft.queue.model.enums.RequestStatus;
import nl.tudelft.queue.model.enums.RequestType;
import nl.tudelft.queue.model.labs.Lab;
import nl.tudelft.queue.model.records.RequestCountRecord;
import nl.tudelft.queue.service.EditionStatusService;
@Validated
@@ -141,8 +142,9 @@ public class EditionStatusController {
ess.countWhere(requests, r -> r.getEventInfo().getStatus().isHandled()),
ess.countAssignmentFreqs(requests, aCache.getAndIgnoreMissing(assignments)).stream()
.reduce((a,
b) -> a.getQuestionCount() + a.getSubmissionCount() < b.getQuestionCount()
+ b.getSubmissionCount() ? b : a)
b) -> a.getRequestCounts().questionCount() + a.getRequestCounts()
.submissionCount() < b.getRequestCounts().questionCount()
+ b.getRequestCounts().submissionCount() ? b : a)
.map(AssignmentCountStatisticsViewDto::getAssignmentName)
.orElse("N/A"), // order preserving in case of tie
ess.mostCountedName(ess.countRequestsPerRoom(rooms, requests)),
@@ -197,4 +199,50 @@ public class EditionStatusController {
return ess.countRequestsPerRoom(rooms, requests);
}
/**
* Gets a mapping of labs to the number of questions and submission requests there were in those labs
* considering the provided filters.
*
* @param editionId The edition to consider
* @param labs The labs to consider
* @param assignments The assignments to consider
* @param rooms The rooms to consider
* @param type The types of requests to consider
* @return The mapping as described above
*/
@GetMapping("/edition/{editionId}/status/lab/freq")
@PreAuthorize("@permissionService.canViewEditionStatus(#editionId)")
public Map<String, RequestCountRecord> getRequestCounts(@PathVariable Long editionId,
@RequestParam(required = false, defaultValue = "") List<Lab> labs,
@RequestParam(required = false, defaultValue = "") List<Long> assignments,
@RequestParam(required = false, defaultValue = "") List<Long> rooms,
@RequestParam(required = false, defaultValue = "") List<RequestType> type) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms, type);
return ess.countRequestsPerLab(requests);
}
/**
* Gets a mapping of labs to the average wait and processing times there were in those labs considering
* the provided filters.
*
* @param editionId The edition to consider
* @param labs The labs to consider
* @param assignments The assignments to consider
* @param rooms The rooms to consider
* @param type The request types to consider
* @return A map containing the mapping as described above to be used in the statistic.
*/
@GetMapping("/edition/{editionId}/status/lab/time")
@PreAuthorize("@permissionService.canViewEditionStatus(#editionId)")
public Map<String, LabStatisticsViewDto> getWaitProcessingTime(@PathVariable Long editionId,
@RequestParam(required = false, defaultValue = "") List<Lab> labs,
@RequestParam(required = false, defaultValue = "") List<Long> assignments,
@RequestParam(required = false, defaultValue = "") List<Long> rooms,
@RequestParam(required = false, defaultValue = "") List<RequestType> type) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms, type);
return ess.countWaitProcessingTimePerLab(requests);
}
}
Loading