Skip to content

Commit c811d62

Browse files
committed
2024-10-23 - feedback - external reviewer - server-side
1 parent 227899e commit c811d62

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestServicesImpl.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,15 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
198198
MemberProfile reviewerMemberProfile;
199199
FeedbackExternalRecipient reviewerExternalRecipient;
200200
String reviewerFirstName, reviewerEmail;
201+
MemberProfile currentUser;
202+
boolean currentUserEqualsRequestee = false;
203+
204+
try {
205+
currentUser = currentUserServices.getCurrentUser();
206+
} catch (NotFoundException notFoundException) {
207+
currentUser = null;
208+
}
209+
201210

202211
final FeedbackRequest feedbackRequest = this.getFromDTO(feedbackRequestUpdateDTO);
203212
FeedbackRequest originalFeedback = null;
@@ -210,6 +219,8 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
210219
throw new BadArgException("Cannot update feedback request that does not exist");
211220
}
212221

222+
if (currentUser != null) currentUserEqualsRequestee = currentUser.getId().equals(originalFeedback.getRequesteeId());
223+
213224
validateMembers(originalFeedback);
214225

215226
Set<ReviewAssignment> reviewAssignmentsSet = Set.of();
@@ -227,7 +238,7 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
227238
// If a status update is made to anything other than submitted by the requestee, throw an error.
228239
if (!"submitted".equals(feedbackRequest.getStatus())
229240
&& !Objects.equals(originalFeedback.getStatus(), feedbackRequest.getStatus())
230-
&& currentUserServices.getCurrentUser().getId().equals(originalFeedback.getRequesteeId())) {
241+
&& currentUserEqualsRequestee) {
231242
throw new PermissionException(NOT_AUTHORIZED_MSG);
232243
}
233244

@@ -292,8 +303,9 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
292303
sendNewRequestEmail(storedRequest);
293304
}
294305

306+
boolean currentUserSameAsRequestee = currentUser != null && currentUser.getId().equals(requestee.getId());
295307
// Send self-review completion email to supervisor and pdl if appropriate
296-
if (currentUserServices.getCurrentUser().getId().equals(requestee.getId())) {
308+
if (currentUserSameAsRequestee) {
297309
sendSelfReviewCompletionEmailToSupervisor(feedbackRequest);
298310
}
299311

server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestControllerTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1690,6 +1690,25 @@ void testUpdateStatusAndSubmitDateAuthorizedByRecipient() {
16901690
assertResponseEqualsEntity(feedbackReq, response.getBody().get());
16911691
}
16921692

1693+
@Test
1694+
void testUpdateStatusAndSubmitDateAuthorizedByExternalRecipient() {
1695+
MemberProfile pdlMemberProfile = createADefaultMemberProfile();
1696+
assignPdlRole(pdlMemberProfile);
1697+
MemberProfile employeeMemberProfile = createADefaultMemberProfileForPdl(pdlMemberProfile);
1698+
final FeedbackExternalRecipient externalRecipient01 = createADefaultFeedbackExternalRecipient();
1699+
1700+
final FeedbackRequest feedbackReq = saveFeedbackRequest(pdlMemberProfile, employeeMemberProfile, externalRecipient01);
1701+
feedbackReq.setStatus("complete");
1702+
final FeedbackRequestUpdateDTO dto = updateDTO(feedbackReq);
1703+
1704+
final HttpRequest<?> request = HttpRequest.PUT("", dto);
1705+
final HttpResponse<FeedbackRequestResponseDTO> response = clientExternalRecipient.toBlocking().exchange(request, FeedbackRequestResponseDTO.class);
1706+
1707+
assertEquals(HttpStatus.OK, response.getStatus());
1708+
assertTrue(response.getBody().isPresent());
1709+
assertResponseEqualsEntity(feedbackReq, response.getBody().get());
1710+
}
1711+
16931712
@Test
16941713
void testUpdateStatusAuthorizedByCreator() {
16951714
MemberProfile pdlMemberProfile = createADefaultMemberProfile();

0 commit comments

Comments
 (0)