Skip to content
Snippets Groups Projects
Commit b31e0723 authored by Henry Page's avatar Henry Page :speech_balloon:
Browse files

service implementation

parent 10eedcb6
No related branches found
No related tags found
2 merge requests!724Deploy,!624Resolve "Distribution of requests per assignment over a lab"
...@@ -22,13 +22,17 @@ import java.time.temporal.ChronoUnit; ...@@ -22,13 +22,17 @@ import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import nl.tudelft.labracore.api.dto.AssignmentSummaryDTO;
import nl.tudelft.labracore.api.dto.EditionSummaryDTO; import nl.tudelft.labracore.api.dto.EditionSummaryDTO;
import nl.tudelft.queue.cache.AssignmentCacheManager;
import nl.tudelft.queue.cache.EditionRolesCacheManager; import nl.tudelft.queue.cache.EditionRolesCacheManager;
import nl.tudelft.queue.cache.SessionCacheManager; import nl.tudelft.queue.cache.SessionCacheManager;
import nl.tudelft.queue.model.LabRequest; import nl.tudelft.queue.model.LabRequest;
import nl.tudelft.queue.model.QueueSession; import nl.tudelft.queue.model.QueueSession;
import nl.tudelft.queue.model.RequestEvent; import nl.tudelft.queue.model.RequestEvent;
import nl.tudelft.queue.model.enums.RequestType;
import nl.tudelft.queue.model.events.EventWithAssistant; import nl.tudelft.queue.model.events.EventWithAssistant;
import nl.tudelft.queue.model.labs.Lab;
import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
...@@ -42,13 +46,16 @@ public class LabStatusService { ...@@ -42,13 +46,16 @@ public class LabStatusService {
private SessionCacheManager sCache; private SessionCacheManager sCache;
@Autowired @Autowired
private EditionRolesCacheManager eRolesCache; private EditionRolesCacheManager eCache;
@Autowired @Autowired
private RoleDTOService roleDTOService; private RoleDTOService roleDTOService;
@Autowired @Autowired
private EditionStatusService editionStatusService; private EditionStatusService ess;
@Autowired
private AssignmentCacheManager aCache;
/** /**
* Produces a list of KV entries which corresponds to the number of requests taken AND the time since the * Produces a list of KV entries which corresponds to the number of requests taken AND the time since the
...@@ -62,7 +69,7 @@ public class LabStatusService { ...@@ -62,7 +69,7 @@ public class LabStatusService {
public Map<String, Pair<Long, String>> getTimeSinceLastRequestTA( public Map<String, Pair<Long, String>> getTimeSinceLastRequestTA(
QueueSession<?> qSession, Set<Long> editionFilter) { QueueSession<?> qSession, Set<Long> editionFilter) {
var session = sCache.getOrThrow(qSession.getSession()); var session = sCache.getOrThrow(qSession.getSession());
var rolesPerEdition = eRolesCache.get(session.getEditions().stream().map(EditionSummaryDTO::getId)); var rolesPerEdition = eCache.get(session.getEditions().stream().map(EditionSummaryDTO::getId));
var mappings = getTimeSinceLastInteractionAllTA(qSession); var mappings = getTimeSinceLastInteractionAllTA(qSession);
...@@ -80,7 +87,7 @@ public class LabStatusService { ...@@ -80,7 +87,7 @@ public class LabStatusService {
return "N/A"; return "N/A";
})); }));
Map<String, Long> requestsPerAssistant = editionStatusService Map<String, Long> requestsPerAssistant = ess
.countRequestsPerAssistant((List<LabRequest>) qSession.getRequests()); .countRequestsPerAssistant((List<LabRequest>) qSession.getRequests());
// combine the request per assistant, and time since last request interaction // combine the request per assistant, and time since last request interaction
...@@ -114,4 +121,26 @@ public class LabStatusService { ...@@ -114,4 +121,26 @@ public class LabStatusService {
)); ));
} }
/**
* Gets the number of requests per assignment split into questions and submissions on the basis of 1
* session
*
* @param qSession The session we are considering
* @return KV entries where keys correspond to assignment names and values correspond to the
* number of question requests and submission requests.
*/
public Map<String, Pair<Long, Long>> requestPerAssignmentCountLab(Lab qSession, Set<Long> editionFilter) {
var session = sCache.getOrThrow(qSession.getId());
return session.getAssignments().stream().collect(Collectors.toMap(
AssignmentSummaryDTO::getName,
assignment -> Pair.of(
ess.countWhere(qSession.getRequests(),
request -> request.getAssignment() == assignment.getId()
&& request.getRequestType() == RequestType.QUESTION),
ess.countWhere(qSession.getRequests(),
request -> request.getAssignment() == assignment.getId()
&& request.getRequestType() == RequestType.SUBMISSION))));
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment