3321 PO Show the currently assigned reviewer's target information

This commit is contained in:
Andreas Svanberg 2024-02-05 10:11:05 +01:00
parent 95a300eeee
commit 14d2dcbba0
4 changed files with 21 additions and 3 deletions
core/src/main/java/se/su/dsv/scipro/reviewing
view/src/main/java/se/su/dsv/scipro/admin/pages

@ -12,6 +12,10 @@ public interface ReviewerAssignmentService {
void unassignReviewer(Project project);
CurrentTarget getCurrentTarget(User reviewer, LocalDate date);
record CurrentTarget(int target, int assigned) {}
enum ReviewerAssignment {
OK, ERROR_IS_SUPERVISOR, WARNING_NO_REVIEW_REQUEST, ERROR_IS_NOT_REVIEWER
}

@ -210,6 +210,15 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
eventBus.post(new ReviewerUnassignedEvent(project));
}
@Override
public CurrentTarget getCurrentTarget(User reviewer, LocalDate date) {
int assignedReviews = countAssignedReviews(reviewer, date);
int currentTarget = getTarget(reviewer, date)
.map(rt -> getPeriodTarget(rt, date))
.orElse(0);
return new CurrentTarget(currentTarget, assignedReviews);
}
private int countAssignedReviews(User reviewer, LocalDate fromDate) {
if (fromDate.getMonthValue() <= Month.JUNE.getValue()) {
return decisionRepository.countDecisions(reviewer,

@ -35,6 +35,7 @@
<div class="col my-auto">
<div class="card-body">
<h4 class="card-title" wicket:id="name"></h4>
<span wicket:id="assigned"></span> / <span wicket:id="target"></span>
<div>
Research areas:
<ul>

@ -31,9 +31,6 @@ import javax.inject.Inject;
import java.time.Clock;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
public class AdminAssignReviewerPage extends AbstractAdminProjectPage {
@Inject
@ -135,6 +132,13 @@ public class AdminAssignReviewerPage extends AbstractAdminProjectPage {
private class CurrentReviewerCard extends GenericWebMarkupContainer<User> {
public CurrentReviewerCard(String id, IModel<User> reviewer) {
super(id, reviewer);
IModel<ReviewerAssignmentService.CurrentTarget> currentTarget = LoadableDetachableModel.of(() ->
reviewerAssignmentService.getCurrentTarget(reviewer.getObject(), LocalDate.now(clock)));
add(new Label("assigned", currentTarget.map(ReviewerAssignmentService.CurrentTarget::assigned)));
add(new Label("target", currentTarget.map(ReviewerAssignmentService.CurrentTarget::target)));
add(new UserProfileImage("image", reviewer, UserProfileImage.Size.MEDIUM));
add(new UserLabel("name", reviewer));
add(new AutoHidingListView<>("research_areas", reviewer.map(User::getResearchAreas).map(ArrayList::new)) {