feat: add pos item ticket
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

pull/115/head 1.2.1-alpha.1
shancheas 2024-11-13 16:49:05 +07:00
parent af9818d44c
commit 9805b9903a
4 changed files with 56 additions and 0 deletions

View File

@ -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({

View File

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

View File

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

View File

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