Skip to content

Commit

Permalink
[CCAP-667] - more changes to email refactor (#1233)
Browse files Browse the repository at this point in the history
  • Loading branch information
analoo authored Feb 28, 2025
1 parent b1768f9 commit 3cb927c
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.ilgcc.app.email.ILGCCEmail;
import org.ilgcc.app.email.ILGCCEmail.EmailType;
import org.ilgcc.jobs.SendEmailJob;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -48,7 +49,7 @@ public void run(Submission familySubmission) {
"es") : Locale.ENGLISH;

ILGCCEmail email = ILGCCEmail.createFamilyConfirmationEmail(getSenderName(locale),
getRecipientEmail(familySubmission),
getRecipientEmail(emailData.get()),
setSubject(emailData.get(), locale), new Content("text/html", setBodyCopy(emailData.get(), locale)),
familySubmission.getId());
sendEmail(email, familySubmission);
Expand All @@ -67,13 +68,13 @@ protected static String getSenderName(Locale locale) {
return messageSource.getMessage(ILGCCEmail.EMAIL_SENDER_KEY, null, locale);
}

protected static String getRecipientEmail(Submission submission) {
String recipientEmail = submission.getInputData().getOrDefault(RECIPIENT_EMAIL_INPUT_NAME, "").toString();
protected static String getRecipientEmail(Map<String, Object> emailData) {
String recipientEmail = emailData.get(RECIPIENT_EMAIL_INPUT_NAME).toString();

if (recipientEmail.isBlank()) {
log.warn(
"SendFamilyConfirmationEmail: Skipping email send because there is no email associated with the submission: {}",
submission.getId());
"{}: Skipping email send because there is no email associated with the submission: {}",
EmailType.FAMILY_CONFIRMATION_EMAIL.getDescription(), emailData.get("familySubmissionId"));
}

return recipientEmail;
Expand Down Expand Up @@ -102,7 +103,7 @@ protected String setBodyCopy(Map<String, Object> emailData, Locale locale) {
}

protected void sendEmail(ILGCCEmail email, Submission submission) {
log.info("SendFamilyConfirmationEmail: About to enqueue the Send Email Job for submissionId: {}", submission.getId());
log.info("{}: About to enqueue the Send Email Job for submissionId: {}", EmailType.FAMILY_CONFIRMATION_EMAIL.getDescription(), submission.getId());
sendEmailJob.enqueueSendEmailJob(email);
updateEmailStatus(submission);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.ilgcc.app.email.ILGCCEmail;
import org.ilgcc.app.email.ILGCCEmail.EmailType;
import org.ilgcc.app.utils.ProviderSubmissionUtilities;
import org.ilgcc.jobs.SendEmailJob;
import org.springframework.context.MessageSource;
Expand Down Expand Up @@ -52,7 +53,7 @@ public void run(Submission providerSubmission) {
"es") : Locale.ENGLISH;

ILGCCEmail email = ILGCCEmail.createProviderAgreesToCareFamilyConfirmationEmail(getSenderName(locale),
getRecipientEmail(providerSubmission),
getRecipientEmail(emailData.get()),
setSubject(emailData.get(), locale), new Content("text/html", setBodyCopy(emailData.get(), locale)),
providerSubmission.getId());
sendEmail(email, providerSubmission);
Expand All @@ -73,8 +74,8 @@ protected Optional<Map<String, Object>> getEmailData(Submission providerSubmissi
return Optional.of(getCombinedDataForEmails(providerSubmission, familySubmission.get()));
} else {
log.warn(
"SendProviderAgreesToCareFamilyConfirmationEmail: Skipping email send because there is no family submission associated with the provider submission with ID : {}",
providerSubmission.getId());
"{}: Skipping email send because there is no family submission associated with the provider submission with ID : {}",
EmailType.PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL.getDescription(), providerSubmission.getId());
return Optional.empty();
}
}
Expand All @@ -83,13 +84,13 @@ protected static String getSenderName(Locale locale) {
return messageSource.getMessage(ILGCCEmail.EMAIL_SENDER_KEY, null, locale);
}

protected static String getRecipientEmail(Submission submission) {
String recipientEmail = submission.getInputData().getOrDefault(RECIPIENT_EMAIL_INPUT_NAME, "").toString();
protected static String getRecipientEmail(Map<String, Object> emailData) {
String recipientEmail = emailData.get(RECIPIENT_EMAIL_INPUT_NAME).toString();

if (recipientEmail.isBlank()) {
log.warn(
"SendProviderAgreesToCareFamilyConfirmationEmail: Skipping email send because there is no email associated with the submission: {}",
submission.getId());
"{}: Skipping email send because there is no email associated with the submission: {}",
EmailType.PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL.getDescription(), emailData.get("familySubmissionId"));
}

return recipientEmail;
Expand Down Expand Up @@ -122,8 +123,8 @@ protected String setBodyCopy(Map<String, Object> emailData, Locale locale) {
}

protected void sendEmail(ILGCCEmail email, Submission submission) {
log.info("SendProviderAgreesToCareFamilyConfirmationEmail: About to enqueue the Send Email Job for submissionId: {}",
submission.getId());
log.info("{}: About to enqueue the Send Email Job for submissionId: {}",
EmailType.PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL.getDescription(), submission.getId());
sendEmailJob.enqueueSendEmailJob(email);
updateEmailStatus(submission);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.ilgcc.app.email.ILGCCEmail;
import org.ilgcc.app.email.ILGCCEmail.EmailType;
import org.ilgcc.app.utils.ProviderSubmissionUtilities;
import org.ilgcc.jobs.SendEmailJob;
import org.springframework.context.MessageSource;
Expand Down Expand Up @@ -54,7 +55,7 @@ public void run(Submission providerSubmission) {
locale = LocaleContextHolder.getLocale();

ILGCCEmail email = ILGCCEmail.createProviderConfirmationEmail(getSenderName(locale),
getRecipientEmail(providerSubmission), setSubject(emailData.get(), locale),
getRecipientEmail(emailData.get()), setSubject(emailData.get(), locale),
new Content("text/html", setBodyCopy(emailData.get(), locale)), providerSubmission.getId());
sendEmail(email, providerSubmission);
}
Expand All @@ -74,8 +75,8 @@ protected Optional<Map<String, Object>> getEmailData(Submission providerSubmissi
return Optional.of(getCombinedDataForEmails(providerSubmission, familySubmission.get()));
} else {
log.warn(
"SendProviderConfirmationEmail: Skipping email send because there is no family submission associated with the provider submission with ID : {}",
providerSubmission.getId());
"{}: Skipping email send because there is no family submission associated with the provider submission with ID : {}",
EmailType.PROVIDER_CONFIRMATION_EMAIL.getDescription(), providerSubmission.getId());
return Optional.empty();
}
}
Expand All @@ -84,13 +85,13 @@ protected static String getSenderName(Locale locale) {
return messageSource.getMessage(ILGCCEmail.EMAIL_SENDER_KEY, null, locale);
}

protected static String getRecipientEmail(Submission submission) {
String recipientEmail = submission.getInputData().getOrDefault(RECIPIENT_EMAIL_INPUT_NAME, "").toString();
protected static String getRecipientEmail(Map<String, Object> emailData) {
String recipientEmail = emailData.get(RECIPIENT_EMAIL_INPUT_NAME).toString();

if (recipientEmail.isBlank()) {
log.warn(
"SendProviderConfirmationEmail: Skipping email send because there is no email associated with the submission: {}",
submission.getId());
"{}: Skipping email send because there is no email associated with the submission: {}",
EmailType.PROVIDER_CONFIRMATION_EMAIL.getDescription(), emailData.get("providerSubmissionId"));
}
return recipientEmail;
}
Expand All @@ -116,7 +117,8 @@ protected String setBodyCopy(Map<String, Object> emailData, Locale locale) {
}

protected void sendEmail(ILGCCEmail email, Submission submission) {
log.info("SendProviderConfirmationEmail: About to enqueue the Send Email Job for submissionId: {}", submission.getId());
log.info("{}: About to enqueue the Send Email Job for submissionId: {}",
EmailType.FAMILY_CONFIRMATION_EMAIL.getDescription(), submission.getId());
sendEmailJob.enqueueSendEmailJob(email);
updateEmailStatus(submission);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ private static String getApplicantName(Map<String, Object> applicantInputData) {
public static Map<String, Object> getCombinedDataForEmails(Submission providerSubmission, Submission familySubmission) {
Map<String, Object> applicationData = new HashMap<>();

applicationData.put("providerResponseContactEmail", providerSubmission.getInputData().getOrDefault("providerResponseContactEmail", ""));
applicationData.put("providerName", getProviderResponseName(providerSubmission));
applicationData.put("providerSubmissionId", providerSubmission.getId());
applicationData.put("ccapStartDate",
ProviderSubmissionUtilities.getCCAPStartDateFromProviderOrFamilyChildcareStartDate(familySubmission,
providerSubmission));
Expand All @@ -102,12 +104,14 @@ public static Map<String, Object> getCombinedDataForEmails(Submission providerSu
public static Map<String, Object> getFamilySubmissionDataForEmails(Submission familySubmission) {
Map<String, Object> applicationData = new HashMap<>();

applicationData.put("parentContactEmail", (String) familySubmission.getInputData().get("parentContactEmail"));
applicationData.put("parentFirstName", (String) familySubmission.getInputData().get("parentFirstName"));
applicationData.put("ccrrName", (String) familySubmission.getInputData().getOrDefault("ccrrName", ""));
applicationData.put("ccrrPhoneNumber", (String) familySubmission.getInputData().getOrDefault("ccrrPhoneNumber", ""));
applicationData.put("childrenInitialsList",
ProviderSubmissionUtilities.getChildrenInitialsListFromApplication(familySubmission));
applicationData.put("confirmationCode", familySubmission.getShortCode());
applicationData.put("familySubmissionId", familySubmission.getId());
applicationData.put("familyPreferredLanguage", familySubmission.getInputData().getOrDefault("languageRead", "English"));
applicationData.put("emailLink", familySubmission.getInputData().getOrDefault("emailLink", ""));
applicationData.put("submittedDate", SubmissionUtilities.getFormattedSubmittedAtDate(familySubmission));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ void setUp() {
.with("parentFirstName", "FirstName").withChild("First", "Child", "Yes").withChild("Second", "Child", "Yes")
.withSubmittedAtDate(OffsetDateTime.of(2022, 10, 11, 0, 0, 0, 0, ZoneOffset.ofTotalSeconds(0)))
.withCCRR()
.with("parentContactEmail", "familyemail@test.com")
.with("emailLink", "tempEmailLink")
.withShortCode("ABC123")
.build();
Expand All @@ -60,6 +61,14 @@ void setUp() {
action = new SendFamilyConfirmationEmail(sendEmailJob, messageSource, submissionRepositoryService);
}

@Test
void correctlySetsEmailRecipient(){
Optional<Map<String, Object>> emailDataOptional = action.getEmailData(familySubmission);
Map<String, Object> emailData = emailDataOptional.get();

assertThat(action.getRecipientEmail(emailData)).isEqualTo("familyemail@test.com");
}

@Test
void correctlySetsEmailData() {
Optional<Map<String, Object>> emailDataOptional = action.getEmailData(familySubmission);
Expand All @@ -69,6 +78,7 @@ void correctlySetsEmailData() {
Map<String, Object> emailData = emailDataOptional.get();

assertThat(emailData.get("parentFirstName")).isEqualTo("FirstName");
assertThat(emailData.get("parentContactEmail")).isEqualTo("familyemail@test.com");
assertThat(emailData.get("ccrrName")).isEqualTo("Sample Test CCRR");
assertThat(emailData.get("ccrrPhoneNumber")).isEqualTo("(603) 555-1244");
assertThat(emailData.get("childrenInitialsList")).isEqualTo(List.of("F.C.", "S.C."));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ public class SendProviderAgreesToCareFamilyConfirmationEmailTest {
void setUp() {
familySubmission = new SubmissionTestBuilder()
.withFlow("gcc")
.with("parentPreferredName", "FirstName").withChild("First", "Child", "Yes").withChild("Second", "Child", "Yes")
.with("parentFirstName", "FirstName").withChild("First", "Child", "Yes").withChild("Second", "Child", "Yes")
.with("parentContactEmail", "familyemail@test.com")
.with("languageRead", "English")
.withSubmittedAtDate(OffsetDateTime.now())
.withCCRR()
Expand All @@ -74,6 +75,14 @@ void setUp() {
action = new SendProviderAgreesToCareFamilyConfirmationEmail(sendEmailJob, messageSource, submissionRepositoryService);
}

@Test
void correctlySetsEmailRecipient(){
Optional<Map<String, Object>> emailDataOptional = action.getEmailData(providerSubmission);
Map<String, Object> emailData = emailDataOptional.get();

assertThat(action.getRecipientEmail(emailData)).isEqualTo("familyemail@test.com");
}

@Test
void correctlySetsEmailData() {
Optional<Map<String, Object>> emailDataOptional = action.getEmailData(providerSubmission);
Expand All @@ -82,11 +91,13 @@ void correctlySetsEmailData() {

Map<String, Object> emailData = emailDataOptional.get();

assertThat(emailData.get("confirmationCode")).isEqualTo("ABC123");
assertThat(emailData.get("childrenInitialsList")).isEqualTo(List.of("F.C.", "S.C."));
assertThat(emailData.get("providerName")).isEqualTo("BusinessName");
assertThat(emailData.get("parentContactEmail")).isEqualTo("familyemail@test.com");
assertThat(emailData.get("parentFirstName")).isEqualTo("FirstName");
assertThat(emailData.get("ccrrName")).isEqualTo("Sample Test CCRR");
assertThat(emailData.get("ccrrPhoneNumber")).isEqualTo("(603) 555-1244");
assertThat(emailData.get("childrenInitialsList")).isEqualTo(List.of("F.C.", "S.C."));
assertThat(emailData.get("confirmationCode")).isEqualTo("ABC123");
assertThat(emailData.get("providerName")).isEqualTo("BusinessName");
assertThat(emailData.get("ccapStartDate")).isEqualTo("January 10, 2025");
assertThat(emailData.get("familyPreferredLanguage")).isEqualTo("English");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ void setUp() {
action = new SendProviderConfirmationEmail(sendEmailJob, messageSource, submissionRepositoryService);
}

@Test
void correctlySetsEmailRecipient(){
Optional<Map<String, Object>> emailDataOptional = action.getEmailData(providerSubmission);
Map<String, Object> emailData = emailDataOptional.get();

assertThat(action.getRecipientEmail(emailData)).isEqualTo("provideremail@test.com");
}

@Test
void correctlySetsEmailData() {
Optional<Map<String, Object>> emailDataOptional = action.getEmailData(providerSubmission);
Expand All @@ -87,6 +95,7 @@ void correctlySetsEmailData() {
assertThat(emailData.get("ccrrName")).isEqualTo("Sample Test CCRR");
assertThat(emailData.get("ccrrPhoneNumber")).isEqualTo("(603) 555-1244");
assertThat(emailData.get("ccapStartDate")).isEqualTo("January 10, 2025");
assertThat(emailData.get("providerResponseContactEmail")).isEqualTo("provideremail@test.com");
}

@Test
Expand Down

0 comments on commit 3cb927c

Please sign in to comment.