From 4dc21c4ebdbac3e7f9f1990fae36a5a0944e8fca Mon Sep 17 00:00:00 2001 From: shancheas Date: Wed, 20 Nov 2024 11:46:19 +0700 Subject: [PATCH] fix(SPG-1036): remove queue if empty --- .../queue/customer-queue-list.manager.ts | 74 ++++++++++--------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/src/modules/queue/domain/usecases/queue/customer-queue-list.manager.ts b/src/modules/queue/domain/usecases/queue/customer-queue-list.manager.ts index ae449f6..2173a35 100644 --- a/src/modules/queue/domain/usecases/queue/customer-queue-list.manager.ts +++ b/src/modules/queue/domain/usecases/queue/customer-queue-list.manager.ts @@ -33,42 +33,48 @@ export class CustomerQueueListManager extends CustomerQueueManager { }); }); - return Object.keys(ticketItems).map((item_id) => { - const tickets: QueueTicketModel[] = ticketItems[item_id]; - const item = tickets[0].items[0]; - const uniqueTicket = tickets.filter( - (obj1, i, arr) => arr.findIndex((obj2) => obj2.id === obj1.id) === i, - ); - let totalQueue = 0; + return Object.keys(ticketItems) + .map((item_id) => { + const tickets: QueueTicketModel[] = ticketItems[item_id]; + const item = tickets[0].items[0]; + const uniqueTicket = tickets.filter( + (obj1, i, arr) => arr.findIndex((obj2) => obj2.id === obj1.id) === i, + ); + let totalQueue = 0; - const currentTickets = uniqueTicket.map((ticket) => { - const currentTicket = tickets.filter((t) => t.id === ticket.id); - const queues = this.ticketToQueues(currentTicket); - const currentQueues = queues.map((q) => { - return { - code: q.code, - qty: q.qty, - time: this.toTime(q.time), - status: q.status, - }; + const currentTickets = uniqueTicket.map((ticket) => { + const currentTicket = tickets.filter((t) => t.id === ticket.id); + const queues = this.ticketToQueues(currentTicket); + const currentQueues = queues.map((q) => { + return { + code: q.code, + qty: q.qty, + time: this.toTime(q.time), + status: q.status, + }; + }); + totalQueue += currentQueues.length; + return currentQueues.length > 0 + ? { + code: ticket.code, + customer: ticket.customer, + phone: ticket.phone, + id: ticket.id, + queue: currentQueues, + } + : null; }); - totalQueue += currentQueues.length; - return { - code: ticket.code, - customer: ticket.customer, - phone: ticket.phone, - id: ticket.id, - queue: currentQueues, - }; - }); - return { - id: item.item_id, - title: item.item.item_queue?.name ?? item.item.name, - image_url: item.item.image_url, - qty: totalQueue, - items: currentTickets, - }; - }); + return currentTickets.filter(Boolean).length > 0 + ? { + id: item.item_id, + title: item.item.item_queue?.name ?? item.item.name, + image_url: item.item.image_url, + qty: totalQueue, + items: currentTickets.filter(Boolean), + } + : null; + }) + .filter(Boolean); } }