From 1148a72481a0e73a5b3c4fecb5dbac02a2943c16 Mon Sep 17 00:00:00 2001 From: shancheas Date: Wed, 20 Nov 2024 17:33:00 +0700 Subject: [PATCH] fix: total QR header --- src/modules/queue/data/services/ticket.service.ts | 7 ++----- src/modules/queue/domain/queue.orchestrator.ts | 9 +++++++-- .../domain/usecases/formula/queue-condition.formula.ts | 6 ++++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/modules/queue/data/services/ticket.service.ts b/src/modules/queue/data/services/ticket.service.ts index f2bae21..545f2e9 100644 --- a/src/modules/queue/data/services/ticket.service.ts +++ b/src/modules/queue/data/services/ticket.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { BaseDataService } from 'src/core/modules/data/service/base-data.service'; import { InjectRepository } from '@nestjs/typeorm'; import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; -import { Between, In, IsNull, Not, Repository } from 'typeorm'; +import { Between, In, IsNull, Like, Not, Repository } from 'typeorm'; import { QueueTicket } from '../../domain/entities/ticket.entity'; import { QueueItemModel, @@ -47,11 +47,8 @@ export class TicketDataService extends BaseDataService { async ticketByCode(code: string): Promise { return this.repo.find({ - relations: ['order'], where: { - order: { - code, - }, + code: Like(`${code}%`), }, }); } diff --git a/src/modules/queue/domain/queue.orchestrator.ts b/src/modules/queue/domain/queue.orchestrator.ts index 944cc98..1e96469 100644 --- a/src/modules/queue/domain/queue.orchestrator.ts +++ b/src/modules/queue/domain/queue.orchestrator.ts @@ -37,7 +37,8 @@ export class QueueOrchestrator { async loginCustomer(id: string): Promise { try { const order = await this.dataService.loginQueue(id); - const tickets = await this.dataService.ticketByCode(order.code); + const code = order.tickets[0].code ?? order.code; + const tickets = await this.dataService.ticketByCode(code); order.tickets = tickets; return order; } catch (error) { @@ -52,7 +53,11 @@ export class QueueOrchestrator { const { name, phone } = login; const now = moment().format('DD/MM/YYYY'); try { - return await this.dataService.loginPhone(name, phone); + const order = await this.dataService.loginPhone(name, phone); + const code = order.tickets[0].code ?? order.code; + const tickets = await this.dataService.ticketByCode(code); + order.tickets = tickets; + return order; } catch (error) { throw new UnauthorizedException({ message: `Antrian atas nama ${name} dan nomor telepon ${phone} pada tanggal ${now} tidak ditemukan`, diff --git a/src/modules/queue/domain/usecases/formula/queue-condition.formula.ts b/src/modules/queue/domain/usecases/formula/queue-condition.formula.ts index bf64da0..05f9d28 100644 --- a/src/modules/queue/domain/usecases/formula/queue-condition.formula.ts +++ b/src/modules/queue/domain/usecases/formula/queue-condition.formula.ts @@ -32,10 +32,12 @@ export class QueueCondition { if (queues.length == 0) return 0; const calledQueue = queues.filter((q) => q.status === 'called'); + if (calledQueue.length < 1) return 0; + const times = calledQueue.map((queue) => { - return queue.call_time - queue.time; + return (queue.call_time - queue.time) / 1000; }); - return math.sum(times) / times.length; + return Math.ceil(math.mean(times)); } }