diff --git a/package-lock.json b/package-lock.json index 36a614c..903ab08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@boklisten/bl-post-office", - "version": "0.5.51", + "version": "0.5.53", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index de09ed6..30638ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@boklisten/bl-post-office", - "version": "0.5.51", + "version": "0.5.53", "description": "a single module for sending messages to a customer", "main": "dist/index.js", "scripts": { diff --git a/src/interfaces/message-options.ts b/src/interfaces/message-options.ts index e9a2275..8dc6a6a 100644 --- a/src/interfaces/message-options.ts +++ b/src/interfaces/message-options.ts @@ -1,5 +1,6 @@ export type MessageType = | "reminder" + | "custom-reminder" | "receipt" | "generic" | "match" @@ -27,6 +28,7 @@ export interface MessageOptions { sequence_number?: number; mediums?: MessageMediums; htmlContent?: string; + customContent?: string; subject?: string; textBlocks?: TextBlock[]; } diff --git a/src/post-office.ts b/src/post-office.ts index b0ff68b..20d1307 100644 --- a/src/post-office.ts +++ b/src/post-office.ts @@ -83,6 +83,7 @@ export class PostOffice { switch (options.type) { case "reminder": + case "custom-reminder": return await this.delegateToDepartments( recipients, options, diff --git a/src/settings/post-office-settings.ts b/src/settings/post-office-settings.ts index 417c79d..3e48857 100644 --- a/src/settings/post-office-settings.ts +++ b/src/settings/post-office-settings.ts @@ -3,6 +3,9 @@ export const POST_OFFICE_SETTINGS = { reminder: { mediums: ["email", "sms"] }, + "custom-reminder": { + mediums: ["sms"] + }, generic: { mediums: ["email"] }, @@ -13,5 +16,12 @@ export const POST_OFFICE_SETTINGS = { mediums: ["email"] } }, - supportedTypes: ["receipt", "reminder", "generic", "match", "booking"] + supportedTypes: [ + "receipt", + "reminder", + "custom-reminder", + "generic", + "match", + "booking" + ] }; diff --git a/src/sms/handlers/sms.handler.ts b/src/sms/handlers/sms.handler.ts index 7251217..44649e4 100644 --- a/src/sms/handlers/sms.handler.ts +++ b/src/sms/handlers/sms.handler.ts @@ -31,13 +31,25 @@ export class SmsHandler implements DepartmentHandler { recipient: Recipient, messageOptions: MessageOptions ): Promise { - let seqNum = messageOptions.sequence_number - ? messageOptions.sequence_number - : 0; + let text: string; + + if (messageOptions.type === "custom-reminder") { + if (messageOptions.customContent == null) { + throw "custom-reminder type used but messageOptions.customContent not set"; + } + text = messageOptions.customContent; + } else { + const seqNum = messageOptions.sequence_number + ? messageOptions.sequence_number + : 0; + text = + SMS_SETTINGS.text[messageOptions.type][messageOptions.subtype][seqNum]; + } + return await this._smsBroker.send( recipient.phone as string, SMS_SETTINGS.fromNumber, - SMS_SETTINGS.text[messageOptions.type][messageOptions.subtype][seqNum], + text, recipient.message_id ); } diff --git a/src/sms/sms.department.ts b/src/sms/sms.department.ts index a2496f3..8b2c1d3 100644 --- a/src/sms/sms.department.ts +++ b/src/sms/sms.department.ts @@ -8,7 +8,7 @@ import { logger } from "../logger"; @injectable() export class SmsDepartment implements Department { - private supportedTypes = ["reminder", "match"]; + private supportedTypes = ["reminder", "custom-reminder", "match"]; private supportedSubtypes = ["partly-payment", "rent", "loan", "none"]; constructor(private _smsHandler: SmsHandler) {}