diff --git a/src/modules/queue/data/services/queue.service.ts b/src/modules/queue/data/services/queue.service.ts index c040f38..a67f0c6 100644 --- a/src/modules/queue/data/services/queue.service.ts +++ b/src/modules/queue/data/services/queue.service.ts @@ -68,6 +68,14 @@ export class QueueDataService extends BaseReadService { return queues.filter((q) => q.items.length > 0); } + async allQueue() { + const queues = await this.itemQueueRepo.find({ + relations: ['items'], + }); + + return queues.filter((q) => q.items.length > 0); + } + async lastQueue(item_queue_id: string) { const start = moment().startOf('day').valueOf(); const end = moment().endOf('day').valueOf(); diff --git a/src/modules/queue/domain/queue.orchestrator.ts b/src/modules/queue/domain/queue.orchestrator.ts index bbb25a0..112af5b 100644 --- a/src/modules/queue/domain/queue.orchestrator.ts +++ b/src/modules/queue/domain/queue.orchestrator.ts @@ -187,6 +187,15 @@ export class QueueOrchestrator { return manager.recommend(recommendItems); } + async queueItemSummary(): Promise { + const recommendItems = await this.queueDataService.allQueue(); + const recommendIds = recommendItems.map((item) => item.id); + const queues = await this.queueService.queues(recommendIds); + const manager = new CustomerQueueRecommendManager(null); + manager.currentQueues(queues); + return manager.recommend(recommendItems); + } + async queueItems(order_id: string): Promise { const tickets = await this.dataService.queueTickets(order_id); const queueItemIds = this.getQueueItemFromTickets(tickets); diff --git a/src/modules/queue/infrastructure/controllers/queue.controller.ts b/src/modules/queue/infrastructure/controllers/queue.controller.ts index 5294eb5..e7a12b7 100644 --- a/src/modules/queue/infrastructure/controllers/queue.controller.ts +++ b/src/modules/queue/infrastructure/controllers/queue.controller.ts @@ -71,6 +71,11 @@ export class QueueController { return await this.orchestrator.queueItemRecommendation(id); } + @Get(':id/queue-summary') + async queueItemSummary(): Promise { + return await this.orchestrator.queueItemSummary(); + } + @Get(':id/items') async queueItems(@Param('id') id: string): Promise { return await this.orchestrator.queueItems(id);