@@ -58,6 +58,8 @@ private record ReviewPeriodInfo(String subject, LocalDate closeDate) {}
5858 private Readable feedbackRequestTemplate ;
5959 @ Value ("classpath:mjml/external_feedback_request.mjml" )
6060 private Readable externalFeedbackRequestTemplate ;
61+ @ Value ("classpath:mjml/external_request_verify.mjml" )
62+ private Readable externalRequestVerifyTemplate ;
6163 @ Value ("classpath:mjml/update_request.mjml" )
6264 private Readable updateRequestTemplate ;
6365 @ Value ("classpath:mjml/reviewer_email.mjml" )
@@ -138,15 +140,41 @@ public FeedbackRequest save(FeedbackRequest feedbackRequest) {
138140 if (feedbackRequest .getDueDate () != null && feedbackRequest .getSendDate ().isAfter (feedbackRequest .getDueDate ())) {
139141 throw new BadArgException ("Send date of feedback request must be before the due date." );
140142 }
141- String status = feedbackRequest .getSendDate ().isAfter (LocalDate .now ()) ? "pending" : "sent" ;
142- feedbackRequest .setStatus (status );
143+ FeedbackRequestStatus status = feedbackRequest .getSendDate ().isAfter (LocalDate .now ()) ? FeedbackRequestStatus . PENDING : FeedbackRequestStatus . SENT ;
144+ feedbackRequest .setStatus (status . toString () );
143145 FeedbackRequest storedRequest = feedbackReqRepository .save (feedbackRequest );
144146 if (feedbackRequest .getSendDate ().equals (LocalDate .now ())) {
145147 sendNewRequestEmail (storedRequest );
146148 }
147149 return storedRequest ;
148150 }
149151
152+ @ Override
153+ public boolean verifyExternal (FeedbackRequest feedbackRequest ) {
154+ if (feedbackRequest .getExternalRecipientId () == null ||
155+ !feedbackRequest .getStatus ().equals (FeedbackRequestStatus .SENT .toString ())) {
156+ return false ;
157+ }
158+
159+ MemberProfile creator = memberProfileServices .getById (feedbackRequest .getCreatorId ());
160+ MemberProfile requestee = memberProfileServices .getById (feedbackRequest .getRequesteeId ());
161+ UUID recipientOrExternalRecipientId = feedbackRequest .getExternalRecipientId ();
162+ FeedbackExternalRecipient reviewerExternalRecipient = feedbackExternalRecipientServices .getById (recipientOrExternalRecipientId );
163+ String newContent = String .format (
164+ templateToString (externalRequestVerifyTemplate ),
165+ reviewerExternalRecipient .getFirstName (),
166+ String .format ("%s/externalFeedback/submit?request=%s" ,
167+ webURL , feedbackRequest .getId ().toString ())
168+ );
169+ emailSender .sendEmail (
170+ MemberProfileUtils .getFullName (creator ),
171+ creator .getWorkEmail (),
172+ notificationSubject , newContent ,
173+ reviewerExternalRecipient .getEmail ()
174+ );
175+ return true ;
176+ }
177+
150178 public void sendNewRequestEmail (FeedbackRequest storedRequest ) {
151179 MemberProfile creator = memberProfileServices .getById (storedRequest .getCreatorId ());
152180 MemberProfile reviewerMemberProfile ;
@@ -162,7 +190,7 @@ public void sendNewRequestEmail(FeedbackRequest storedRequest) {
162190 reviewerExternalRecipient = feedbackExternalRecipientServices .getById (recipientOrExternalRecipientId );
163191 reviewerFirstName = reviewerExternalRecipient .getFirstName ();
164192 reviewerEmail = reviewerExternalRecipient .getEmail ();
165- urlFeedbackSubmit = "/externalFeedback/submit ?request=" ;
193+ urlFeedbackSubmit = "/externalFeedback/verify ?request=" ;
166194 template = externalFeedbackRequestTemplate ;
167195 } else {
168196 recipientOrExternalRecipientId = storedRequest .getRecipientId ();
@@ -184,8 +212,9 @@ public void sendNewRequestEmail(FeedbackRequest storedRequest) {
184212 storedRequest .getDueDate ().getMonth (),
185213 storedRequest .getDueDate ().getDayOfMonth (),
186214 storedRequest .getDueDate ().getYear ()),
187- String .format ("%s" + urlFeedbackSubmit + "%s" ,
188- webURL , storedRequest .getId ().toString ())
215+ String .format ("%s%s%s" ,
216+ webURL , urlFeedbackSubmit ,
217+ storedRequest .getId ().toString ())
189218 );
190219 emailSender .sendEmail (
191220 senderName , creator .getWorkEmail (),
@@ -243,7 +272,7 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
243272 boolean submitDateUpdateAttempted = !Objects .equals (originalFeedback .getSubmitDate (), feedbackRequest .getSubmitDate ());
244273
245274 // If a status update is made to anything other than submitted by the requestee, throw an error.
246- if (!"submitted" . equals (feedbackRequest . getStatus ())
275+ if (!feedbackRequest . getStatus (). equals (FeedbackRequestStatus . SUBMITTED . toString ())
247276 && !Objects .equals (originalFeedback .getStatus (), feedbackRequest .getStatus ())
248277 && currentUserEqualsRequestee ) {
249278 throw new PermissionException (NOT_AUTHORIZED_MSG );
@@ -253,10 +282,11 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
253282 if (!reassignIsPermitted (originalFeedback )) {
254283 throw new PermissionException (NOT_AUTHORIZED_MSG );
255284 }
256- feedbackRequest .setStatus ("sent" );
285+ feedbackRequest .setStatus (FeedbackRequestStatus . SENT . toString () );
257286 }
258287
259- if (feedbackRequest .getStatus ().equals ("canceled" ) && originalFeedback .getStatus ().equals ("submitted" )) {
288+ if (feedbackRequest .getStatus ().equals (FeedbackRequestStatus .CANCELED .toString ()) &&
289+ originalFeedback .getStatus ().equals (FeedbackRequestStatus .SUBMITTED .toString ())) {
260290 throw new BadArgException ("Attempted to cancel a feedback request that was already submitted" );
261291 }
262292
@@ -292,7 +322,7 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
292322
293323 MemberProfile requestee = memberProfileServices .getById (storedRequest .getRequesteeId ());
294324 // Send email if the feedback request has been reopened for edits
295- if (originalFeedback .getStatus ().equals ("submitted" ) && feedbackRequest .getStatus ().equals ("sent" )) {
325+ if (originalFeedback .getStatus ().equals (FeedbackRequestStatus . SUBMITTED . toString ()) && feedbackRequest .getStatus ().equals (FeedbackRequestStatus . SENT . toString () )) {
296326 MemberProfile creator = memberProfileServices .getById (storedRequest .getCreatorId ());
297327 String senderName = MemberProfileUtils .getFullName (creator );
298328 String newContent = String .format (
@@ -480,7 +510,7 @@ private boolean updateDueDateIsPermitted(FeedbackRequest feedbackRequest) {
480510 }
481511
482512 private boolean reassignIsPermitted (FeedbackRequest feedbackRequest ) {
483- return isCurrentUserAdminOrOwner (feedbackRequest ) && !feedbackRequest .getStatus ().equals ("submitted" );
513+ return isCurrentUserAdminOrOwner (feedbackRequest ) && !feedbackRequest .getStatus ().equals (FeedbackRequestStatus . SUBMITTED . toString () );
484514 }
485515
486516 private boolean isCurrentUserAdminOrOwner (FeedbackRequest feedbackRequest ) {
0 commit comments