Skip to content

Commit e44d11e

Browse files
authored
Merge pull request #2710 from objectcomputing/bugfix-2709/member-review-assignments
Bugfix 2709/member review assignments
2 parents 980b84c + 0925937 commit e44d11e

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewAssignmentController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public HttpResponse<ReviewAssignment> createReviewAssignment(@Body @Valid Review
6868
public List<ReviewAssignment> createReviewAssignment(@NotNull UUID reviewPeriodId,
6969
@Body List<@Valid ReviewAssignmentDTO> assignments) {
7070
List<ReviewAssignment> assignmentEntities = assignments.stream().map(ReviewAssignmentDTO::convertToEntity).toList();
71-
return reviewAssignmentServices.saveAll(reviewPeriodId, assignmentEntities, true);
71+
return reviewAssignmentServices.saveAll(reviewPeriodId, assignmentEntities, false);
7272
}
7373

7474
/**

web-ui/src/components/reviews/TeamReviews.jsx

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,22 +239,46 @@ const TeamReviews = ({ onBack, periodId }) => {
239239
};
240240

241241
const updateTeamMembers = async teamMembers => {
242-
// First, create a set of team members, each with a default reviewer.
243-
const data = teamMembers.map(tm => ({
242+
// First, get the list of review assignements.
243+
let res = await getReviewAssignments(periodId, csrf);
244+
if (res.error) return;
245+
246+
// Match up the review assignments with the team members.
247+
const existing = res.payload.data
248+
.filter(a => teamMembers.find(m => m.id == a.revieweeId));
249+
250+
// Create a set of team members that do not yet have review assignments,
251+
// each with a default reviewer.
252+
const mem = teamMembers.filter(
253+
m => !existing.find(a => a.revieweeId == m.id)
254+
);
255+
const data = mem.map(tm => ({
244256
revieweeId: tm.id,
245257
reviewerId: tm.supervisorid,
246258
reviewPeriodId: periodId,
247259
approved: false
248260
}));
249261

250262
// Set those on the server as the review assignments.
251-
let res = await createReviewAssignments(periodId, data, csrf);
263+
res = await createReviewAssignments(periodId, data, csrf);
252264
if (res.error) return;
253265

254266
// Get the list of review assignments from the server to ensure that we are
255267
// reflecting what was actually created.
256268
res = await getReviewAssignments(periodId, csrf);
257-
const assignments = res.error ? [] : res.payload.data;
269+
let assignments = res.error ? [] : res.payload.data;
270+
271+
// Remove review assignments for members no longer selected.
272+
for(let assignment of assignments) {
273+
if (!teamMembers.find(m => m.id == assignment.revieweeId)) {
274+
// Delete review assignments if we do not have the matching member.
275+
await removeReviewAssignment(assignment.id, csrf);
276+
}
277+
}
278+
279+
// Get the review assignments from the server one more time.
280+
res = await getReviewAssignments(periodId, csrf);
281+
assignments = res.error ? [] : res.payload.data;
258282

259283
// Update our reactive assignment and member lists.
260284
setAssignments(assignments);

0 commit comments

Comments
 (0)