feat: order tickets
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

pull/115/head 20.2.2-alpha.1
shancheas 2024-10-23 11:56:21 +07:00
parent e9d864c922
commit 01b2796c26
5 changed files with 38 additions and 2 deletions

View File

@ -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;

View File

@ -31,4 +31,13 @@ export class TicketDataService extends BaseDataService<QueueTicket> {
},
});
}
async queueTickets(order_id: string): Promise<QueueTicketModel[]> {
return this.repo.find({
relations: ['items', 'items.item', 'items.item.item_queue'],
where: {
order_id,
},
});
}
}

View File

@ -9,5 +9,6 @@ export interface QueueTicket extends BaseCoreEntity {
phone: string;
date: number;
order?: QueueOrder;
order_id?: string;
items: QueueItem[];
}

View File

@ -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<any> {
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',
};
});
}
}

View File

@ -27,4 +27,9 @@ export class QueueController {
async loginCustomer(@Param('id') id: string): Promise<QueueOrder> {
return await this.orchestrator.loginCustomer(id);
}
@Get('tickets/:id')
async queueTickets(@Param('id') id: string): Promise<void> {
return await this.orchestrator.queueTickets(id);
}
}