fix: only check transaction more than 1 day
continuous-integration/drone/tag Build is passing Details

pull/63/head devel_20.1.25
shancheas 2024-08-09 15:23:20 +07:00
parent acf8861823
commit fe6572a770
2 changed files with 20 additions and 4 deletions

View File

@ -4,10 +4,23 @@ import { Snap } from 'midtrans-client';
import { MidtransStatus } from '../../domain/entities/midtrans-callback.event'; import { MidtransStatus } from '../../domain/entities/midtrans-callback.event';
import { TransactionReadService } from 'src/modules/transaction/transaction/data/services/transaction-read.service'; import { TransactionReadService } from 'src/modules/transaction/transaction/data/services/transaction-read.service';
import * as moment from 'moment';
@Injectable() @Injectable()
export class MidtransService { export class MidtransService {
constructor(private transaction: TransactionReadService) {} constructor(private transaction: TransactionReadService) {}
isMoreThan24HoursAgo(dateString) {
const date = moment(dateString, 'YYYY-MM-DD', true);
if (!date.isValid()) {
return false;
}
const now = moment();
const diffInHours = now.diff(date, 'hours');
return diffInHours > 24;
}
get midtransInstance() { get midtransInstance() {
return new Snap({ return new Snap({
isProduction: false, isProduction: false,
@ -24,14 +37,17 @@ export class MidtransService {
const pendingIds = await this.transaction.getPendingOrderId(); const pendingIds = await this.transaction.getPendingOrderId();
const responses = []; const responses = [];
for (const id of pendingIds) { for (const transaction of pendingIds) {
const { id, invoice_date } = transaction;
let status; let status;
try { try {
status = await this.getStatus(id); status = await this.getStatus(id);
} catch (error) { } catch (error) {
status = { status = {
order_id: id, order_id: id,
transaction_status: 'cancel', transaction_status: this.isMoreThan24HoursAgo(invoice_date)
? 'cancel'
: 'pending',
}; };
} }
responses.push(status); responses.push(status);

View File

@ -25,9 +25,9 @@ export class TransactionReadService extends BaseReadService<TransactionEntity> {
status: STATUS.PENDING, status: STATUS.PENDING,
payment_type: TransactionPaymentType.MIDTRANS, payment_type: TransactionPaymentType.MIDTRANS,
}, },
select: ['id'], select: ['id', 'invoice_date'],
}); });
return transactions.map(({ id }) => id); return transactions;
} }
} }