From dc71b5c6bfad767aca04b412b030b6d7baf02c20 Mon Sep 17 00:00:00 2001 From: Tristan Slater <1631008+trslater@users.noreply.github.com> Date: Tue, 7 May 2024 11:28:41 -0700 Subject: [PATCH 1/3] Filter out empty emails Empty strings as emails were causing it to fail. --- .../notification-submission/notification-submission.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts b/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts index e69108c141..a5fc12c29d 100644 --- a/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts +++ b/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts @@ -470,7 +470,7 @@ export class NotificationSubmissionService { ); if (localGovernment && localGovernment.emails) { - ccEmails = localGovernment.emails; + ccEmails = localGovernment.emails.filter((email) => email !== ''); } } From 73224d4a0307246eb871fe36f3e2c021316af4f7 Mon Sep 17 00:00:00 2001 From: Tristan Slater <1631008+trslater@users.noreply.github.com> Date: Tue, 7 May 2024 15:59:01 -0700 Subject: [PATCH 2/3] Fail resend if email isn't sent - Return email sent status to resend endpoint - Have resend endpoint fail if email not sent --- .../notification/notification.controller.ts | 22 +++++++++++++----- .../notification-submission.service.ts | 23 +++++++++++-------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/services/apps/alcs/src/alcs/notification/notification.controller.ts b/services/apps/alcs/src/alcs/notification/notification.controller.ts index 016b6b9536..ed7b14ca28 100644 --- a/services/apps/alcs/src/alcs/notification/notification.controller.ts +++ b/services/apps/alcs/src/alcs/notification/notification.controller.ts @@ -1,4 +1,7 @@ -import { ServiceNotFoundException } from '@app/common/exceptions/base.exception'; +import { + BaseServiceException, + ServiceNotFoundException, +} from '@app/common/exceptions/base.exception'; import { Body, Controller, @@ -120,11 +123,18 @@ export class NotificationController { ); if (document) { - await this.notificationSubmissionService.sendAndRecordLTSAPackage( - submission, - document, - user, - ); + const emailDidSend = + await this.notificationSubmissionService.sendAndRecordLTSAPackage( + submission, + document, + user, + ); + + if (!emailDidSend) { + throw new BaseServiceException( + `Failed to send LTSA Package ${fileNumber}`, + ); + } } else { throw new ServiceNotFoundException( `Failed to find LTSA Letter on File Number ${fileNumber}`, diff --git a/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts b/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts index a5fc12c29d..957c2803e5 100644 --- a/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts +++ b/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts @@ -406,18 +406,19 @@ export class NotificationSubmissionService { submission: NotificationSubmission, document: NotificationDocument, user: User, - ) { + ): Promise { const templateData = await this.generateSrwEmailData(submission, document); - const didSend = await this.emailService.sendEmail({ - to: [templateData.to], - body: templateData.html, - subject: `Agricultural Land Commission SRW${submission.fileNumber} (${submission.applicant})`, - parentType: PARENT_TYPE.NOTIFICATION, - parentId: templateData.parentId, - cc: templateData.cc, - attachments: [document.document], - }); + const didSend = + (await this.emailService.sendEmail({ + to: [templateData.to], + body: templateData.html, + subject: `Agricultural Land Commission SRW${submission.fileNumber} (${submission.applicant})`, + parentType: PARENT_TYPE.NOTIFICATION, + parentId: templateData.parentId, + cc: templateData.cc, + attachments: [document.document], + })) ?? false; if (didSend) { const fileBuffer = Buffer.from(templateData.html); @@ -442,6 +443,8 @@ export class NotificationSubmissionService { NOTIFICATION_STATUS.ALC_RESPONSE_SENT, ); } + + return didSend; } private async generateSrwEmailData( From ec6143e04d18951d72f156c7fafcdb8caee39f85 Mon Sep 17 00:00:00 2001 From: Tristan Slater <1631008+trslater@users.noreply.github.com> Date: Tue, 7 May 2024 16:09:33 -0700 Subject: [PATCH 3/3] Return strict boolean from email service --- .../notification-submission.service.ts | 19 +++++++++---------- .../alcs/src/providers/email/email.service.ts | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts b/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts index 957c2803e5..72c6777912 100644 --- a/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts +++ b/services/apps/alcs/src/portal/notification-submission/notification-submission.service.ts @@ -409,16 +409,15 @@ export class NotificationSubmissionService { ): Promise { const templateData = await this.generateSrwEmailData(submission, document); - const didSend = - (await this.emailService.sendEmail({ - to: [templateData.to], - body: templateData.html, - subject: `Agricultural Land Commission SRW${submission.fileNumber} (${submission.applicant})`, - parentType: PARENT_TYPE.NOTIFICATION, - parentId: templateData.parentId, - cc: templateData.cc, - attachments: [document.document], - })) ?? false; + const didSend = await this.emailService.sendEmail({ + to: [templateData.to], + body: templateData.html, + subject: `Agricultural Land Commission SRW${submission.fileNumber} (${submission.applicant})`, + parentType: PARENT_TYPE.NOTIFICATION, + parentId: templateData.parentId, + cc: templateData.cc, + attachments: [document.document], + }); if (didSend) { const fileBuffer = Buffer.from(templateData.html); diff --git a/services/apps/alcs/src/providers/email/email.service.ts b/services/apps/alcs/src/providers/email/email.service.ts index eccac508bd..5a0394348d 100644 --- a/services/apps/alcs/src/providers/email/email.service.ts +++ b/services/apps/alcs/src/providers/email/email.service.ts @@ -102,7 +102,7 @@ export class EmailService { parentId?: string; triggerStatus?: string; attachments?: Document[]; - }) { + }): Promise { const serviceUrl = this.config.get('CHES.URL'); const from = this.config.get('CHES.FROM'); const token = await this.getToken(); @@ -134,7 +134,7 @@ export class EmailService { { to, body, subject, cc, bcc }, 'EmailService did not send the email. Set CHES.MODE to production if you need to send an email.', ); - return; + return false; } const res = await firstValueFrom( this.httpService.post<{