From 58e062dd6cf01c7fcf626ecffe34f311f449a454 Mon Sep 17 00:00:00 2001 From: shancheas Date: Thu, 26 Jun 2025 13:54:30 +0700 Subject: [PATCH] fix(SPG-1218): sync midtrans status --- .../data/services/midtrans.service.ts | 23 +++++++++++++++---- .../data/services/transaction-read.service.ts | 5 ++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/modules/configuration/midtrans/data/services/midtrans.service.ts b/src/modules/configuration/midtrans/data/services/midtrans.service.ts index 713697b..6cf5ef9 100644 --- a/src/modules/configuration/midtrans/data/services/midtrans.service.ts +++ b/src/modules/configuration/midtrans/data/services/midtrans.service.ts @@ -21,6 +21,19 @@ export class MidtransService { return diffInHours > 24; } + isCreatedMoreThan24HoursAgo(unixTimestamp) { + const date = moment.unix(unixTimestamp); + const now = moment(); + const diffInHours = now.diff(date, 'hours'); + return diffInHours > 24; + } + + isBookingDateExpired(bookingDate) { + const bookingDateMoment = moment(bookingDate); + const today = moment().startOf('day'); + return bookingDateMoment.isBefore(today); + } + get midtransInstance() { return new Snap({ isProduction: false, @@ -38,16 +51,18 @@ export class MidtransService { const responses = []; for (const transaction of pendingIds) { - const { id, invoice_date } = transaction; + const { id, booking_date, created_at } = transaction; let status; try { status = await this.getStatus(id); } catch (error) { status = { order_id: id, - transaction_status: this.isMoreThan24HoursAgo(invoice_date) - ? 'cancel' - : 'pending', + transaction_status: + this.isCreatedMoreThan24HoursAgo(created_at) || + this.isBookingDateExpired(booking_date) + ? 'expired' + : 'pending', }; } responses.push(status); diff --git a/src/modules/transaction/transaction/data/services/transaction-read.service.ts b/src/modules/transaction/transaction/data/services/transaction-read.service.ts index eefa87a..0bd20b3 100644 --- a/src/modules/transaction/transaction/data/services/transaction-read.service.ts +++ b/src/modules/transaction/transaction/data/services/transaction-read.service.ts @@ -8,7 +8,7 @@ import { } from 'src/core/strings/constants/base.constants'; import { Repository } from 'typeorm'; import { BaseReadService } from 'src/core/modules/data/service/base-read.service'; -import { TransactionPaymentType } from '../../constants'; +import { TransactionPaymentType, TransactionType } from '../../constants'; @Injectable() export class TransactionReadService extends BaseReadService { @@ -24,8 +24,9 @@ export class TransactionReadService extends BaseReadService { where: { status: STATUS.PENDING, payment_type: TransactionPaymentType.MIDTRANS, + type: TransactionType.ONLINE, }, - select: ['id', 'invoice_date'], + select: ['id', 'invoice_date', 'created_at', 'booking_date'], }); return transactions;