feat: add pos item ticket
parent
af9818d44c
commit
9805b9903a
|
@ -117,6 +117,20 @@ export class TicketDataService extends BaseDataService<QueueTicket> {
|
|||
});
|
||||
}
|
||||
|
||||
async queuePosTickets(order_id: string): Promise<QueueTicketModel[]> {
|
||||
return this.repo.find({
|
||||
relations: [
|
||||
'items',
|
||||
'items.queue',
|
||||
'items.item',
|
||||
'items.item.item_queue',
|
||||
],
|
||||
where: {
|
||||
order_id,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async queueTickets(order_id: string): Promise<QueueTicketModel[]> {
|
||||
const order = await this.orderIds(order_id);
|
||||
return this.repo.find({
|
||||
|
|
|
@ -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<any> {
|
||||
const tickets = await this.dataService.queuePosTickets(order_id);
|
||||
const manager = new CustomerQueuePosItemManager(tickets);
|
||||
return manager.data;
|
||||
}
|
||||
|
||||
async queueTickets(order_id: string): Promise<any> {
|
||||
const tickets = await this.dataService.queueTickets(order_id);
|
||||
const manager = new CustomerQueueSummaryManager(tickets);
|
||||
|
|
|
@ -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),
|
||||
},
|
||||
};
|
||||
}),
|
||||
};
|
||||
}
|
||||
}
|
|
@ -71,6 +71,11 @@ export class QueueController {
|
|||
return await this.orchestrator.queueItems(id);
|
||||
}
|
||||
|
||||
@Get(':id/pos-items')
|
||||
async queuePosItems(@Param('id') id: string): Promise<void> {
|
||||
return await this.orchestrator.queuePOSTickets(id);
|
||||
}
|
||||
|
||||
@Get(':id/queue')
|
||||
async queueOrderItems(@Param('id') id: string): Promise<void> {
|
||||
return await this.orchestrator.queueOrderItems(id);
|
||||
|
|
Loading…
Reference in New Issue