From b08325a53c6ea06a46fef2a69374317a60fb6caa Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah Date: Fri, 2 Aug 2024 18:59:31 +0700 Subject: [PATCH] fix(email) checkpoint email service --- env/env.development | 7 ++- .../change-date-information.html | 0 .../email-template/invoice-expired.html | 0 .../mail/domain/email-template/invoice.html | 0 .../email-template/refund-confirmation.html | 0 .../domain/email-template/refund-request.html | 0 .../mail/domain/helpers/send-email.helper.ts | 12 ++-- .../mail/infrastructure/mail.controller.ts | 57 +++++++++++++++++++ src/modules/configuration/mail/mail.module.ts | 3 +- 9 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 src/modules/configuration/mail/domain/email-template/change-date-information.html create mode 100644 src/modules/configuration/mail/domain/email-template/invoice-expired.html create mode 100644 src/modules/configuration/mail/domain/email-template/invoice.html create mode 100644 src/modules/configuration/mail/domain/email-template/refund-confirmation.html create mode 100644 src/modules/configuration/mail/domain/email-template/refund-request.html create mode 100644 src/modules/configuration/mail/infrastructure/mail.controller.ts diff --git a/env/env.development b/env/env.development index 6fefe96..db3a60d 100644 --- a/env/env.development +++ b/env/env.development @@ -24,8 +24,11 @@ CRON_EVERY_HOUR="0 * * * *" EMAIL_HOST=smtp.gmail.com EMAIL_POST=465 -EMAIL_USER=developer@eigen.co.id -EMAIL_TOKEN=bitqkbkzjzfywxqx +EMAIL_USER=weplayground.app@gmail.com +EMAIL_TOKEN=sonvvwiukhsevtmv + +// nama email yang akan muncul ke user sebagai pengirim +EMAIL_SENDER=no-reply@eigen.co.id MIDTRANS_URL=https://app.sandbox.midtrans.com MIDTRANS_PRODUCTION=false diff --git a/src/modules/configuration/mail/domain/email-template/change-date-information.html b/src/modules/configuration/mail/domain/email-template/change-date-information.html new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/configuration/mail/domain/email-template/invoice-expired.html b/src/modules/configuration/mail/domain/email-template/invoice-expired.html new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/configuration/mail/domain/email-template/invoice.html b/src/modules/configuration/mail/domain/email-template/invoice.html new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/configuration/mail/domain/email-template/refund-confirmation.html b/src/modules/configuration/mail/domain/email-template/refund-confirmation.html new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/configuration/mail/domain/email-template/refund-request.html b/src/modules/configuration/mail/domain/email-template/refund-request.html new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/configuration/mail/domain/helpers/send-email.helper.ts b/src/modules/configuration/mail/domain/helpers/send-email.helper.ts index c242887..bae519c 100644 --- a/src/modules/configuration/mail/domain/helpers/send-email.helper.ts +++ b/src/modules/configuration/mail/domain/helpers/send-email.helper.ts @@ -20,9 +20,9 @@ export async function sendEmail(receivers, subject) { if (receiver.payment_type == TransactionPaymentType.MIDTRANS) templateName = 'payment-confirmation-midtrans'; - let templatePath = path.resolve( + let templatePath = path.join( __dirname, - `../email-template/${ templateName }.html`, + `../email-template/${templateName}.html`, ); templatePath = templatePath.replace(/dist/g, 'src'); const templateSource = fs.readFileSync(templatePath, 'utf8'); @@ -31,7 +31,7 @@ export async function sendEmail(receivers, subject) { const htmlToSend = template(receiver); const emailContext = { - from: 'no-reply@eigen.co.id', + from: process.env.EMAIL_SENDER ?? 'no-reply@weplayground.app', to: receiver.email, subject: subject, html: htmlToSend, @@ -42,13 +42,13 @@ export async function sendEmail(receivers, subject) { smtpTransport.sendMail(emailContext, function (err, data) { if (err) { - console.log(err, `Error occurs on send to ${ receiver.email }`); + console.log(err, `Error occurs on send to ${receiver.email}`); } else { - console.log(`Email sent to ${ receiver.email }`); + console.log(`Email sent to ${receiver.email}`); } }); } catch (error) { - console.log(error, `Error occurs on send to ${ receiver.email }`) + console.log(error, `Error occurs on send to ${receiver.email}`); } } } diff --git a/src/modules/configuration/mail/infrastructure/mail.controller.ts b/src/modules/configuration/mail/infrastructure/mail.controller.ts new file mode 100644 index 0000000..75e6d82 --- /dev/null +++ b/src/modules/configuration/mail/infrastructure/mail.controller.ts @@ -0,0 +1,57 @@ +import { Controller, Get, Injectable } from '@nestjs/common'; +import { ApiTags } from '@nestjs/swagger'; +import { Public } from 'src/core/guards'; +import * as path from 'path'; +import * as fs from 'fs'; + +@ApiTags(`email templates`) +@Controller('v1/email-templates') +@Public() +@Injectable() +export class MailTemplateController { + constructor() {} + + getTemplate(templateName) { + const templatePath = path.join( + __dirname, + '../../../../../', + `src/modules/configuration/mail/domain/email-template/${templateName}.html`, + ); + return fs.readFileSync(templatePath, 'utf8'); + } + + @Get('date-change') + async getDateChange() { + return this.getTemplate('change-date'); + } + + @Get('invoice') + async getBookingInvoice() { + return this.getTemplate('invoice'); + } + + @Get('payment-confirmation-bank') + async getPaymentConfirmation() { + return this.getTemplate('payment-confirmation-bank'); + } + + @Get('payment-confirmation-midtrans') + async getPaymentConfirmationMidtrans() { + return this.getTemplate('payment-confirmation-midtrans'); + } + + @Get('invoice-expired') + async getInvoiceExpired() { + return this.getTemplate('invoice-expired'); + } + + @Get('refund-confirmation') + async getRefundConfirmation() { + return this.getTemplate('refund-confirmation'); + } + + @Get('refund-request') + async getRefundRequest() { + return this.getTemplate('refunr-request'); + } +} diff --git a/src/modules/configuration/mail/mail.module.ts b/src/modules/configuration/mail/mail.module.ts index 597fc9c..c45d49c 100644 --- a/src/modules/configuration/mail/mail.module.ts +++ b/src/modules/configuration/mail/mail.module.ts @@ -8,6 +8,7 @@ import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; import { TransactionModel } from 'src/modules/transaction/transaction/data/models/transaction.model'; import { TransactionDataService } from 'src/modules/transaction/transaction/data/services/transaction-data.service'; import { PaymentTransactionHandler } from './domain/handlers/payment-transaction.handler'; +import { MailTemplateController } from './infrastructure/mail.controller'; @Module({ imports: [ @@ -18,7 +19,7 @@ import { PaymentTransactionHandler } from './domain/handlers/payment-transaction ), CqrsModule, ], - controllers: [], + controllers: [MailTemplateController], providers: [ PaymentTransactionHandler, PaymentMethodDataService,