Skip to content

Commit

Permalink
EVA-3738 - send email to EVA HelpDesk when new submission is uploaded (
Browse files Browse the repository at this point in the history
…#18)

* send email to EVA HelpDesk when new submission uploaded
  • Loading branch information
nitin-ebi authored Feb 2, 2025
1 parent dc82e12 commit 4efc5b1
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public ResponseEntity<?> markSubmissionUploaded(@RequestHeader("Authorization")
}

String submissionStatus = submissionService.getSubmissionStatus(submissionId);
if (! Objects.equals(submissionStatus, SubmissionStatus.OPEN.toString())){
if (!Objects.equals(submissionStatus, SubmissionStatus.OPEN.toString())) {
return new ResponseEntity<>(
"Submission " + submissionId + " is not in status " + SubmissionStatus.OPEN +
". It cannot be marked as " + SubmissionStatus.UPLOADED +
Expand All @@ -104,11 +104,13 @@ public ResponseEntity<?> markSubmissionUploaded(@RequestHeader("Authorization")
try {
submissionService.checkMetadataFileInfoMatchesWithUploadedFiles(submissionAccount, submissionId, metadataJson);
Submission submission = this.submissionService.uploadMetadataJsonAndMarkUploaded(submissionId, metadataJson);
submissionService.sendMailNotificationForStatusUpdate(submissionAccount, submissionId, SubmissionStatus.UPLOADED, true);
String projectTitle = metadataJson.get("project").get("title").asText();
submissionService.sendMailNotificationToUserForStatusUpdate(submissionAccount, submissionId, projectTitle,
SubmissionStatus.UPLOADED, true);
submissionService.sendMailNotificationToEVAHelpdeskForSubmissionUploaded(submissionAccount, submissionId,
projectTitle);
return new ResponseEntity<>(stripUserDetails(submission), HttpStatus.OK);
} catch (RequiredFieldsMissingException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
} catch (MetadataFileInfoMismatchException ex) {
} catch (RequiredFieldsMissingException | MetadataFileInfoMismatchException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,14 +210,22 @@ public boolean checkUserHasAccessToSubmission(SubmissionAccount account, String
}
}

public void sendMailNotificationForStatusUpdate(SubmissionAccount submissionAccount, String submissionId,
SubmissionStatus submissionStatus, boolean success) {
public void sendMailNotificationToUserForStatusUpdate(SubmissionAccount submissionAccount, String submissionId,
String projectTitle, SubmissionStatus submissionStatus, boolean success) {
String sendTo = submissionAccount.getPrimaryEmail();
String subject = emailHelper.getSubjectForSubmissionStatusUpdate(submissionStatus, success);
String body = emailHelper.getTextForSubmissionStatusUpdate(submissionAccount, submissionId, submissionStatus, success);
String body = emailHelper.getTextForSubmissionStatusUpdate(submissionAccount, submissionId, projectTitle,
submissionStatus, success);
mailSender.sendEmail(sendTo, subject, body);
}

public void sendMailNotificationToEVAHelpdeskForSubmissionUploaded(SubmissionAccount submissionAccount,
String submissionId, String projectTitle) {
String subject = String.format("New Submission Uploaded. Submission Id - (%s)", submissionId);
String body = emailHelper.getTextForEVAHelpdeskSubmissionUploaded(submissionAccount, submissionId, projectTitle);
mailSender.sendEmail(EmailNotificationHelper.EVA_HELPDESK_EMAIL, subject, body);
}

public List<Submission> getSubmissionsByStatus(SubmissionStatus status) {
return submissionRepository.findByStatus(status.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

@Component
public class EmailNotificationHelper {
private static final String EVA_HELPDESK_EMAIL = "[email protected]";
public static final String EVA_HELPDESK_EMAIL = "[email protected]";

public String getSubjectForSubmissionStatusUpdate(SubmissionStatus submissionStatus, boolean success) {
String result = (success == true) ? "SUCCESS" : "FAILED";
String result = success ? "SUCCESS" : "FAILED";
return String.format("EVA Submission Update: %s %s", submissionStatus, result);
}

public String getTextForSubmissionStatusUpdate(SubmissionAccount submissionAccount, String submissionId,
SubmissionStatus submissionStatus, boolean success) {
String projectTitle, SubmissionStatus submissionStatus, boolean success) {
String result;
String resultColor;
if (success) {
Expand All @@ -30,7 +30,9 @@ public String getTextForSubmissionStatusUpdate(SubmissionAccount submissionAccou
.addGap(1)
.addText("Here is the update for your submission: ")
.addGap(1)
.addText("submission ID: " + submissionId)
.addText("Submission ID: " + submissionId)
.addLineBreak()
.addText("Project Title: " + projectTitle)
.addLineBreak()
.addText("Submission Status: " + submissionStatus)
.addLineBreak()
Expand All @@ -44,6 +46,28 @@ public String getTextForSubmissionStatusUpdate(SubmissionAccount submissionAccou
return notificationText;
}

public String getTextForEVAHelpdeskSubmissionUploaded(SubmissionAccount submissionAccount, String submissionId,
String projectTitle) {
String notificationText = new HTMLHelper()
.addText("Dear EVA Helpdesk,")
.addGap(1)
.addText("The user has uploaded a new Submission: ")
.addGap(1)
.addText("submission ID: " + submissionId)
.addLineBreak()
.addText("Project Title: " + projectTitle)
.addLineBreak()
.addText("User Name: " + submissionAccount.getFirstName() + " " + submissionAccount.getLastName())
.addLineBreak()
.addText("User Email: " + submissionAccount.getPrimaryEmail())
.addGap(2)
.build();

notificationText += getNotificationFooter();

return notificationText;
}

public String getNotificationFooter() {
return new HTMLHelper()
.addTextWithSize("Please don't reply to this email.", 10)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
public class MailSender {
private final Logger logger = LoggerFactory.getLogger(MailSender.class);
private final JavaMailSender javaMailSender;
private final String DEFAULT_SENDER = "eva_submissions@ebi.ac.uk";
private final String DEFAULT_SENDER = "eva-noreply@ebi.ac.uk";

@Autowired
MailSender(JavaMailSender javaMailSender) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ public void testGetTextForSubmissionStatusUpdateSuccess() {
"<br /><br />" +
"Here is the update for your submission: " +
"<br /><br />" +
"submission ID: 12345<br />" +
"Submission ID: submission12345<br />" +
"Project Title: project123<br />" +
"Submission Status: UPLOADED<br />" +
"Result: <b><span style=\"color:green;\">SUCCESS</span></b>" +
"<br /><br /><br />" +
Expand All @@ -43,7 +44,7 @@ public void testGetTextForSubmissionStatusUpdateSuccess() {
"</span><br /><span style=\"font-size:10px;\">European Variation Archive: EMBL-EBI</span>";

String actualText = emailNotificationHelper.getTextForSubmissionStatusUpdate(submissionAccount,
"12345", SubmissionStatus.UPLOADED, true);
"submission12345", "project123", SubmissionStatus.UPLOADED, true);

assertEquals(expectedText, actualText);
}
Expand All @@ -56,7 +57,8 @@ public void testGetTextForSubmissionStatusUpdateFailure() {
"<br /><br />" +
"Here is the update for your submission: " +
"<br /><br />" +
"submission ID: 12345<br />" +
"Submission ID: 12345<br />" +
"Project Title: project123<br />" +
"Submission Status: UPLOADED<br />" +
"Result: <b><span style=\"color:red;\">FAILED</span></b>" +
"<br /><br /><br />" +
Expand All @@ -66,13 +68,36 @@ public void testGetTextForSubmissionStatusUpdateFailure() {
"</span><br /><span style=\"font-size:10px;\">European Variation Archive: EMBL-EBI</span>";

String actualText = emailNotificationHelper.getTextForSubmissionStatusUpdate(submissionAccount,
"12345", SubmissionStatus.UPLOADED, false);
"12345", "project123", SubmissionStatus.UPLOADED, false);

assertEquals(expectedText, actualText);
}

@Test
public void testGetNotificationFooter(){
public void testGetTextForEVAHelpdeskSubmissionUploaded() {
SubmissionAccount submissionAccount = new SubmissionAccount("[email protected]",
LoginMethod.WEBIN.toString(), "John", "Doe", "[email protected]");
String expectedText = "Dear EVA Helpdesk," +
"<br /><br />" +
"The user has uploaded a new Submission: " +
"<br /><br />" +
"submission ID: submission-12345<br />" +
"Project Title: Test Project Title<br />" +
"User Name: John Doe<br />" +
"User Email: [email protected]" +
"<br /><br /><br />" +
"<span style=\"font-size:10px;\">Please don't reply to this email.</span><br />" +
"<span style=\"font-size:10px;\">For any issues/support please contact us at </span>" +
"<span style=\"font-size:10px;\"> <a href=\"mailto:[email protected]\">[email protected]</a> </span><br />" +
"<span style=\"font-size:10px;\">European Variation Archive: EMBL-EBI</span>";
String actualText = emailNotificationHelper.getTextForEVAHelpdeskSubmissionUploaded(submissionAccount,
"submission-12345", "Test Project Title");

assertEquals(expectedText, actualText);
}

@Test
public void testGetNotificationFooter() {
String expectedFooter = "<span style=\"font-size:10px;\">Please don't reply to this email.</span><br />" +
"<span style=\"font-size:10px;\">For any issues/support please contact us at </span>" +
"<span style=\"font-size:10px;\"> <a href=\"mailto:[email protected]\">[email protected]</a> " +
Expand Down

0 comments on commit 4efc5b1

Please sign in to comment.