3204 Lower assigned targets

This commit is contained in:
Andreas Svanberg 2023-12-06 15:38:11 +01:00
parent 4b727167e5
commit 08490fafe5
4 changed files with 44 additions and 6 deletions

@ -32,12 +32,20 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
@Override
public void assignTarget(User reviewer, DateRange dateRange, int target) {
ReviewerTarget reviewerTarget = new ReviewerTarget();
reviewerTarget.setReviewer(reviewer);
reviewerTarget.setFromDate(dateRange.from());
reviewerTarget.setToDate(dateRange.to());
reviewerTarget.setTarget(target);
reviewerTargetRepository.save(reviewerTarget);
Optional<ReviewerTarget> currentTarget = reviewerTargetRepository.getExactReviewTarget(reviewer, dateRange);
if (currentTarget.isPresent()) {
ReviewerTarget targetToUpdate = currentTarget.get();
targetToUpdate.setTarget(target);
reviewerTargetRepository.save(targetToUpdate);
}
else {
ReviewerTarget reviewerTarget = new ReviewerTarget();
reviewerTarget.setReviewer(reviewer);
reviewerTarget.setFromDate(dateRange.from());
reviewerTarget.setToDate(dateRange.to());
reviewerTarget.setTarget(target);
reviewerTargetRepository.save(reviewerTarget);
}
}
@Override

@ -4,6 +4,7 @@ import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
public interface ReviewerTargetRepository {
void save(ReviewerTarget reviewerTarget);
@ -11,4 +12,6 @@ public interface ReviewerTargetRepository {
List<ReviewerTarget> getReviewerTargets(User reviewer, LocalDate date);
List<ReviewerTarget> getAllReviewerTargets(LocalDate date);
Optional<ReviewerTarget> getExactReviewTarget(User reviewer, DateRange dateRange);
}

@ -9,6 +9,7 @@ import javax.inject.Inject;
import javax.inject.Provider;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
public class ReviewerTargetRepositoryImpl extends AbstractRepository implements ReviewerTargetRepository {
@Inject
@ -43,4 +44,15 @@ public class ReviewerTargetRepositoryImpl extends AbstractRepository implements
.and(QReviewerTarget.reviewerTarget.toDate.goe(date)))
.fetch();
}
@Override
public Optional<ReviewerTarget> getExactReviewTarget(User reviewer, DateRange dateRange) {
ReviewerTarget current =
from(QReviewerTarget.reviewerTarget)
.where(QReviewerTarget.reviewerTarget.reviewer.eq(reviewer)
.and(QReviewerTarget.reviewerTarget.fromDate.eq(dateRange.from()))
.and(QReviewerTarget.reviewerTarget.toDate.eq(dateRange.to())))
.fetchOne();
return Optional.ofNullable(current);
}
}

@ -117,4 +117,19 @@ class ReviewerCapacityServiceImplTest extends IntegrationTest {
// then
assertTrue(candidates.good().stream().anyMatch(c -> c.reviewer().equals(reviewer)));
}
@Test
void lower_target_for_a_reviewer() {
// given
reviewer.setLanguages(EnumSet.allOf(Language.class));
reviewer.addResearchArea(researchArea);
// when
service.assignTarget(reviewer, VT24, 3);
service.assignTarget(reviewer, VT24, 2);
// then
int candidates = service.getTarget(reviewer, VT24);
assertEquals(2, candidates);
}
}