fix(SPG-1055): update QR when customer and phone exist
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

pull/115/head 1.2.9-alpha.2
shancheas 2024-11-22 18:51:22 +07:00
parent 7305dfd068
commit f7e3d5399c
1 changed files with 34 additions and 1 deletions

View File

@ -21,7 +21,7 @@ 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';
import { QueueTicketModel } from '../data/models/queue.model';
import { QueueOrderModel, QueueTicketModel } from '../data/models/queue.model';
@Injectable()
export class QueueOrchestrator {
@ -85,6 +85,28 @@ export class QueueOrchestrator {
const queueIds = data.items.map((i) => i.queue_item_id);
const queue = await this.dataService.orderItems(data.order_id, queueIds);
const existTicket = await this.dataService.ticketByUser(
data.name,
data.phone,
);
if (existTicket) {
const itemTickets = this.itemsFromOrder(queue);
const items = data.items.map((item) => {
const item_id = itemTickets[item.queue_item_id];
return {
item_queue_id: item_id,
item_id: item_id,
qty: item.qty,
};
});
existTicket.items.push(...items);
await this.dataService.updateQueueTicket(existTicket);
return queue;
}
this.splitQueueManager.setRequestData(data);
this.splitQueueManager.setData(queue);
this.splitQueueManager.setService(
@ -95,6 +117,17 @@ export class QueueOrchestrator {
return this.splitQueueManager.getResult();
}
itemsFromOrder(order: QueueOrderModel) {
const itemTickets = {};
order.tickets.forEach((ticket) => {
ticket.items.forEach((item) => {
itemTickets[item.id] = item.item_id;
});
});
return itemTickets;
}
async queuePOSTickets(order_id: string): Promise<any> {
const tickets = await this.dataService.queuePosTickets(order_id);
const manager = new CustomerQueuePosItemManager(tickets);