fix(SPG-1035): grouping queue information
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
ac3fde14e3
commit
99d0fc8560
|
@ -1,7 +1,22 @@
|
|||
import { QueueItemModel } from 'src/modules/queue/data/models/queue.model';
|
||||
import {
|
||||
QueueModel,
|
||||
QueueTicketModel,
|
||||
} from 'src/modules/queue/data/models/queue.model';
|
||||
import { CustomerQueueManager } from './customer-queue.manager';
|
||||
|
||||
export class CustomerQueueListManager extends CustomerQueueManager {
|
||||
private ticketToQueues(tickets: QueueTicketModel[]): QueueModel[] {
|
||||
const ticket = tickets.map((ticket) => {
|
||||
const queue = ticket.items.map((item) => {
|
||||
return item.queue;
|
||||
});
|
||||
|
||||
return queue.flat();
|
||||
});
|
||||
|
||||
return ticket.flat();
|
||||
}
|
||||
|
||||
get data() {
|
||||
const tickets = this.tickets;
|
||||
const ticketItems = {};
|
||||
|
@ -10,36 +25,49 @@ export class CustomerQueueListManager extends CustomerQueueManager {
|
|||
ticket.items.forEach((item) => {
|
||||
const item_id = item.item.item_queue?.id ?? item.item.id;
|
||||
const currentItem = ticketItems[item_id];
|
||||
item.ticket = ticket;
|
||||
ticketItems[item_id] = currentItem ? [...currentItem, item] : [item];
|
||||
const ticketQueue = { ...ticket, items: [item] };
|
||||
|
||||
ticketItems[item_id] = currentItem
|
||||
? [...currentItem, ticketQueue]
|
||||
: [ticketQueue];
|
||||
});
|
||||
});
|
||||
|
||||
return Object.values<QueueItemModel[]>(ticketItems).map((items) => {
|
||||
const item = items[0];
|
||||
const item_qty = items.reduce((acc, item) => acc + item.qty, 0);
|
||||
return {
|
||||
id: item.item_id,
|
||||
title: item.item.item_queue?.name ?? item.item.name,
|
||||
image_url: item.item.image_url,
|
||||
qty: item_qty,
|
||||
return Object.keys(ticketItems).map((item_id) => {
|
||||
const tickets: QueueTicketModel[] = ticketItems[item_id];
|
||||
const item = tickets[0].items[0];
|
||||
const uniqueTicket = tickets.filter(
|
||||
(obj1, i, arr) => arr.findIndex((obj2) => obj2.id === obj1.id) === i,
|
||||
);
|
||||
let totalQueue = 0;
|
||||
|
||||
items: items.map((item) => {
|
||||
return {
|
||||
code: item.ticket.code,
|
||||
customer: item.ticket.customer,
|
||||
phone: item.ticket.phone,
|
||||
id: item.ticket.id,
|
||||
queue: item.queue.map((q) => {
|
||||
const currentTickets = uniqueTicket.map((ticket) => {
|
||||
const currentTicket = tickets.filter((t) => t.id === ticket.id);
|
||||
const queues = this.ticketToQueues(currentTicket);
|
||||
const currentQueues = queues.map((q) => {
|
||||
return {
|
||||
code: q.code,
|
||||
qty: q.qty,
|
||||
time: this.toTime(q.time),
|
||||
status: q.status,
|
||||
};
|
||||
}),
|
||||
});
|
||||
totalQueue += currentQueues.length;
|
||||
return {
|
||||
code: ticket.code,
|
||||
customer: ticket.customer,
|
||||
phone: ticket.phone,
|
||||
id: ticket.id,
|
||||
queue: currentQueues,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
return {
|
||||
id: item.item_id,
|
||||
title: item.item.item_queue?.name ?? item.item.name,
|
||||
image_url: item.item.image_url,
|
||||
qty: totalQueue,
|
||||
items: currentTickets,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue