From 64d83393f5a95638439a674a6157e44750681826 Mon Sep 17 00:00:00 2001 From: Benjamin Paige Date: Wed, 22 Jan 2025 07:52:19 -0700 Subject: [PATCH] feat(te/appk): Adding initial temp extension emails and appk for b's and c's (#1049) * Update with tempExt and appks * Addd 1915b appks * Update * Update * Update --- lib/lambda/processEmailsHandler.test.ts | 17 +++++++--- .../newSubmission/emailTemplates/AppKCMS.tsx | 2 +- .../emailTemplates/AppKState.tsx | 2 +- .../email/content/newSubmission/index.tsx | 33 +++++++++++++++---- .../emailTemplates/TempExtCMS.tsx | 6 ++-- .../emailTemplates/TempExtState.tsx | 6 ++-- .../email/content/tempExtension/index.tsx | 4 +-- lib/libs/email/index.ts | 6 ++-- lib/libs/email/mock-data/temp-extension.ts | 2 -- .../preview/InitialSubmissions/CMS/AppK.tsx | 25 ++++++++++++++ .../InitialSubmissions/CMS/Temp_Extension.tsx | 2 ++ .../State/Temp_Extension.tsx | 3 +- .../CMS/Temp_Extension.tsx | 14 -------- lib/libs/email/types.ts | 2 +- lib/packages/shared-types/events/app-k.ts | 2 ++ lib/packages/shared-types/events/index.ts | 4 +-- 16 files changed, 87 insertions(+), 43 deletions(-) create mode 100644 lib/libs/email/preview/InitialSubmissions/CMS/AppK.tsx delete mode 100644 lib/libs/email/preview/Initial_Submissions/CMS/Temp_Extension.tsx diff --git a/lib/lambda/processEmailsHandler.test.ts b/lib/lambda/processEmailsHandler.test.ts index dace4fd428..0eb98d5989 100644 --- a/lib/lambda/processEmailsHandler.test.ts +++ b/lib/lambda/processEmailsHandler.test.ts @@ -7,12 +7,13 @@ import { Authority } from "shared-types"; import { SIMPLE_ID, WITHDRAW_RAI_ITEM_B, WITHDRAW_RAI_ITEM_C } from "mocks"; const nms = "new-medicaid-submission"; const ncs = "new-chip-submission"; -const tempExtension = "temp-extension"; +const tempExtension = "temporary-extension"; const withdrawPackage = "withdraw-package"; const contractingInitial = "contracting-initial"; const capitatedInitial = "capitated-initial"; const withdrawRai = "withdraw-rai"; const respondToRai = "respond-to-rai"; +const appk = "app-k"; describe("process emails Handler", () => { it.each([ @@ -131,9 +132,9 @@ describe("process emails Handler", () => { SIMPLE_ID, ], [ - `should send an email for ${withdrawPackage} with ${Authority["1915c"]}`, + `should send an email for ${appk} with ${Authority["1915c"]}`, Authority["1915c"], - withdrawPackage, + appk, SIMPLE_ID, ], [ @@ -179,9 +180,15 @@ describe("process emails Handler", () => { SIMPLE_ID, ], [ - `should send an email for ${capitatedInitial} with ${Authority["1915c"]}`, + `should send an email for ${appk} with ${Authority["1915c"]}`, Authority["1915c"], - capitatedInitial, + appk, + SIMPLE_ID, + ], + [ + `should send an email for ${appk} with ${Authority["1915b"]}`, + Authority["1915b"], + appk, SIMPLE_ID, ], [ diff --git a/lib/libs/email/content/newSubmission/emailTemplates/AppKCMS.tsx b/lib/libs/email/content/newSubmission/emailTemplates/AppKCMS.tsx index 0abdffe531..5bb1c55d7d 100644 --- a/lib/libs/email/content/newSubmission/emailTemplates/AppKCMS.tsx +++ b/lib/libs/email/content/newSubmission/emailTemplates/AppKCMS.tsx @@ -9,7 +9,7 @@ import { import { BaseEmailTemplate } from "../../email-templates"; import { formatDate } from "shared-utils"; -type AppKEmailProps = Events["NewAppKSubmission"] & CommonEmailVariables; +type AppKEmailProps = Events["AppKSubmission"] & CommonEmailVariables; // 1915c - app K export const AppKCMSEmail = ({ variables }: { variables: AppKEmailProps }) => { diff --git a/lib/libs/email/content/newSubmission/emailTemplates/AppKState.tsx b/lib/libs/email/content/newSubmission/emailTemplates/AppKState.tsx index 2d8d2b44be..441314d632 100644 --- a/lib/libs/email/content/newSubmission/emailTemplates/AppKState.tsx +++ b/lib/libs/email/content/newSubmission/emailTemplates/AppKState.tsx @@ -12,7 +12,7 @@ import { BaseEmailTemplate } from "../../email-templates"; import { styles } from "../../email-styles"; export const AppKStateEmail = (props: { - variables: Events["NewAppKSubmission"] & CommonEmailVariables; + variables: Events["AppKSubmission"] & CommonEmailVariables; }) => { const variables = props.variables; const previewText = `Appendix K Amendment Submitted`; diff --git a/lib/libs/email/content/newSubmission/index.tsx b/lib/libs/email/content/newSubmission/index.tsx index a7a967f2f3..6f16ded38c 100644 --- a/lib/libs/email/content/newSubmission/index.tsx +++ b/lib/libs/email/content/newSubmission/index.tsx @@ -61,31 +61,50 @@ export const newSubmission: AuthoritiesWithUserTypesTemplate = { variables: | (Events["CapitatedInitial"] & CommonEmailVariables & { emails: EmailAddresses }) | (Events["ContractingInitial"] & CommonEmailVariables & { emails: EmailAddresses }) - | (Events["CapitatedRenewal"] & CommonEmailVariables & { emails: EmailAddresses }), + | (Events["CapitatedRenewal"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["ContractingRenewal"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["CapitatedAmendment"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["ContractingAmendment"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["AppKSubmission"] & CommonEmailVariables & { emails: EmailAddresses }), ) => { return { to: variables.emails.osgEmail, subject: `${variables.authority} ${variables.id} Submitted`, - body: await render(), + body: await render( + variables.event === "app-k" ? ( + + ) : ( + + ), + ), }; }, state: async ( variables: | (Events["CapitatedInitial"] & CommonEmailVariables & { emails: EmailAddresses }) | (Events["ContractingInitial"] & CommonEmailVariables & { emails: EmailAddresses }) - | (Events["CapitatedRenewal"] & CommonEmailVariables & { emails: EmailAddresses }), + | (Events["CapitatedRenewal"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["ContractingRenewal"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["CapitatedAmendment"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["ContractingAmendment"] & CommonEmailVariables & { emails: EmailAddresses }) + | (Events["AppKSubmission"] & CommonEmailVariables & { emails: EmailAddresses }), ) => { return { to: [`${variables.submitterName} <${variables.submitterEmail}>`], subject: `Your ${variables.authority} ${variables.id} has been submitted to CMS`, - body: await render(), + body: await render( + variables.event === "app-k" ? ( + + ) : ( + + ), + ), }; }, }, - [Authority["1915c"]]: { cms: async ( - variables: Events["NewAppKSubmission"] & CommonEmailVariables & { emails: EmailAddresses }, + variables: Events["AppKSubmission"] & CommonEmailVariables & { emails: EmailAddresses }, ) => { return { to: variables.emails.osgEmail, @@ -94,7 +113,7 @@ export const newSubmission: AuthoritiesWithUserTypesTemplate = { }; }, state: async ( - variables: Events["NewAppKSubmission"] & CommonEmailVariables & { emails: EmailAddresses }, + variables: Events["AppKSubmission"] & CommonEmailVariables & { emails: EmailAddresses }, ) => { return { to: [`${variables.submitterName} <${variables.submitterEmail}>`], diff --git a/lib/libs/email/content/tempExtension/emailTemplates/TempExtCMS.tsx b/lib/libs/email/content/tempExtension/emailTemplates/TempExtCMS.tsx index 9a7e3a0767..72978c26f1 100644 --- a/lib/libs/email/content/tempExtension/emailTemplates/TempExtCMS.tsx +++ b/lib/libs/email/content/tempExtension/emailTemplates/TempExtCMS.tsx @@ -8,9 +8,9 @@ import { import { BaseEmailTemplate } from "../../email-templates"; import { formatNinetyDaysDate } from "shared-utils"; -export const TempExtCMSEmail = (props: { - variables: Events["TempExtension"] & CommonEmailVariables; -}) => { +type TempExtCMSEmailProps = Events["TemporaryExtension"] & CommonEmailVariables; + +export const TempExtCMSEmail = (props: { variables: TempExtCMSEmailProps }) => { const variables = props.variables; const previewText = `Temporary Extension ${variables.id} Submitted`; const heading = `The Submission Portal received a ${variables.authority} Temporary Extension Submission:`; diff --git a/lib/libs/email/content/tempExtension/emailTemplates/TempExtState.tsx b/lib/libs/email/content/tempExtension/emailTemplates/TempExtState.tsx index 8ea90ded58..96cb13c896 100644 --- a/lib/libs/email/content/tempExtension/emailTemplates/TempExtState.tsx +++ b/lib/libs/email/content/tempExtension/emailTemplates/TempExtState.tsx @@ -1,10 +1,12 @@ import { formatNinetyDaysDate } from "shared-utils"; -import { CommonEmailVariables } from "shared-types"; +import { CommonEmailVariables, Events } from "shared-types"; import { PackageDetails, MailboxNotice, FollowUpNotice, Attachments } from "../../email-components"; import { BaseEmailTemplate } from "../../email-templates"; -export const TempExtStateEmail = (props: { variables: any & CommonEmailVariables }) => { +type TempExtStateEmailProps = Events["TemporaryExtension"] & CommonEmailVariables; + +export const TempExtStateEmail = (props: { variables: TempExtStateEmailProps }) => { const variables = props.variables; const previewText = `Temporary Extension ${variables.id} Submitted`; const heading = diff --git a/lib/libs/email/content/tempExtension/index.tsx b/lib/libs/email/content/tempExtension/index.tsx index b3d4f3f011..9b34859b2f 100644 --- a/lib/libs/email/content/tempExtension/index.tsx +++ b/lib/libs/email/content/tempExtension/index.tsx @@ -6,7 +6,7 @@ import { TempExtCMSEmail, TempExtStateEmail } from "./emailTemplates"; export const tempExtention: UserTypeOnlyTemplate = { cms: async ( - variables: Events["TempExtension"] & CommonEmailVariables & { emails: EmailAddresses }, + variables: Events["TemporaryExtension"] & CommonEmailVariables & { emails: EmailAddresses }, ) => { return { to: variables.emails.osgEmail, @@ -15,7 +15,7 @@ export const tempExtention: UserTypeOnlyTemplate = { }; }, state: async ( - variables: Events["TempExtension"] & CommonEmailVariables & { emails: EmailAddresses }, + variables: Events["TemporaryExtension"] & CommonEmailVariables & { emails: EmailAddresses }, ) => { return { to: [`${variables.submitterName} <${variables.submitterEmail}>`], diff --git a/lib/libs/email/index.ts b/lib/libs/email/index.ts index ca21f9e4dd..57f4d78244 100644 --- a/lib/libs/email/index.ts +++ b/lib/libs/email/index.ts @@ -23,7 +23,7 @@ export type AuthoritiesWithUserTypesTemplate = { export type EmailTemplates = { "new-medicaid-submission": AuthoritiesWithUserTypesTemplate; "new-chip-submission": AuthoritiesWithUserTypesTemplate; - "temp-extension": UserTypeOnlyTemplate; + "temporary-extension": UserTypeOnlyTemplate; "withdraw-package": AuthoritiesWithUserTypesTemplate; "withdraw-rai": AuthoritiesWithUserTypesTemplate; "contracting-initial": AuthoritiesWithUserTypesTemplate; @@ -37,13 +37,14 @@ export type EmailTemplates = { "contracting-renewal-state": AuthoritiesWithUserTypesTemplate; "capitated-renewal-state": AuthoritiesWithUserTypesTemplate; "respond-to-rai": AuthoritiesWithUserTypesTemplate; + "app-k": AuthoritiesWithUserTypesTemplate; }; // Create a type-safe mapping of email templates const emailTemplates: EmailTemplates = { "new-medicaid-submission": EmailContent.newSubmission, "new-chip-submission": EmailContent.newSubmission, - "temp-extension": EmailContent.tempExtention, + "temporary-extension": EmailContent.tempExtention, "withdraw-package": EmailContent.withdrawPackage, "withdraw-rai": EmailContent.withdrawRai, "contracting-initial": EmailContent.newSubmission, @@ -57,6 +58,7 @@ const emailTemplates: EmailTemplates = { "contracting-renewal-state": EmailContent.newSubmission, "capitated-renewal-state": EmailContent.newSubmission, "respond-to-rai": EmailContent.respondToRai, + "app-k": EmailContent.newSubmission, }; // Create a type-safe lookup function diff --git a/lib/libs/email/mock-data/temp-extension.ts b/lib/libs/email/mock-data/temp-extension.ts index 7faf0506e5..da3a18a70a 100644 --- a/lib/libs/email/mock-data/temp-extension.ts +++ b/lib/libs/email/mock-data/temp-extension.ts @@ -3,8 +3,6 @@ export const emailTemplateValue = { territory: "MD", id: "MD-2343.R00.TE09", waiverNumber: "MD-2343.R00.TE00", - authority: "1915(b)", - actionType: "Extend", applicationEndpointUrl: "https://mako-dev.cms.gov/", get timestamp() { return Date.now() + 5184000000; diff --git a/lib/libs/email/preview/InitialSubmissions/CMS/AppK.tsx b/lib/libs/email/preview/InitialSubmissions/CMS/AppK.tsx new file mode 100644 index 0000000000..06b09119ec --- /dev/null +++ b/lib/libs/email/preview/InitialSubmissions/CMS/AppK.tsx @@ -0,0 +1,25 @@ +import { AppKCMSEmail } from "../../../content/newSubmission/emailTemplates"; +import { emailTemplateValue } from "../../../mock-data/new-submission"; +import * as attachments from "../../../mock-data/attachments"; + +const AppKCMSEmailPreview = () => { + return ( + + ); +}; + +export default AppKCMSEmailPreview; diff --git a/lib/libs/email/preview/InitialSubmissions/CMS/Temp_Extension.tsx b/lib/libs/email/preview/InitialSubmissions/CMS/Temp_Extension.tsx index 3cafcc4b2e..90cb98cdc6 100644 --- a/lib/libs/email/preview/InitialSubmissions/CMS/Temp_Extension.tsx +++ b/lib/libs/email/preview/InitialSubmissions/CMS/Temp_Extension.tsx @@ -6,6 +6,8 @@ const TempExtCMSPreview = () => { ); diff --git a/lib/libs/email/preview/InitialSubmissions/State/Temp_Extension.tsx b/lib/libs/email/preview/InitialSubmissions/State/Temp_Extension.tsx index 3a56000dcd..8713633494 100644 --- a/lib/libs/email/preview/InitialSubmissions/State/Temp_Extension.tsx +++ b/lib/libs/email/preview/InitialSubmissions/State/Temp_Extension.tsx @@ -1,5 +1,4 @@ import { emailTemplateValue } from "../../../mock-data/temp-extension"; - import { TempExtStateEmail } from "../../../content/tempExtension/emailTemplates/TempExtState"; const TempExtStatePreview = () => { @@ -7,6 +6,8 @@ const TempExtStatePreview = () => { ); diff --git a/lib/libs/email/preview/Initial_Submissions/CMS/Temp_Extension.tsx b/lib/libs/email/preview/Initial_Submissions/CMS/Temp_Extension.tsx deleted file mode 100644 index 44c222ebf1..0000000000 --- a/lib/libs/email/preview/Initial_Submissions/CMS/Temp_Extension.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { TempExtCMSEmail } from "../../../content/tempExtension/emailTemplates"; -import { emailTemplateValue } from "../../../mock-data/temp-extension"; - -const TempExtCMSPreview = () => { - return ( - - ); -}; - -export default TempExtCMSPreview; diff --git a/lib/libs/email/types.ts b/lib/libs/email/types.ts index 011dd7f514..1472916014 100644 --- a/lib/libs/email/types.ts +++ b/lib/libs/email/types.ts @@ -37,5 +37,5 @@ export interface NewSubmissionTemplateProps { } export interface TempExtensionTemplateProps { - variables: Events["TempExtension"] & CommonEmailVariables; + variables: Events["TemporaryExtension"] & CommonEmailVariables; } diff --git a/lib/packages/shared-types/events/app-k.ts b/lib/packages/shared-types/events/app-k.ts index cf258c5589..f8cd316bf5 100644 --- a/lib/packages/shared-types/events/app-k.ts +++ b/lib/packages/shared-types/events/app-k.ts @@ -33,3 +33,5 @@ export const schema = baseSchema.extend({ submitterEmail: z.string().email(), timestamp: z.number(), }); + +export type AppKSubmission = z.infer; diff --git a/lib/packages/shared-types/events/index.ts b/lib/packages/shared-types/events/index.ts index 6a61d3a879..c4bc12533a 100644 --- a/lib/packages/shared-types/events/index.ts +++ b/lib/packages/shared-types/events/index.ts @@ -45,6 +45,7 @@ export const events = { export type BaseSchemas = z.infer; export type Events = { + AppKSubmission: z.infer; CapitatedInitial: z.infer; CapitatedRenewal: z.infer; CapitatedAmendment: z.infer; @@ -53,8 +54,7 @@ export type Events = { ContractingAmendment: z.infer; NewChipSubmission: z.infer; NewMedicaidSubmission: z.infer; - TempExtension: z.infer; - NewAppKSubmission: z.infer; + TemporaryExtension: z.infer; RespondToRai: z.infer; UploadSubsequentDocuments: z.infer; WithdrawPackage: z.infer;