diff --git a/src/main/java/org/ilgcc/app/email/EmailConstants.java b/src/main/java/org/ilgcc/app/email/EmailConstants.java index dc5c6c885..f7cc549f2 100644 --- a/src/main/java/org/ilgcc/app/email/EmailConstants.java +++ b/src/main/java/org/ilgcc/app/email/EmailConstants.java @@ -8,7 +8,7 @@ public class EmailConstants { @Getter public enum EmailType { FAMILY_CONFIRMATION_EMAIL("Family Confirmation Email"), FAMILY_CONFIRMATION_EMAIL_NO_PROVIDER( - "No Provider Family Confirmation Email"); + "No Provider Family Confirmation Email"), PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL("Provider Agrees to Care Family Email"); private final String description; diff --git a/src/main/java/org/ilgcc/app/submission/actions/FindApplicationData.java b/src/main/java/org/ilgcc/app/submission/actions/FindApplicationData.java index c5cbad41d..2f77e1792 100644 --- a/src/main/java/org/ilgcc/app/submission/actions/FindApplicationData.java +++ b/src/main/java/org/ilgcc/app/submission/actions/FindApplicationData.java @@ -1,10 +1,8 @@ package org.ilgcc.app.submission.actions; import formflow.library.config.submission.Action; -import formflow.library.data.FormSubmission; import formflow.library.data.Submission; import formflow.library.data.SubmissionRepositoryService; -import jakarta.servlet.http.HttpSession; import java.util.Optional; import java.util.UUID; import lombok.extern.slf4j.Slf4j; @@ -22,9 +20,10 @@ public class FindApplicationData implements Action { @Override public void run(Submission providerSubmission) { Optional clientID = ProviderSubmissionUtilities.getClientId(providerSubmission); - if(clientID != null && clientID.isPresent()){ + if(clientID.isPresent()){ Optional clientSubmission = submissionRepositoryService.findById(clientID.get()); providerSubmission.getInputData().put("clientResponse", ProviderSubmissionUtilities.getApplicantSubmissionForProviderResponse(clientSubmission)); + providerSubmission.getInputData().put("clientResponseChildren", ProviderSubmissionUtilities.getChildrenDataForProviderResponse(clientSubmission.get())); submissionRepositoryService.save(providerSubmission); } diff --git a/src/main/java/org/ilgcc/app/submission/actions/FormatChildrenWhoNeedCareNames.java b/src/main/java/org/ilgcc/app/submission/actions/FormatChildrenWhoNeedCareNames.java index d8bdd08a9..5ac959908 100644 --- a/src/main/java/org/ilgcc/app/submission/actions/FormatChildrenWhoNeedCareNames.java +++ b/src/main/java/org/ilgcc/app/submission/actions/FormatChildrenWhoNeedCareNames.java @@ -18,7 +18,7 @@ public class FormatChildrenWhoNeedCareNames implements Action { @Override public void run(Submission providerSubmission) { Optional clientID = ProviderSubmissionUtilities.getClientId(providerSubmission); - if (clientID != null && clientID.isPresent()) { + if (clientID.isPresent()) { Submission clientSubmission = submissionRepositoryService.findById(clientID.get()).get(); String formattedChildrenNames = ProviderSubmissionUtilities.formatChildNamesAsCommaSeperatedList(clientSubmission); providerSubmission.getInputData().put("childrenWhoNeedCareNames", formattedChildrenNames); diff --git a/src/main/java/org/ilgcc/app/submission/actions/SendFamilyConfirmationEmail.java b/src/main/java/org/ilgcc/app/submission/actions/SendFamilyConfirmationEmail.java index 94fcec009..06fc2ed7b 100644 --- a/src/main/java/org/ilgcc/app/submission/actions/SendFamilyConfirmationEmail.java +++ b/src/main/java/org/ilgcc/app/submission/actions/SendFamilyConfirmationEmail.java @@ -49,7 +49,7 @@ public void run(Submission familySubmission) { String subject = messageSource.getMessage("email.family-confirmation.subject", new Object[]{familySubmissionShortCode}, locale); - String senderName = messageSource.getMessage("email.sender-name", null, locale); + String senderName = messageSource.getMessage("email.general.sender-name", null, locale); sendEmailJob.enqueueSendEmailJob(familyEmail, senderName, subject, EmailConstants.EmailType.FAMILY_CONFIRMATION_EMAIL.getDescription(), @@ -72,8 +72,8 @@ private Content createFamilyConfirmationEmailBody(Submission familySubmission, S locale); String p6 = messageSource.getMessage("email.family-confirmation.p6", null, locale); String p7 = messageSource.getMessage("email.family-confirmation.p7", null, locale); - String p8 = messageSource.getMessage("email.family-confirmation.p8", null, locale); - String p9 = messageSource.getMessage("email.footer", null, locale); + String p8 = messageSource.getMessage("email.general.footer.automated-response", null, locale); + String p9 = messageSource.getMessage("email.general.footer.cfa", null, locale); return new Content("text/html", p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9); } } diff --git a/src/main/java/org/ilgcc/app/submission/actions/SendProviderAgreesToCareFamilyConfirmationEmail.java b/src/main/java/org/ilgcc/app/submission/actions/SendProviderAgreesToCareFamilyConfirmationEmail.java new file mode 100644 index 000000000..b0d1c7813 --- /dev/null +++ b/src/main/java/org/ilgcc/app/submission/actions/SendProviderAgreesToCareFamilyConfirmationEmail.java @@ -0,0 +1,101 @@ +package org.ilgcc.app.submission.actions; + +import com.sendgrid.helpers.mail.objects.Content; +import formflow.library.config.submission.Action; +import formflow.library.data.FormSubmission; +import formflow.library.data.Submission; +import formflow.library.data.SubmissionRepositoryService; +import java.util.Locale; +import java.util.Optional; +import java.util.UUID; +import lombok.extern.slf4j.Slf4j; +import org.ilgcc.app.email.EmailConstants; +import org.ilgcc.app.utils.ProviderSubmissionUtilities; +import org.ilgcc.jobs.SendEmailJob; +import org.springframework.context.MessageSource; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class SendProviderAgreesToCareFamilyConfirmationEmail implements Action { + + private final SendEmailJob sendEmailJob; + private final MessageSource messageSource; + private final SubmissionRepositoryService submissionRepositoryService; + + public SendProviderAgreesToCareFamilyConfirmationEmail(SendEmailJob sendEmailJob, MessageSource messageSource, SubmissionRepositoryService submissionRepositoryService) { + this.sendEmailJob = sendEmailJob; + this.messageSource = messageSource; + this.submissionRepositoryService = submissionRepositoryService; + } + + @Override + public void run(FormSubmission formSubmission, Submission providerSubmission) { + //Check if provider agrees to care + String providerAgreesToCare = (String) formSubmission.getFormData().getOrDefault("providerResponseAgreeToCare", "false"); + 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()); + return; + } + Optional familySubmissionId = ProviderSubmissionUtilities.getClientId(providerSubmission); + if (familySubmissionId.isEmpty()) { + log.warn("No family submission is associated with the provider submission with ID: {}", providerSubmission.getId()); + return; + } + Optional familySubmissionOptional = submissionRepositoryService.findById(familySubmissionId.get()); + + if (familySubmissionOptional.isEmpty()) { + log.warn("No family submission is associated with the familSubmissionID: {}", providerSubmission.getId()); + 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()); + return; + } + + String familySubmissionConfirmationId = familySubmission.getShortCode(); + + Locale locale = + providerSubmission.getInputData().getOrDefault("languageRead", "English").equals("Spanish") ? Locale.forLanguageTag( + "es") : Locale.ENGLISH; + + 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); + + sendEmailJob.enqueueSendEmailJob(familyEmailAddress, senderName, subject, + EmailConstants.EmailType.PROVIDER_AGREES_TO_CARE_FAMILY_EMAIL.getDescription(), + body, providerSubmission); + providerSubmission.getInputData().put("providerResponseFamilyConfirmationEmailSent", "true"); + submissionRepositoryService.save(providerSubmission); + } + + private Content createProviderResponseConfirmationEmailBody(Submission providerSubmission, Submission familySubmission,String confirmationCode, Locale locale) { + String providerName = ProviderSubmissionUtilities.getProviderResponseName(providerSubmission); + String ccrrName = familySubmission.getInputData().get("ccrrName").toString(); + String ccrrPhoneNumber = (String) familySubmission.getInputData().getOrDefault("ccrrPhoneNumber", ""); + + String p1 = messageSource.getMessage("email.response-email-for-family.provider-agrees.p1", null, locale); + String p2 = providerName.isBlank() ? messageSource.getMessage("email.response-email-for-family.provider-agrees.p2-no-provider-name", new Object[]{ccrrName}, locale) : messageSource.getMessage("email.response-email-for-family.provider-agrees.p2-has-provider-name", new Object[]{providerName, ccrrName}, locale); + String p3 = messageSource.getMessage("email.response-email-for-family.provider-agrees.p3", + new Object[]{ + ProviderSubmissionUtilities.getChildrenInitialsFromApplication(familySubmission), + ProviderSubmissionUtilities.getCCAPStartDateFromProviderOrFamilyChildcareStartDate(familySubmission, providerSubmission) + }, locale); + String p4 = messageSource.getMessage("email.response-email-for-family.provider-agrees.p4", new Object[]{confirmationCode}, locale); + String p5 = messageSource.getMessage("email.response-email-for-family.provider-agrees.p5", new Object[]{ccrrName, ccrrPhoneNumber}, locale); + String p6 = messageSource.getMessage("email.general.footer.automated-response", null, locale); + String p7 = messageSource.getMessage("email.general.footer.cfa", null, locale); + return new Content("text/html", p1 + p2 + p3 + p4 + p5 + p6 + p7); + } +} diff --git a/src/main/java/org/ilgcc/app/submission/actions/SetOrganizationIdAndCCRRName.java b/src/main/java/org/ilgcc/app/submission/actions/SetOrganizationIdAndCCRRName.java index 435410b3d..bd7c7557e 100644 --- a/src/main/java/org/ilgcc/app/submission/actions/SetOrganizationIdAndCCRRName.java +++ b/src/main/java/org/ilgcc/app/submission/actions/SetOrganizationIdAndCCRRName.java @@ -50,7 +50,7 @@ public void run(Submission submission) { final Optional organizationId = applicationRouterService.getOrganizationIdByZipCode(unvalidatedZip); if (organizationId.isPresent()) { - saveOrganizationIdAndName(submission, organizationId.get()); + saveOrganizationIdAndNameAndPhoneNumber(submission, organizationId.get()); saveCountyFromZip(submission, unvalidatedZip); return; } else { @@ -65,7 +65,7 @@ public void run(Submission submission) { if (zipCode.isPresent()) { Optional organizationId = applicationRouterService.getOrganizationIdByZipCode(zipCode.get().getValue()); - saveOrganizationIdAndName(submission, organizationId.get()); + saveOrganizationIdAndNameAndPhoneNumber(submission, organizationId.get()); saveCounty(submission, applicationCounty); return; } @@ -75,7 +75,7 @@ public void run(Submission submission) { final String applicationZipCode = (String) submission.getInputData().get(APPLICATION_ZIPCODE_INPUT_NAME); final Optional organizationId = applicationRouterService.getOrganizationIdByZipCode(applicationZipCode); if (organizationId.isPresent()) { - saveOrganizationIdAndName(submission, organizationId.get()); + saveOrganizationIdAndNameAndPhoneNumber(submission, organizationId.get()); saveCountyFromZip(submission, applicationZipCode); return; } @@ -84,9 +84,10 @@ public void run(Submission submission) { log.info("Could not assign a caseload number to this application"); } - private void saveOrganizationIdAndName(Submission submission, String organizationId) { + private void saveOrganizationIdAndNameAndPhoneNumber(Submission submission, String organizationId) { submission.getInputData().put(ORGANIZATION_ID_INPUT, organizationId); submission.getInputData().put("ccrrName", CCRR.findCCRRNameByOrganizationalId(organizationId)); + submission.getInputData().put("ccrrPhoneNumber", CCRR.findCCRRPhoneNumberByOrganizationId(organizationId)); submissionRepositoryService.save(submission); } diff --git a/src/main/java/org/ilgcc/app/submission/actions/SetProviderCareStartDate.java b/src/main/java/org/ilgcc/app/submission/actions/SetProviderCareStartDate.java index 2fc66eb18..383f2b75c 100644 --- a/src/main/java/org/ilgcc/app/submission/actions/SetProviderCareStartDate.java +++ b/src/main/java/org/ilgcc/app/submission/actions/SetProviderCareStartDate.java @@ -22,8 +22,12 @@ public class SetProviderCareStartDate implements Action { @Override public void run(Submission providerSubmission) { Optional clientID = ProviderSubmissionUtilities.getClientId(providerSubmission); - if (clientID != null && clientID.isPresent()) { + if (clientID.isPresent()) { Optional clientSubmission = submissionRepositoryService.findById(clientID.get()); + if (clientSubmission.isEmpty()) { + log.warn("No client submission found for this id: {}", clientID.get()); + return; + } Optional earliestDate = getEarliestChildCCAPDate(clientSubmission.get()); if(earliestDate.isPresent()){ providerSubmission.getInputData().put("providerCareStartDay", earliestDate.get().getDayOfMonth()); diff --git a/src/main/java/org/ilgcc/app/submission/actions/UploadProviderSubmissionToS3.java b/src/main/java/org/ilgcc/app/submission/actions/UploadProviderSubmissionToS3.java index 92eca820d..712288eac 100644 --- a/src/main/java/org/ilgcc/app/submission/actions/UploadProviderSubmissionToS3.java +++ b/src/main/java/org/ilgcc/app/submission/actions/UploadProviderSubmissionToS3.java @@ -51,7 +51,7 @@ public UploadProviderSubmissionToS3(PdfService pdfService, CloudFileRepository c @Override public void run(Submission providerSubmission) { var clientId = ProviderSubmissionUtilities.getClientId(providerSubmission); - if (clientId != null && clientId.isPresent()) { + if (clientId.isPresent()) { Optional familySubmissionOptional = submissionRepositoryService.findById(clientId.get()); if (familySubmissionOptional.isPresent()) { log.info("Provider submitted response for client ID {}, enqueuing transfer of documents.", clientId.get()); diff --git a/src/main/java/org/ilgcc/app/submission/router/CCRR.java b/src/main/java/org/ilgcc/app/submission/router/CCRR.java index 185bd9350..9eb510a12 100644 --- a/src/main/java/org/ilgcc/app/submission/router/CCRR.java +++ b/src/main/java/org/ilgcc/app/submission/router/CCRR.java @@ -14,13 +14,14 @@ public class CCRR { protected final String SDA; protected final String caseloadCode; protected final String slug; + protected final String phoneNumber; public static final CCRR FOUR_C = new CCRR("4C: Community Coordinated Child Care", "56522729391679", "2", "BB", - "4c-ccap-apps"); - public static final CCRR PROJECT_CHILD = new CCRR("Project CHILD", "59522729391675", "15", "QQ", "project-child-ccap-apps"); + "4c-ccap-apps", "(815) 758-8149 x225"); + public static final CCRR PROJECT_CHILD = new CCRR("Project CHILD", "59522729391675", "15", "QQ", "project-child-ccap-apps", "(618) 244-2210"); public static final CCRR ILLINOIS_ACTION = new CCRR("Illinois Action for Children", "47522729391670", "6", "GG", - "illinois-action-for-children-ccap-apps"); + "illinois-action-for-children-ccap-apps", "(312) 823-1100"); private static final Map CCRR_MAP_BY_CASELOAD = new HashMap<>(); private static final Map CCRR_MAP_BY_ORGANIZATIONAL_ID = new HashMap<>(); @@ -37,12 +38,13 @@ public class CCRR { } } - public CCRR(String name, String organizationId, String SDA, String caseloadCode, String slug) { + public CCRR(String name, String organizationId, String SDA, String caseloadCode, String slug, String phoneNumber) { this.name = name; this.organizationId = organizationId; this.SDA = SDA; this.caseloadCode = caseloadCode; this.slug = slug; + this.phoneNumber = phoneNumber; } private static List values() { @@ -73,4 +75,9 @@ public static String getCCRRSlugByOrganizationId(String organizationId) { final Optional ccrr = findCCRRByOrganizationalId(organizationId); return ccrr.isPresent() ? ccrr.get().slug : ""; } + + public static String findCCRRPhoneNumberByOrganizationId(String organizationId) { + final Optional ccrr = findCCRRByOrganizationalId(organizationId); + return ccrr.isPresent() ? ccrr.get().phoneNumber : ""; + } } diff --git a/src/main/java/org/ilgcc/app/utils/DateUtilities.java b/src/main/java/org/ilgcc/app/utils/DateUtilities.java index 3a70e5fa2..0730c5b02 100644 --- a/src/main/java/org/ilgcc/app/utils/DateUtilities.java +++ b/src/main/java/org/ilgcc/app/utils/DateUtilities.java @@ -6,10 +6,13 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatter; public class DateUtilities { - + private final static String FULL_DATE_INPUT = "MM/dd/yyyy"; + private final static String FULL_DATE_FORMAT_OUTPUT_PATTER = "MMMM dd, yyyy"; + private final static String MONTH_YEAR_INPUT = "MM/yyyy"; + private final static String MONTH_YEAR_OUTPUT_PATTERN = "MMMM yyyy"; public static String getFormattedDateFromMonthDateYearInputs(String prefix, Map data) { String month = (String) data.get(prefix + "Month"); String day = (String) data.get(prefix + "Day"); @@ -36,7 +39,7 @@ public static String formatDateStringFromMonthDayYear(String month, String day, public static boolean isDateInvalid(String date) { try { - DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy"); + org.joda.time.format.DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy"); dtf.parseDateTime(date); } catch (Exception e) { @@ -77,4 +80,30 @@ public static String getEarliestDate(String dateString1, String dateString2) { Optional childcareStartDate = DateUtilities.parseStringDate(dateString2); return earliestDate.get().isBefore(childcareStartDate.get()) ? dateString1 : dateString2; } + + public static String convertDateToFullWordMonthPattern(String dateStr){ + String fullDatePattern = "(\\d{1,2})/(\\d{1,2})/(\\d{4})"; + Pattern fullDateRegex = Pattern.compile(fullDatePattern); + Matcher fullDateMatcher = fullDateRegex.matcher(dateStr); + + if (fullDateMatcher.matches()) { + return replaceMonthIntegerWithWord(dateStr, FULL_DATE_INPUT, FULL_DATE_FORMAT_OUTPUT_PATTER); + } + + String MonthYearDatePattern = "(\\d{1,2})/(\\d{4})"; + Pattern MonthYearRegex = Pattern.compile(MonthYearDatePattern); + Matcher MonthYearMatcher = MonthYearRegex.matcher(dateStr); + if (MonthYearMatcher.matches()) { + return replaceMonthIntegerWithWord(dateStr, MONTH_YEAR_INPUT, MONTH_YEAR_OUTPUT_PATTERN); + } + return ""; + } + + public static String replaceMonthIntegerWithWord(String dateStr, String inputFormat, String outputFormat) { + DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(inputFormat); + DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat); + + LocalDate date = LocalDate.parse(dateStr, inputFormatter); + return date.format(outputFormatter); + } } diff --git a/src/main/java/org/ilgcc/app/utils/ProviderSubmissionUtilities.java b/src/main/java/org/ilgcc/app/utils/ProviderSubmissionUtilities.java index 71b7e1441..5577f49cf 100644 --- a/src/main/java/org/ilgcc/app/utils/ProviderSubmissionUtilities.java +++ b/src/main/java/org/ilgcc/app/utils/ProviderSubmissionUtilities.java @@ -64,7 +64,7 @@ public static Optional getClientId(Submission providerSubmission) { String applicantID = (String) providerSubmission.getInputData().get("familySubmissionId"); return Optional.of(UUID.fromString(applicantID)); } - return null; + return Optional.empty(); } public static Map getApplicantSubmissionForProviderResponse(Optional applicantSubmission) { @@ -89,7 +89,7 @@ private static String getApplicantName(Map applicantInputData) { public static List> getChildrenDataForProviderResponse(Submission applicantSubmission) { List> children = new ArrayList<>(); - if (SubmissionUtilities.getChildrenNeedingAssistance(applicantSubmission).size() > 0) { + if (!SubmissionUtilities.getChildrenNeedingAssistance(applicantSubmission).isEmpty()) { for (var child : SubmissionUtilities.getChildrenNeedingAssistance(applicantSubmission)) { Map childObject = new HashMap<>(); String firstName = (String) child.get("childFirstName"); @@ -195,4 +195,35 @@ public static boolean providerApplicationHasExpired(Submission submission, Zoned MINUTES.between(ProviderSubmissionUtilities.threeBusinessDaysFromSubmittedAtDate(submission.getSubmittedAt()), todaysDate) > 0; } + + public static String getCCAPStartDateFromProviderOrFamilyChildcareStartDate(Submission familySubmission, Submission providerSubmission) { + String providerCareStartDate = (String) providerSubmission.getInputData().getOrDefault("providerCareStartDate", ""); + + if (!providerCareStartDate.isBlank()) { + return DateUtilities.convertDateToFullWordMonthPattern(providerCareStartDate); + }else { + String familyEarliestChildcareStartDate = (String) familySubmission.getInputData().getOrDefault("earliestChildcareStartDate", ""); + return DateUtilities.convertDateToFullWordMonthPattern(familyEarliestChildcareStartDate); + } + } + public static String getChildrenInitialsFromApplication(Submission familySubmission) { + List> children = SubmissionUtilities.getChildrenNeedingAssistance(familySubmission); + var childrenInitials = new ArrayList(); + if (children.isEmpty()) { + return ""; + } + for (var child : children) { + String firstName = (String) child.get("childFirstName"); + String lastName = (String) child.get("childLastName"); + childrenInitials.add(String.format("%s.%s.", firstName.toUpperCase().charAt(0), lastName.toUpperCase().charAt(0))); + } + return String.join(", ", childrenInitials); + } + public static String getProviderResponseName(Submission providerSubmission) { + String providerResponseBusinessName = (String) providerSubmission.getInputData().getOrDefault("providerResponseBusinessName", ""); + if (!providerResponseBusinessName.isEmpty()) { + return providerResponseBusinessName; + } + return (String) providerSubmission.getInputData().getOrDefault("providerResponseFirstName", ""); + } } diff --git a/src/main/resources/flows-config.yaml b/src/main/resources/flows-config.yaml index d31123a8d..bdcfd8233 100644 --- a/src/main/resources/flows-config.yaml +++ b/src/main/resources/flows-config.yaml @@ -535,6 +535,7 @@ flow: - name: submit-start response: beforeDisplayAction: FindApplicationData + onPostAction: SendProviderAgreesToCareFamilyConfirmationEmail nextScreens: - name: registration-submit-intro condition: ProviderIsRegistering diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 171195550..532882a14 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -91,6 +91,12 @@ general.locked-submission=You've already submitted this application. To protect # links illinois-cares-for-kids-link=IllinoisCaresforKids +#email +email.general.sender-name=Child Care Assistance Program Applications - Code for America on behalf of the Illinois Department of Human Services +email.general.footer.automated-response=

---
Please do not reply to this email with questions. This email is automated and not monitored.

+email.general.footer.cfa=

Sent by Code for America on behalf of the Illinois Department of Human Services
2323 Broadway
Oakland, CA 94612-2414

+ +#email.family-confirmation email.family-confirmation.subject=Your CCAP confirmation code: {0} email.family-confirmation.p1=

Hi {0},

email.family-confirmation.p2=

You completed the online Child Care Assistance Program (CCAP) application!

@@ -99,9 +105,16 @@ email.family-confirmation.p4=

You will receive mail or email about the status email.family-confirmation.p5=

Your application details:
Confirmation code: {0}
Status: Pending review
Date of submission: {1}

email.family-confirmation.p6=

What happens if my provider doesn't respond?
If your provider doesn't complete their part of the application in 3 business days, your application will automatically be forwarded to your CCR&R for processing. A worker will reach out to you and help you find an available child care provider.

email.family-confirmation.p7=

What are the next steps in the process?
Your application will be reviewed by a worker at your CCR&R who will approve or deny the application based on CCAP program requirements. If they don't have enough information to make a decision, they will reach out to you by phone, email, or mail.

-email.family-confirmation.p8=

Please do not reply to this email with questions. This email is automated and not monitored.

-email.footer=

Sent by Code for America on behalf of the Illinois Department of Human Services
2323 Broadway
Oakland, CA 94612-2414

-email.sender-name=Child Care Assistance Program Applications - Code for America on behalf of Illinois Department of Human Services + +#email.response-email-for-family.provider-agrees +email.response-email-for-family.provider-agrees.subject=[CCAP update] Application submitted +email.response-email-for-family.provider-agrees.p1=

Hello,

+email.response-email-for-family.provider-agrees.p2-has-provider-name=

Your child care provider, {0}, just completed their part of your CCAP application! Your application has now been submitted to {1} for processing.

+email.response-email-for-family.provider-agrees.p2-no-provider-name=

Your child care provider just completed their part of your CCAP application! Your application has now been submitted to {0} for processing.

+email.response-email-for-family.provider-agrees.p3=

Provider response: Your provider agreed to care for {0} with a start date of {1} or pending approval.

+email.response-email-for-family.provider-agrees.p4=

Confirmation code: {0}

+email.response-email-for-family.provider-agrees.p5=

Next steps: You will receive a letter or an email about the status of your case in 13-15 business days. If you have questions, call {0}: {1}.

+ errors.provide-first-name=Enter a first name errors.provide-last-name=Enter a last name @@ -1220,6 +1233,7 @@ provider-response-response.start-date=Start date of care requested: provider-response-response.button.yes=Yes, I agree to care provider-response-response.button.no=No, I don't agree to care + #submit-complete provider-response-submit-complete.title=Response recorded provider-response-submit-complete.header=Your response has been recorded