diff --git a/src/__tests__/activityLogQueries.test.ts b/src/__tests__/activityLogQueries.test.ts index 36f051814..9bdf8e74e 100644 --- a/src/__tests__/activityLogQueries.test.ts +++ b/src/__tests__/activityLogQueries.test.ts @@ -139,6 +139,7 @@ describe('activityLogQueries', () => { await conversationFactory({ customerId: customer._id }); await internalNoteFactory({ contentTypeId: customer._id }); await engageMessageFactory({ customerIds: [customer._id], method: 'email' }); + await engageMessageFactory({ customerIds: [customer._id], method: 'sms' }); const dataSources = { IntegrationsAPI: new IntegrationsAPI() }; const spy = jest.spyOn(dataSources.IntegrationsAPI, 'fetchApi'); @@ -150,6 +151,7 @@ describe('activityLogQueries', () => { { type: 'email', content: 'email' }, { type: 'internal_note', content: 'internal_note' }, { type: 'task', content: 'task' }, + { type: 'sms', content: 'sms' }, ]; for (const activityType of activityTypes) { diff --git a/src/data/resolvers/mutations/engageUtils.ts b/src/data/resolvers/mutations/engageUtils.ts index 4fde6e9a5..f7c6fa496 100644 --- a/src/data/resolvers/mutations/engageUtils.ts +++ b/src/data/resolvers/mutations/engageUtils.ts @@ -164,6 +164,10 @@ const sendEmailOrSms = async ( shortMessage: engageMessage.shortMessage || {}, }; + const customerIds = customerInfos.map(c => c._id); + + await EngageMessages.setCustomerIds(engageMessage._id, customerIds); + const chunks = chunkArray(customerInfos, 3000); for (const chunk of chunks) { diff --git a/src/data/resolvers/queries/activityLogs.ts b/src/data/resolvers/queries/activityLogs.ts index 2e8b04320..ecacfa677 100644 --- a/src/data/resolvers/queries/activityLogs.ts +++ b/src/data/resolvers/queries/activityLogs.ts @@ -99,6 +99,11 @@ const activityLogQueries = { collectItems(await EmailDeliveries.find({ customerId: contentId }), 'email'); }; + const collectEngageSms = async () => { + collectItems(await EngageMessages.find({ customerIds: contentId, method: 'sms' }), 'engage-sms'); + collectItems(await EmailDeliveries.find({ customerId: contentId }), 'sms'); + }; + const collectTasks = async () => { if (contentType !== 'task') { collectItems( @@ -127,12 +132,17 @@ const activityLogQueries = { await collectEngageMessages(); break; + case 'sms': + await collectEngageSms(); + break; + default: await collectConversations(); await collectActivityLogs(); await collectInternalNotes(); await collectEngageMessages(); await collectTasks(); + await collectEngageSms(); break; } diff --git a/src/db/models/Engages.ts b/src/db/models/Engages.ts index 995711a9c..6848b2da6 100644 --- a/src/db/models/Engages.ts +++ b/src/db/models/Engages.ts @@ -35,6 +35,7 @@ export interface IEngageMessageModel extends Model { createEngageMessage(doc: IEngageMessage): Promise; updateEngageMessage(_id: string, doc: IEngageMessage): Promise; + setCustomerIds(_id: string, customerIds: string[]): Promise; engageMessageSetLive(_id: string): Promise; engageMessageSetPause(_id: string): Promise; @@ -100,6 +101,16 @@ export const loadClass = () => { return EngageMessages.findOne({ _id }); } + /** + * set engage message customerIds + */ + + public static async setCustomerIds(_id: string, customerIds: string[]) { + await EngageMessages.updateOne({ _id }, { $set: { customerIds } }); + + return EngageMessages.findOne({ _id }); + } + /** * Engage message set live */