3321 PO Show a warning about targets when assigned a reviewer to a project before a review has been requested.

This commit is contained in:
Andreas Svanberg 2024-02-01 16:01:24 +01:00
parent f57a58d9b5
commit 95a300eeee
6 changed files with 26 additions and 1 deletions

@ -1,9 +1,13 @@
package se.su.dsv.scipro.reviewing;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import java.util.List;
public interface DecisionRepository {
int countDecisions(User reviewer, LocalDate fromDate, LocalDate toDate);
List<Decision> findBy(Project project);
}

@ -1,12 +1,14 @@
package se.su.dsv.scipro.reviewing;
import jakarta.persistence.EntityManager;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.AbstractRepository;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import java.time.LocalDate;
import java.util.List;
public class DecisionRepositoryImpl extends AbstractRepository implements DecisionRepository {
@Inject
@ -22,4 +24,11 @@ public class DecisionRepositoryImpl extends AbstractRepository implements Decisi
.and(QDecision.decision.reviewerAssignedAt.loe(toDate)))
.fetchCount();
}
@Override
public List<Decision> findBy(Project project) {
return from(QDecision.decision)
.where(QDecision.decision.reviewerApproval.project.eq(project))
.fetch();
}
}

@ -13,6 +13,6 @@ public interface ReviewerAssignmentService {
void unassignReviewer(Project project);
enum ReviewerAssignment {
OK, ERROR_IS_SUPERVISOR, ERROR_IS_NOT_REVIEWER
OK, ERROR_IS_SUPERVISOR, WARNING_NO_REVIEW_REQUEST, ERROR_IS_NOT_REVIEWER
}
}

@ -194,6 +194,10 @@ class ReviewerCapacityServiceImpl implements ReviewerCapacityService, ReviewerAs
project.addReviewer(reviewer);
projectService.save(project);
eventBus.post(new ReviewerAssignedEvent(project, reviewer));
List<Decision> currentDecisions = decisionRepository.findBy(project);
if (currentDecisions.isEmpty()) {
return ReviewerAssignment.WARNING_NO_REVIEW_REQUEST;
}
return ReviewerAssignment.OK;
}
}

@ -225,6 +225,10 @@ public class AdminAssignReviewerPage extends AbstractAdminProjectPage {
// Put the feedback message in the parent container since this component will be
// lost when the ListView recreates its ListItems
case OK -> AvailableReviewersPanel.this.success(AvailableReviewersPanel.this.getString("reviewer_assigned"));
case WARNING_NO_REVIEW_REQUEST -> {
AvailableReviewersPanel.this.success(AvailableReviewersPanel.this.getString("reviewer_assigned"));
AvailableReviewersPanel.this.warn(AvailableReviewersPanel.this.getString("warning_no_review_request"));
}
case ERROR_IS_SUPERVISOR -> AvailableReviewersPanel.this.error(AvailableReviewersPanel.this.getString("error_reviewer_is_supervisor"));
case ERROR_IS_NOT_REVIEWER -> AvailableReviewersPanel.this.error(AvailableReviewersPanel.this.getString("error_reviewer_is_not_reviewer"));
}

@ -1,4 +1,8 @@
reviewer_assigned=Reviewer assigned
warning_no_review_request=No request for review has been sent for this project yet. The reviewer has still been \
assigned, but the number of reviews assigned to the reviewer will not be updated until a request for review is \
submitted by the supervisor. It is the date the review is requested that will decide which period the review is \
assigned to.
error_reviewer_is_supervisor=The selected reviewer is the supervisor of the project
error_reviewer_is_not_reviewer=The selected reviewer does not have the reviewer role
reviewer_unassigned=Reviewer un-assigned