fix(SPG-1044): validate split QR when phone and username exist
parent
cb452cf5f3
commit
4eedca12e7
|
@ -1,4 +1,8 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import {
|
||||
HttpStatus,
|
||||
Injectable,
|
||||
UnprocessableEntityException,
|
||||
} from '@nestjs/common';
|
||||
import {
|
||||
EventTopics,
|
||||
columnUniques,
|
||||
|
@ -9,11 +13,15 @@ import { BaseCreateManager } from 'src/core/modules/domain/usecase/managers/base
|
|||
import { QueueOrderModel } from '../../data/models/queue.model';
|
||||
import { SplitQueueDto } from '../../infrastructure/controllers/dto/split-queue.dto';
|
||||
import { QueueService } from '../../data/services/queue.service';
|
||||
import { TicketDataService } from '../../data/services/ticket.service';
|
||||
|
||||
@Injectable()
|
||||
export class SplitQueueManager extends BaseCreateManager<QueueOrderModel> {
|
||||
private dto: SplitQueueDto;
|
||||
constructor(private readonly queueService: QueueService) {
|
||||
constructor(
|
||||
private readonly queueService: QueueService,
|
||||
private readonly ticketService: TicketDataService,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
|
@ -21,7 +29,25 @@ export class SplitQueueManager extends BaseCreateManager<QueueOrderModel> {
|
|||
this.dto = dto;
|
||||
}
|
||||
|
||||
prepareData(): Promise<void> {
|
||||
async validateProcess(): Promise<void> {
|
||||
await super.validateProcess();
|
||||
const existTickets = await this.ticketService.ticketByUser(
|
||||
this.dto.name,
|
||||
this.dto.phone,
|
||||
);
|
||||
if (existTickets) {
|
||||
throw new UnprocessableEntityException({
|
||||
statusCode: HttpStatus.UNPROCESSABLE_ENTITY,
|
||||
code: 20002,
|
||||
message:
|
||||
'Antrian dengan nama dan nomor telepon sudah terdaftar, silahkan gunakan nomor telepon atau nama lain',
|
||||
error: 'QUEUE_ALREADY_EXIST',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async prepareData(): Promise<void> {
|
||||
const existTickets = await this.ticketService.ticketByCode(this.data.code);
|
||||
const { tickets, ...order } = this.data;
|
||||
const ticket = tickets[0];
|
||||
const items = tickets
|
||||
|
@ -29,6 +55,7 @@ export class SplitQueueManager extends BaseCreateManager<QueueOrderModel> {
|
|||
return ticket.items;
|
||||
})
|
||||
.flat();
|
||||
const postfix = existTickets.length;
|
||||
this.data = {
|
||||
code: order.code,
|
||||
customer: this.dto.name,
|
||||
|
@ -37,7 +64,7 @@ export class SplitQueueManager extends BaseCreateManager<QueueOrderModel> {
|
|||
updated_at: new Date().getTime(),
|
||||
tickets: [
|
||||
{
|
||||
code: `${order.code}-1`,
|
||||
code: `${order.code}-${postfix}`,
|
||||
customer: this.dto.name,
|
||||
phone: this.dto.phone,
|
||||
date: ticket.date,
|
||||
|
|
Loading…
Reference in New Issue