Skip to content

Commit

Permalink
[CCAP-677] Removing old email code and using the new methods
Browse files Browse the repository at this point in the history
  • Loading branch information
cram-cfa committed Feb 27, 2025
1 parent 614b64b commit e968d5a
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 41 deletions.
10 changes: 10 additions & 0 deletions src/main/java/org/ilgcc/app/email/ILGCCEmail.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ public static ILGCCEmail createProviderConfirmationEmail(String senderName, Stri
return new ILGCCEmail(senderName, recipientAddress, subject, body, EmailType.PROVIDER_CONFIRMATION_EMAIL, submissionId);
}

public static ILGCCEmail createFamilyConfirmationEmail(String senderName, String recipientAddress, String subject,
Content body, UUID submissionId) {
return new ILGCCEmail(senderName, recipientAddress, subject, body, EmailType.FAMILY_CONFIRMATION_EMAIL, submissionId);
}

public static ILGCCEmail createProviderAgreesToCareFamilyConfirmationEmail(String senderName, String recipientAddress, String subject,
Content body, UUID submissionId) {
return new ILGCCEmail(senderName, recipientAddress, subject, body, EmailType.PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL, submissionId);
}

@Getter
public enum EmailType {
FAMILY_CONFIRMATION_EMAIL("Family Confirmation Email"), FAMILY_CONFIRMATION_EMAIL_NO_PROVIDER(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,18 @@ public SendFamilyConfirmationEmail(SendEmailJob sendEmailJob, MessageSource mess

@Override
public void run(Submission familySubmission) {

String familyConfirmationEmailSent = (String) familySubmission.getInputData()
.getOrDefault("familyConfirmationEmailSent", "false");

if (familyConfirmationEmailSent.equals("true")) {
log.warn("Family confirmation email has already been sent for submission with ID: {}", familySubmission.getId());
log.warn("Family confirmation email has already been sent for submission: {}", familySubmission.getId());
return;
}

String familyEmail = familySubmission.getInputData().get("parentContactEmail").toString();
if (familyEmail == null || familyEmail.isEmpty()) {
log.warn("Family email was empty when attempting to send family confirmation email for submission with ID: {}",
log.warn("Family email was empty when attempting to send family confirmation email for submission: {}",
familySubmission.getId());
return;
}
Expand All @@ -51,9 +54,12 @@ public void run(Submission familySubmission) {

String senderName = messageSource.getMessage("email.general.sender-name", null, locale);

sendEmailJob.enqueueSendEmailJob(familyEmail, senderName, subject,
ILGCCEmail.EmailType.FAMILY_CONFIRMATION_EMAIL.getDescription(),
createFamilyConfirmationEmailBody(familySubmission, familySubmissionShortCode, locale), familySubmission);
ILGCCEmail email = ILGCCEmail.createFamilyConfirmationEmail(senderName, familyEmail,
subject, createFamilyConfirmationEmailBody(familySubmission, familySubmissionShortCode, locale),
familySubmission.getId());

sendEmailJob.enqueueSendEmailJob(email);

familySubmission.getInputData().put("familyConfirmationEmailSent", "true");
submissionRepositoryService.save(familySubmission);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,33 +39,37 @@ public void run(FormSubmission formSubmission, Submission providerSubmission) {
if (providerAgreesToCare.equals("false")){
return;
}

//Check that the provider response to the family email was sent.
String providerResponseFamilyConfirmationEmailSent = (String) providerSubmission.getInputData()
.getOrDefault("providerResponseFamilyConfirmationEmailSent", "false");

if (providerResponseFamilyConfirmationEmailSent.equals("true")) {
log.warn("Provider agrees to care confirmation email has already been sent for submission with ID: {}", providerSubmission.getId());
log.warn("Provider agrees to care family confirmation email has already been sent for provider submission: {}", providerSubmission.getId());
return;
}
Optional<UUID> familySubmissionId = ProviderSubmissionUtilities.getFamilySubmissionId(providerSubmission);
if (familySubmissionId.isEmpty()) {
log.warn("No family submission is associated with the provider submission with ID: {}", providerSubmission.getId());
log.warn("No family submission is associated with the provider submission: {}", providerSubmission.getId());
return;
}
Optional<Submission> familySubmissionOptional = submissionRepositoryService.findById(familySubmissionId.get());

if (familySubmissionOptional.isEmpty()) {
log.warn("No family submission is associated with the familSubmissionID: {}", providerSubmission.getId());
log.warn("No family submission is associated with the familySubmissionId: {}", familySubmissionId.get());
return;
}

Submission familySubmission = familySubmissionOptional.get();
String familyEmailAddress = (String) familySubmission.getInputData().getOrDefault("parentContactEmail", "");
if (familyEmailAddress.isEmpty()) {
log.warn("No parentContactEmail was found to send confirmation email about the provider agreeing to care for the provider submission with ID: {}",
providerSubmission.getId());
log.warn(
"No parentContactEmail was found to send confirmation email about the provider agreeing to care for the provider submission: {} and family submission: {}",
providerSubmission.getId(), familySubmissionId.get());
return;
}

String familySubmissionConfirmationId = familySubmission.getShortCode();
String familySubmissionConfirmationCode = familySubmission.getShortCode();

Locale locale =
familySubmission.getInputData().getOrDefault("languageRead", "English").equals("Spanish") ? Locale.forLanguageTag(
Expand All @@ -74,11 +78,13 @@ public void run(FormSubmission formSubmission, Submission providerSubmission) {
String senderName = messageSource.getMessage("email.general.sender-name", null, locale);

String subject = messageSource.getMessage("email.response-email-for-family.provider-agrees.subject", null, locale);
Content body = createProviderResponseConfirmationEmailBody(providerSubmission, familySubmission, familySubmissionConfirmationId, locale);
Content body = createProviderResponseConfirmationEmailBody(providerSubmission, familySubmission, familySubmissionConfirmationCode, locale);

ILGCCEmail email = ILGCCEmail.createProviderAgreesToCareFamilyConfirmationEmail(senderName, familyEmailAddress, subject, body,
providerSubmission.getId());

sendEmailJob.enqueueSendEmailJob(email);

sendEmailJob.enqueueSendEmailJob(familyEmailAddress, senderName, subject,
ILGCCEmail.EmailType.PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL.getDescription(),
body, providerSubmission);
providerSubmission.getInputData().put("providerResponseFamilyConfirmationEmailSent", "true");
submissionRepositoryService.save(providerSubmission);
}
Expand Down
26 changes: 0 additions & 26 deletions src/main/java/org/ilgcc/jobs/SendEmailJob.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package org.ilgcc.jobs;


import com.sendgrid.helpers.mail.objects.Content;
import formflow.library.data.Submission;
import java.io.IOException;
import lombok.extern.slf4j.Slf4j;
import org.ilgcc.app.email.ILGCCEmail;
Expand All @@ -28,30 +26,6 @@ public SendEmailJob(JobScheduler jobScheduler, SendGridEmailService sendGridEmai
this.sendGridEmailService = sendGridEmailService;
}

public void enqueueSendEmailJob(String recipientAddress, String senderName, String subject, String emailType, Content content,
Submission submission) {
if (emailsEnabled) {
JobId jobId = jobScheduler.enqueue(() -> sendEmailRequest(recipientAddress, senderName, subject, emailType, content, submission));
log.info("Enqueued {} email job with ID: {} for submission with ID: {}", emailType, jobId, submission.getId());
} else {
log.info("Emails disabled. Skipping enqueue {} email job for submission with ID: {}", emailType, submission.getId());
log.info("Would have sent: {} with a subject of: {} from: {}", content.getValue(), subject, senderName); // Don't log recipient email for security reasons
}
}

@Job(name = "Send Email Request", retries = 3)
public void sendEmailRequest(String recipientAddress, String senderName, String subject, String emailType, Content content,
Submission submission) throws IOException {
try {
sendGridEmailService.sendEmail(recipientAddress, senderName, subject, content);
log.info("Successfully sent the {} for submission with ID {} to Sendgrid.", emailType, submission.getId());
} catch (IOException e) {
log.error("There was an error when attempting to send the {} for submission with ID {}: {}", emailType,
submission.getId(), e.getMessage());
throw e;
}
}

public void enqueueSendEmailJob(ILGCCEmail email) {
if (emailsEnabled) {
JobId jobId = jobScheduler.enqueue(() -> sendEmailRequest(email));
Expand Down

0 comments on commit e968d5a

Please sign in to comment.