From e1d8975dda9b860dbce5c00a0212a78f9f51c4a1 Mon Sep 17 00:00:00 2001 From: shancheas Date: Thu, 26 Jun 2025 11:27:31 +0700 Subject: [PATCH] fix: update ticket retrieval logic to include booking date in query conditions --- .../queue/data/services/ticket.service.ts | 39 ++++++++++--------- .../domain/usecases/generate-queue.manager.ts | 8 ++-- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/modules/queue/data/services/ticket.service.ts b/src/modules/queue/data/services/ticket.service.ts index 812d4e3..55afd80 100644 --- a/src/modules/queue/data/services/ticket.service.ts +++ b/src/modules/queue/data/services/ticket.service.ts @@ -51,27 +51,28 @@ export class TicketDataService extends BaseDataService { ], }); - // if (!order) { - // const { customer_name, customer_phone } = - // await this.transaction.findOneOrFail({ - // where: { - // id, - // }, - // }); + if (!order) { + const { customer_name, customer_phone } = + await this.transaction.findOneOrFail({ + where: { + id, + booking_date: new Date(), + }, + }); - // const start = moment().startOf('day').valueOf(); - // const end = moment().endOf('day').valueOf(); - // const order = this.order.findOneOrFail({ - // relations: ['tickets'], - // where: { - // customer: customer_name, - // phone: customer_phone, - // date: Between(start, end), - // }, - // }); + const start = moment().startOf('day').valueOf(); + const end = moment().endOf('day').valueOf(); + const order = this.order.findOneOrFail({ + relations: ['tickets'], + where: { + customer: customer_name, + phone: customer_phone, + date: Between(start, end), + }, + }); - // return order; - // } + return order; + } return order; } diff --git a/src/modules/queue/domain/usecases/generate-queue.manager.ts b/src/modules/queue/domain/usecases/generate-queue.manager.ts index 7a5abff..7729f5c 100644 --- a/src/modules/queue/domain/usecases/generate-queue.manager.ts +++ b/src/modules/queue/domain/usecases/generate-queue.manager.ts @@ -27,6 +27,7 @@ export class GenerateQueueManager { async generate(transaction: TransactionModel) { const date = transaction.booking_date ?? transaction.invoice_date; const queue_date = moment(date, 'YYYY-MM-DD').unix(); + const isToday = moment(date, 'YYYY-MM-DD').isSame(moment(), 'day'); const { id, customer_name, customer_phone, invoice_code } = transaction; @@ -40,10 +41,9 @@ export class GenerateQueueManager { const items = this.generateItems(transaction.items); - const existTicket = await this.ticketService.ticketByUser( - customer_name, - customer_phone, - ); + const existTicket = isToday + ? await this.ticketService.ticketByUser(customer_name, customer_phone) + : null; const insertTickets: QueueTicket[] = []; if (customer_name && customer_phone && existTicket) {