diff --git a/src/modules/queue/data/models/queue.model.ts b/src/modules/queue/data/models/queue.model.ts index 5fbbebe..c5377f4 100644 --- a/src/modules/queue/data/models/queue.model.ts +++ b/src/modules/queue/data/models/queue.model.ts @@ -57,6 +57,9 @@ export class QueueTicketModel @JoinColumn({ name: 'order_id' }) order: QueueOrder; + @Column('varchar') + order_id: string; + @Column({ type: 'bigint' }) date: number; @@ -65,7 +68,7 @@ export class QueueTicketModel onDelete: 'CASCADE', onUpdate: 'CASCADE', }) - items: QueueItem[]; + items: QueueItemModel[]; } @Entity(TABLE_NAME.QUEUE_ITEM) @@ -85,7 +88,7 @@ export class QueueItemModel @ManyToOne(() => ItemModel) @JoinColumn({ name: 'item_id' }) - item: ItemEntity; + item: ItemModel; @Column('int') qty: number; diff --git a/src/modules/queue/data/services/ticket.service.ts b/src/modules/queue/data/services/ticket.service.ts index 3dd6894..c146531 100644 --- a/src/modules/queue/data/services/ticket.service.ts +++ b/src/modules/queue/data/services/ticket.service.ts @@ -31,4 +31,13 @@ export class TicketDataService extends BaseDataService { }, }); } + + async queueTickets(order_id: string): Promise { + return this.repo.find({ + relations: ['items', 'items.item', 'items.item.item_queue'], + where: { + order_id, + }, + }); + } } diff --git a/src/modules/queue/domain/entities/ticket.entity.ts b/src/modules/queue/domain/entities/ticket.entity.ts index 915990c..e5f60d5 100644 --- a/src/modules/queue/domain/entities/ticket.entity.ts +++ b/src/modules/queue/domain/entities/ticket.entity.ts @@ -9,5 +9,6 @@ export interface QueueTicket extends BaseCoreEntity { phone: string; date: number; order?: QueueOrder; + order_id?: string; items: QueueItem[]; } diff --git a/src/modules/queue/domain/queue.orchestrator.ts b/src/modules/queue/domain/queue.orchestrator.ts index f5d1624..0cc8997 100644 --- a/src/modules/queue/domain/queue.orchestrator.ts +++ b/src/modules/queue/domain/queue.orchestrator.ts @@ -1,6 +1,7 @@ import { Injectable, UnauthorizedException } from '@nestjs/common'; import { TicketDataService } from '../data/services/ticket.service'; import { QueueOrder } from './entities/order.entity'; +import { title } from 'process'; @Injectable() export class QueueOrchestrator { @@ -16,4 +17,21 @@ export class QueueOrchestrator { }); } } + + async queueTickets(order_id: string): Promise { + const tickets = await this.dataService.queueTickets(order_id); + const items = tickets[0].items; + return items.map((item) => { + return { + id: item.id, + title: item.item.name, + qty: item.qty, + available: true, + average: 12, + nearest: '13:10', + crowded_level: 20, + available_time: '15:00', + }; + }); + } } diff --git a/src/modules/queue/infrastructure/controllers/queue.controller.ts b/src/modules/queue/infrastructure/controllers/queue.controller.ts index b1932e1..dbf7198 100644 --- a/src/modules/queue/infrastructure/controllers/queue.controller.ts +++ b/src/modules/queue/infrastructure/controllers/queue.controller.ts @@ -27,4 +27,9 @@ export class QueueController { async loginCustomer(@Param('id') id: string): Promise { return await this.orchestrator.loginCustomer(id); } + + @Get('tickets/:id') + async queueTickets(@Param('id') id: string): Promise { + return await this.orchestrator.queueTickets(id); + } }