Skip to content
Snippets Groups Projects

Resolve "[Queue 2.0] Status page filtering on request type"

Files

@@ -27,6 +27,7 @@ import nl.tudelft.queue.dto.view.statistics.RequestFrequencyViewDto;
import nl.tudelft.queue.dto.view.statistics.RequestStatusViewDto;
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.service.EditionStatusService;
@@ -49,10 +50,11 @@ public class EditionStatusController {
* Creates and returns the data for a histogram regarding the status of requests over time. The data for
* requests can be filtered on labs, assignments and rooms to only selectively count.
*
* @param id The id of the course to find status on.
* @param editionId The id of the course to find status on.
* @param labs The labs to filter on.
* @param assignments The assignments to filter on.
* @param rooms The rooms to filter on.
* @param type The request types to filter on.
* @param nBuckets The number of buckets to create. 4 by default (for 4 hours of lab).
* @return A RequestFrequencyViewDto object representing the buckets into which the lab was
* divided and the number of requests created, open, and handled during each of the
@@ -64,8 +66,9 @@ public class EditionStatusController {
@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,
@RequestParam(required = false, defaultValue = "5") int nBuckets) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms);
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms, type);
TreeSet<Long> buckets = ess.createBucketsOverCourse(labs, nBuckets);
return new RequestFrequencyViewDto(
@@ -83,6 +86,7 @@ public class EditionStatusController {
* @param labs The labs to filter on.
* @param assignments The assignments to filter on.
* @param rooms The rooms to filter on.
* @param type The request types to filter on.
* @return The data in the form of a StatusViewDto.
*/
@GetMapping("/edition/{editionId}/status/freq/status")
@@ -90,8 +94,9 @@ public class EditionStatusController {
public RequestStatusViewDto getRequestStatusFrequencies(@PathVariable Long editionId,
@RequestParam(required = false, defaultValue = "") List<Lab> labs,
@RequestParam(required = false, defaultValue = "") List<Long> assignments,
@RequestParam(required = false, defaultValue = "") List<Long> rooms) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms);
@RequestParam(required = false, defaultValue = "") List<Long> rooms,
@RequestParam(required = false, defaultValue = "") List<RequestType> type) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms, type);
return new RequestStatusViewDto(
ess.countWhere(requests, r -> r.getEventInfo().getStatus().isPending()),
@@ -112,6 +117,7 @@ public class EditionStatusController {
* @param labs The labs to filter on.
* @param assignments The assignments to filter on.
* @param rooms The rooms to filter on.
* @param type The request types to filter on.
* @return The data in the form of a LabStatisticsViewDto.
*/
@GetMapping("/edition/{editionId}/status/lab/info")
@@ -119,8 +125,9 @@ public class EditionStatusController {
public LabStatisticsViewDto getGenericLabInformation(@PathVariable Long editionId,
@RequestParam(required = false, defaultValue = "") List<Lab> labs,
@RequestParam(required = false, defaultValue = "") List<Long> assignments,
@RequestParam(required = false, defaultValue = "") List<Long> rooms) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms);
@RequestParam(required = false, defaultValue = "") List<Long> rooms,
@RequestParam(required = false, defaultValue = "") List<RequestType> type) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms, type);
return new LabStatisticsViewDto(
ess.countDistinctUsers(requests),
@@ -141,6 +148,7 @@ public class EditionStatusController {
* @param labs The labs to filter on.
* @param assignments The assignments to filter on.
* @param rooms The rooms to filter on.
* @param type The request types to filter on.
* @return The names of assignments mapped to the number of times that assignment occurs.
*/
@GetMapping("/edition/{editionId}/status/freq/assignment")
@@ -148,8 +156,9 @@ public class EditionStatusController {
public Map<String, Long> getAssignmentCounts(@PathVariable Long editionId,
@RequestParam(required = false, defaultValue = "") List<Lab> labs,
@RequestParam(required = false, defaultValue = "") List<Long> assignments,
@RequestParam(required = false, defaultValue = "") List<Long> rooms) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms);
@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.countRequestsPerAssignment(assignments, requests);
}
@@ -162,6 +171,7 @@ public class EditionStatusController {
* @param labs The labs to filter on.
* @param assignments The assignments to filter on.
* @param rooms The rooms to filter on.
* @param type The request types to filter on.
* @return The names of assignments mapped to the number of times that room occurs.
*/
@GetMapping("/edition/{editionId}/status/freq/room")
@@ -169,8 +179,9 @@ public class EditionStatusController {
public Map<String, Long> getRoomCounts(@PathVariable Long editionId,
@RequestParam(required = false, defaultValue = "") List<Lab> labs,
@RequestParam(required = false, defaultValue = "") List<Long> assignments,
@RequestParam(required = false, defaultValue = "") List<Long> rooms) {
List<LabRequest> requests = ess.getFilteredRequests(labs, assignments, rooms);
@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.countRequestsPerRoom(rooms, requests);
}
Loading