feat: cancel order, delete queue
continuous-integration/drone/push Build is passing Details

pull/115/head
shancheas 2024-11-13 15:48:54 +07:00
parent 2bcd7a34fb
commit af9818d44c
5 changed files with 48 additions and 2 deletions

View File

@ -41,7 +41,7 @@ export class QueueBucketReadService extends BaseReadService<QueueBucketModel> {
if (!queue) {
const regularNumber = vip ? 0 : 1;
const vipNumber = vip ? 1 : 0;
this.repo.save({
await this.repo.save({
queue_item_id: queueItem.item.item_queue_id ?? queueItem.item.id,
date: start,
regular: regularNumber,

View File

@ -70,6 +70,29 @@ export class TicketDataService extends BaseDataService<QueueTicket> {
return [order];
}
async transactions(transaction_id: string): Promise<QueueOrderModel[]> {
const order = await this.order.findOneOrFail({
where: {
transaction_id,
},
});
if (order.transaction_id != null) {
return this.order.find({
where: {
code: order.code,
},
});
}
return [order];
}
async deleteQueue(transaction_id: string): Promise<void> {
const transactions = await this.transactions(transaction_id);
await this.order.remove(transactions);
}
async orderIds(order_id: string): Promise<string[]> {
const orders = await this.orders(order_id);

View File

@ -0,0 +1,21 @@
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
import { TransactionChangeStatusEvent } from 'src/modules/transaction/transaction/domain/entities/event/transaction-change-status.event';
import { TicketDataService } from '../../data/services/ticket.service';
@EventsHandler(TransactionChangeStatusEvent)
export class QueueTransactionCancelHandler
implements IEventHandler<TransactionChangeStatusEvent>
{
constructor(private queueService: TicketDataService) {}
async handle(event: TransactionChangeStatusEvent) {
const process_data = event.data.data;
/**
* If data still in process (not settled) then don't create the queue order
*/
if (!['cancel', 'rejected'].includes(process_data?.status)) return;
this.queueService.deleteQueue(event.data.id);
}
}

View File

@ -31,6 +31,7 @@ import { RegisterQueueManager } from './domain/usecases/register-queue.manager';
import { QueueBucketModel } from './data/models/queue-bucket.model';
import { QueueBucketReadService } from './data/services/queue-bucket';
import { SplitQueueManager } from './domain/usecases/split-queue.manager';
import { QueueTransactionCancelHandler } from './infrastructure/handlers/cancel-transaction.handler';
@Module({
imports: [
@ -55,6 +56,7 @@ import { SplitQueueManager } from './domain/usecases/split-queue.manager';
QueueAdminOrchestrator,
QueueTransactionHandler,
QueueTransactionCancelHandler,
TransactionDataService,
TicketDataService,

View File

@ -133,7 +133,7 @@ export class PriceCalculator {
calledVariable = [];
} catch (error) {
calledVariable.push(valueFor);
console.log(error);
console.log(error.message);
}
values[valueFor] = result;