From ea25e0cae147d309855ef355fc6c6c648f8d81f0 Mon Sep 17 00:00:00 2001 From: shancheas Date: Thu, 21 Nov 2024 10:39:20 +0700 Subject: [PATCH] fix(SPG-1047): merge item queue with same item --- .../queue/data/services/ticket.service.ts | 8 ++++-- .../handlers/transaction.handler.ts | 26 ++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/modules/queue/data/services/ticket.service.ts b/src/modules/queue/data/services/ticket.service.ts index cb5cc57..1fe03ea 100644 --- a/src/modules/queue/data/services/ticket.service.ts +++ b/src/modules/queue/data/services/ticket.service.ts @@ -118,8 +118,12 @@ export class TicketDataService extends BaseDataService { } async deleteQueue(transaction_id: string): Promise { - const transactions = await this.transactions(transaction_id); - await this.order.remove(transactions); + try { + const transactions = await this.transactions(transaction_id); + await this.order.remove(transactions); + } catch (error) { + console.log('transaction not found'); + } } async orderIds(order_id: string): Promise { diff --git a/src/modules/queue/infrastructure/handlers/transaction.handler.ts b/src/modules/queue/infrastructure/handlers/transaction.handler.ts index c1cecc4..57d42ca 100644 --- a/src/modules/queue/infrastructure/handlers/transaction.handler.ts +++ b/src/modules/queue/infrastructure/handlers/transaction.handler.ts @@ -59,6 +59,7 @@ export class QueueTransactionHandler .filter((item) => item.item.use_queue) .map((item) => { return { + item_queue_id: item.item.item_queue_id, item_id: item.item_id, qty: item.qty, }; @@ -69,7 +70,7 @@ export class QueueTransactionHandler customer_phone, ); - const insertTickets = []; + const insertTickets: QueueTicket[] = []; if (customer_name && customer_phone && existTicket) { existTicket.items.push(...items); await this.ticketService.updateQueueTicket(existTicket); @@ -90,18 +91,25 @@ export class QueueTransactionHandler ) { insertTickets.forEach((ticket) => { const ticket_id = ticket.id; + const items = {}; ticket.items.forEach((item) => { - const item_id = item.item_id; + const item_id = item['item_queue_id']; + const currentItem = items[item_id]; - // for (let i = 0; i < item.qty; i++) { - const payload = { - item_id, - ticket_id, - qty: item.qty, - }; + if (currentItem) { + currentItem.qty += item.qty; + } + items[item_id] = currentItem + ? currentItem + : { + item_id, + ticket_id, + qty: item.qty, + }; + }); + Object.values(items).forEach((payload: any) => { this.create(payload); - // } }); }); }