feat: cancel order, delete queue
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
2bcd7a34fb
commit
af9818d44c
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -133,7 +133,7 @@ export class PriceCalculator {
|
|||
calledVariable = [];
|
||||
} catch (error) {
|
||||
calledVariable.push(valueFor);
|
||||
console.log(error);
|
||||
console.log(error.message);
|
||||
}
|
||||
|
||||
values[valueFor] = result;
|
||||
|
|
Loading…
Reference in New Issue