diff --git a/src/modules/queue/data/services/ticket.service.ts b/src/modules/queue/data/services/ticket.service.ts index 7d85aac..e14150d 100644 --- a/src/modules/queue/data/services/ticket.service.ts +++ b/src/modules/queue/data/services/ticket.service.ts @@ -117,6 +117,20 @@ export class TicketDataService extends BaseDataService { }); } + async queuePosTickets(order_id: string): Promise { + return this.repo.find({ + relations: [ + 'items', + 'items.queue', + 'items.item', + 'items.item.item_queue', + ], + where: { + order_id, + }, + }); + } + async queueTickets(order_id: string): Promise { const order = await this.orderIds(order_id); return this.repo.find({ diff --git a/src/modules/queue/domain/queue.orchestrator.ts b/src/modules/queue/domain/queue.orchestrator.ts index b1621db..660d5e2 100644 --- a/src/modules/queue/domain/queue.orchestrator.ts +++ b/src/modules/queue/domain/queue.orchestrator.ts @@ -20,6 +20,7 @@ import { LoginQueueDto } from '../infrastructure/controllers/dto/login-queue.dto import * as moment from 'moment'; import { CustomerQueueTicketSummaryManager } from './usecases/queue/customer-queue-ticket.manager'; import { TransactionDataService } from 'src/modules/transaction/transaction/data/services/transaction-data.service'; +import { CustomerQueuePosItemManager } from './usecases/queue/customer-queue-pos-item.manager'; @Injectable() export class QueueOrchestrator { @@ -85,6 +86,12 @@ export class QueueOrchestrator { return this.splitQueueManager.getResult(); } + async queuePOSTickets(order_id: string): Promise { + const tickets = await this.dataService.queuePosTickets(order_id); + const manager = new CustomerQueuePosItemManager(tickets); + return manager.data; + } + async queueTickets(order_id: string): Promise { const tickets = await this.dataService.queueTickets(order_id); const manager = new CustomerQueueSummaryManager(tickets); diff --git a/src/modules/queue/domain/usecases/queue/customer-queue-pos-item.manager.ts b/src/modules/queue/domain/usecases/queue/customer-queue-pos-item.manager.ts new file mode 100644 index 0000000..9629493 --- /dev/null +++ b/src/modules/queue/domain/usecases/queue/customer-queue-pos-item.manager.ts @@ -0,0 +1,30 @@ +import { CustomerQueueManager } from './customer-queue.manager'; + +export class CustomerQueuePosItemManager extends CustomerQueueManager { + get data() { + const ticket = this.tickets[0]; + const queueItems = this.mergeQueueItems(ticket); + return { + id: ticket.id, + code: ticket.code, + customer: ticket.customer, + phone: ticket.phone, + date: ticket.date, + summary: this.summaryTicket(ticket), + items: queueItems.map((item) => { + return { + id: item.id, + item_queue_id: item.queue_item_id, + title: item.title, + image_url: item.image_url, + summary: { + total_tickets: item.qty, + total_used: this.totalUsedItems(item.queues), + total_queue: this.totalQueueItems(item.queues), + remaining: item.qty - this.totalQueueItems(item.queues), + }, + }; + }), + }; + } +} diff --git a/src/modules/queue/infrastructure/controllers/queue.controller.ts b/src/modules/queue/infrastructure/controllers/queue.controller.ts index b4c2637..65572de 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.queueItems(id); } + @Get(':id/pos-items') + async queuePosItems(@Param('id') id: string): Promise { + return await this.orchestrator.queuePOSTickets(id); + } + @Get(':id/queue') async queueOrderItems(@Param('id') id: string): Promise { return await this.orchestrator.queueOrderItems(id);