3204 Return reviewer history even if they had no targets assigned

This commit is contained in:
Andreas Svanberg 2024-01-19 10:00:15 +01:00
parent 8817be1a0d
commit 4e08d1f82c
2 changed files with 13 additions and 10 deletions
core/src/main/java/se/su/dsv/scipro/reviewing

@ -20,11 +20,11 @@ public interface ReviewerCapacityService {
Target getTarget(User reviewer, Year year);
/**
* Returns the target for the given reviewer up to, but not including, the given year.
* Returns the history for the three years before the given year.
*
* @param reviewer the reviewer to get the targets for
* @param year the year to get the targets up to, but not including
* @return the entire history for the given reviewer up to the given year
* @return the three-year history for the given reviewer up to the given year
*/
List<TargetHistory> getTargetHistory(User reviewer, Year year);

@ -18,6 +18,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAssignmentService {
private final ReviewerTargetRepository reviewerTargetRepository;
@ -94,17 +95,19 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
@Override
public List<TargetHistory> getTargetHistory(User reviewer, Year year) {
return reviewerTargetRepository.getReviewerTargetsBeforeYear(reviewer, year)
.stream()
.map(reviewerTarget -> {
return Stream.iterate(year, y -> y.minusYears(1))
.skip(1) // skip given year
.limit(3) // get three years
.map(historicYear -> {
Optional<ReviewerTarget> reviewerTarget = reviewerTargetRepository.getReviewerTarget(reviewer, historicYear);
int completedInSpring = decisionRepository.countDecisions(reviewer,
startOfSpring(reviewerTarget.getYear()), endOfSpring(reviewerTarget.getYear()));
startOfSpring(historicYear.getValue()), endOfSpring(historicYear.getValue()));
int completedInAutumn = decisionRepository.countDecisions(reviewer,
startOfAutumn(reviewerTarget.getYear()), endOfAutumn(reviewerTarget.getYear()));
startOfAutumn(historicYear.getValue()), endOfAutumn(historicYear.getValue()));
return new TargetHistory(
Year.of(reviewerTarget.getYear()),
reviewerTarget.getSpring(),
reviewerTarget.getAutumn(),
historicYear,
reviewerTarget.map(ReviewerTarget::getSpring).orElse(0),
reviewerTarget.map(ReviewerTarget::getAutumn).orElse(0),
completedInSpring,
completedInAutumn);
})