From 8c9d0d658596761deefc15c0934fd5ab2733ffd1 Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah Date: Thu, 18 Jul 2024 12:45:46 +0700 Subject: [PATCH] feat(SPG-423) Midtrans Integration --- .../batch-confirm-data-transaction.manager.ts | 10 ++++---- .../batch-confirm-transaction.manager.ts | 23 +++++++++++++++++++ .../confirm-data-transaction.manager.ts | 10 ++++---- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-data-transaction.manager.ts b/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-data-transaction.manager.ts index 301e158..d3e593a 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-data-transaction.manager.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-data-transaction.manager.ts @@ -30,10 +30,12 @@ export class BatchConfirmDataTransactionManager extends BaseBatchUpdateStatusMan Object.assign(data, { status: STATUS.WAITING, - reconciliation_status: - data.payment_type == TransactionPaymentType.COUNTER - ? null - : STATUS.PENDING, + reconciliation_status: [ + TransactionPaymentType.COUNTER, + TransactionPaymentType.MIDTRANS, + ].includes(data.payment_type) + ? null + : STATUS.PENDING, }); return; diff --git a/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-transaction.manager.ts b/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-transaction.manager.ts index de10bb9..47606d4 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-transaction.manager.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/batch-confirm-transaction.manager.ts @@ -13,9 +13,13 @@ import { UnprocessableEntityException, } from '@nestjs/common'; import { STATUS } from 'src/core/strings/constants/base.constants'; +import { generateInvoiceCodeHelper } from './helpers/generate-invoice-code.helper'; +import { TransactionPaymentType } from '../../../constants'; @Injectable() export class BatchConfirmTransactionManager extends BaseBatchUpdateStatusManager { + protected relations = ['items']; + async validateData(data: TransactionEntity): Promise { if (data.status != STATUS.DRAFT) { throw new UnprocessableEntityException({ @@ -26,7 +30,26 @@ export class BatchConfirmTransactionManager extends BaseBatchUpdateStatusManager } const freeTransaction = data.payment_total < 1; + if (data.payment_type == TransactionPaymentType.MIDTRANS) { + try { + const { token, redirect_url } = await this.dataServiceFirstOpt.create( + data, + ); + Object.assign(data, { + payment_midtrans_token: token, + payment_midtrans_url: redirect_url, + }); + } catch (error) { + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! this transaction already created, please check your email to continue payment`, + error: 'Unprocessable Entity', + }); + } + } + Object.assign(data, { + invoice_code: await generateInvoiceCodeHelper(this.dataService), status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING, }); return; diff --git a/src/modules/transaction/transaction/domain/usecases/managers/confirm-data-transaction.manager.ts b/src/modules/transaction/transaction/domain/usecases/managers/confirm-data-transaction.manager.ts index 07361d8..f860f9e 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/confirm-data-transaction.manager.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/confirm-data-transaction.manager.ts @@ -39,10 +39,12 @@ export class ConfirmDataTransactionManager extends BaseUpdateStatusManager