diff --git a/src/features/cdc/services/messageService.ts b/src/features/cdc/services/messageService.ts new file mode 100644 index 00000000..4c02e962 --- /dev/null +++ b/src/features/cdc/services/messageService.ts @@ -0,0 +1,55 @@ +import { IoDevServerConfig } from "../../../types/config"; +import { CreatedMessageWithContentAndAttachments } from "../../../../generated/definitions/backend/CreatedMessageWithContentAndAttachments"; +import { nextMessageIdAndCreationDate } from "../../messages/utils"; +import { validatePayload } from "../../../utils/validator"; +import { cdcServiceId } from "../../services/persistence/services/special/cdc-service"; +import { CreatedMessageWithContent } from "../../../../generated/definitions/backend/CreatedMessageWithContent"; + +const createCdcMessageTemplates = [ + { + content: { + subject: "La tua Carta della Cultura è pronta!", + markdown: + '---\nit:\n cta_2:\n text: "Dove puoi usarla"\n action: "iohandledlink://https://www.cartadellacultura.it/cartaculturaEsercente/#/doveUsareBuoni"\n cta_1:\n text: "Vai alla Carta della Cultura"\n action: "ioit://main/wallet"\n---\nCiao!\nIl tuo **nucleo familiare** ha ottenuto la Carta della Cultura per il:\n* **202Y**\n* **202Z**\n\nÈ disponibile ora nella sezione Portafoglio.\n\nPuoi usarla per acquistare libri, sia cartacei che digitali, generando uno o più buoni in base al credito disponibile.\n\nVuoi avere più informazioni su come usare i buoni? [Leggi come fare](https://pagopa.zendesk.com/auth/v2/login/signin?auth_origin=30056501290385%2Ctrue%2Ctrue&brand_id=30056501290385&locale=22&return_to=https%3A%2F%2Fassistenza.ioapp.it%2Fhc&role=agent&theme=hc)\n' + } + }, + { + content: { + subject: "Non è stato possibile assegnarti la Carta della Cultura", + markdown: + "Ciao!\nPurtroppo non è stato possibile assegnarti la Carta della Cultura.\n\nLa richiesta non è stata accolta, ecco perché:\n* **202X** : \n* **202V** : \n* **202K** : \n\nGrazie per aver partecipato all’iniziativa." + } + }, + { + content: { + subject: "Carta della Cultura: abbiamo aggiornamenti sulla tua richiesta", + markdown: + '---\nit:\n cta_2:\n text: "Dove puoi usarla"\n action: "iohandledlink://https://www.cartadellacultura.it/cartaculturaEsercente/#/doveUsareBuoni"\n cta_1:\n text: "Vai alla Carta della Cultura"\n action: "ioit://main/wallet"\n---\nCiao!\nEcco l’esito delle tue richieste per l’ottenimento della Carta della Cultura.\n\nIl tuo **nucleo familiare** ha ottenuto la Carta della Cultura per il:\n* **202Y**\n* **202Z**\n\nPer gli altri anni, invece, la richiesta non è stata accolta:\n* **202X** : \n* **202V** : \n* **202K** : \n\nPuoi trovare la tua Carta nella sezione Portafoglio e usarla per acquistare libri, generando uno o più buoni in base al credito disponibile.' + } + } +]; + +export const createCDCMessages = ( + customConfig: IoDevServerConfig +): CreatedMessageWithContentAndAttachments[] => { + // feature flag guard + if (!customConfig.features.bonus.cdc.enabled) { + return []; + } + + const fiscal_code = customConfig.profile.attrs.fiscal_code; + + return createCdcMessageTemplates.map(template => { + const { id, created_at } = nextMessageIdAndCreationDate(); + + return validatePayload(CreatedMessageWithContent, { + content: template.content, + created_at, + fiscal_code, + id, + message_title: template.content.subject ?? "This message has no title", + sender_service_id: cdcServiceId, + service_name: "Ministero della Cultura" + }); + }); +}; diff --git a/src/features/services/persistence/services/special/cdc-service.ts b/src/features/services/persistence/services/special/cdc-service.ts index 7b26b736..299b9c35 100644 --- a/src/features/services/persistence/services/special/cdc-service.ts +++ b/src/features/services/persistence/services/special/cdc-service.ts @@ -10,7 +10,7 @@ import { SpecialServiceCategoryEnum } from "../../../../../../generated/definiti import { SpecialServiceMetadata } from "../../../../../../generated/definitions/services/SpecialServiceMetadata"; import { ServiceId } from "../../../../../../generated/definitions/services/ServiceId"; -const cdcServiceId = "01G2AFTME08TS0QD2P2S682CJ0" as ServiceId; +export const cdcServiceId = "01G2AFTME08TS0QD2P2S682CJ0" as ServiceId; export const createCdcService: SpecialServiceGenerator = ( createService: (serviceId: string) => ServiceDetails, diff --git a/src/populate-persistence.ts b/src/populate-persistence.ts index 07984da5..c41d82cf 100644 --- a/src/populate-persistence.ts +++ b/src/populate-persistence.ts @@ -53,6 +53,7 @@ import { AggregatedMessage, productionMessagesFileRelativePath } from "./features/messages/routers/productionCrawlerRouter"; +import { createCDCMessages } from "./features/cdc/services/messageService"; const getServiceId = (): string => { const servicesSummaries = ServicesDB.getSummaries(true); @@ -487,7 +488,9 @@ const createMessages = ( ...createSENDOptInMessage(customConfig), ...createSENDMessagesOnIO(customConfig), - ...createMessagesWithRemoteContent(customConfig) + ...createMessagesWithRemoteContent(customConfig), + + ...createCDCMessages(customConfig) ]; };