diff --git a/src/modules/queue/data/models/queue.model.ts b/src/modules/queue/data/models/queue.model.ts index dcdd18c..04ba717 100644 --- a/src/modules/queue/data/models/queue.model.ts +++ b/src/modules/queue/data/models/queue.model.ts @@ -84,6 +84,9 @@ export class QueueItemModel @JoinColumn({ name: 'ticket_id' }) ticket: QueueTicket; + @Column('varchar') + ticket_id: string; + @OneToMany(() => QueueModel, (model) => model.item, { onDelete: 'CASCADE', onUpdate: 'CASCADE', diff --git a/src/modules/queue/data/services/queue.service.ts b/src/modules/queue/data/services/queue.service.ts index 128fa46..e688c7e 100644 --- a/src/modules/queue/data/services/queue.service.ts +++ b/src/modules/queue/data/services/queue.service.ts @@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; import { Repository } from 'typeorm'; -import { QueueModel } from '../models/queue.model'; +import { QueueItemModel, QueueModel } from '../models/queue.model'; import { BaseReadService } from 'src/core/modules/data/service/base-read.service'; import { BaseDataService } from 'src/core/modules/data/service/base-data.service'; @@ -22,7 +22,19 @@ export class QueueService extends BaseDataService { constructor( @InjectRepository(QueueModel, CONNECTION_NAME.DEFAULT) private repo: Repository, + + @InjectRepository(QueueItemModel, CONNECTION_NAME.DEFAULT) + private item: Repository, ) { super(repo); } + + async getTicketItems(ticket_id: string, item_id: string) { + return this.item.findOneOrFail({ + where: { + ticket_id, + item_id, + }, + }); + } } diff --git a/src/modules/queue/domain/queue.orchestrator.ts b/src/modules/queue/domain/queue.orchestrator.ts index 647b770..c876fd3 100644 --- a/src/modules/queue/domain/queue.orchestrator.ts +++ b/src/modules/queue/domain/queue.orchestrator.ts @@ -6,6 +6,7 @@ import { Queue } from './entities/queue.entity'; import { QueueService } from '../data/services/queue.service'; import { RegisterQueueManager } from './usecases/register-queue.manager'; import { TABLE_NAME } from 'src/core/strings/constants/table.constants'; +import { RegisterQueueDto } from '../infrastructure/controllers/dto/register-queue.dto'; @Injectable() export class QueueOrchestrator { @@ -26,8 +27,16 @@ export class QueueOrchestrator { } } - async create(data): Promise { - this.registerQueueManager.setData(data); + async create(data: RegisterQueueDto): Promise { + const queue = await this.queueService.getTicketItems( + data.ticket_id, + data.item_id, + ); + const queueRequest: any = { + qty: data.qty, + item_id: queue.id, + }; + this.registerQueueManager.setData(queueRequest); this.registerQueueManager.setService(this.queueService, TABLE_NAME.QUEUE); await this.registerQueueManager.execute(); return this.registerQueueManager.getResult(); diff --git a/src/modules/queue/domain/usecases/register-queue.manager.ts b/src/modules/queue/domain/usecases/register-queue.manager.ts index 3a258b5..95b40d1 100644 --- a/src/modules/queue/domain/usecases/register-queue.manager.ts +++ b/src/modules/queue/domain/usecases/register-queue.manager.ts @@ -11,7 +11,7 @@ import { QueueModel } from '../../data/models/queue.model'; import { generateRandom } from 'src/modules/transaction/vip-code/domain/usecases/managers/helpers/generate-random.helper'; @Injectable() -export class RegisterQueueManager extends BaseCreateManager { +export class RegisterQueueManager extends BaseCreateManager { async beforeProcess(): Promise { Object.assign(this.data, { status: STATUS.WAITING, diff --git a/src/modules/queue/infrastructure/controllers/dto/register-queue.dto.ts b/src/modules/queue/infrastructure/controllers/dto/register-queue.dto.ts index 6ebc95e..8141b71 100644 --- a/src/modules/queue/infrastructure/controllers/dto/register-queue.dto.ts +++ b/src/modules/queue/infrastructure/controllers/dto/register-queue.dto.ts @@ -7,6 +7,11 @@ export class RegisterQueueDto { @IsNotEmpty() item_id: string; + @ApiProperty({ name: 'ticket_id', required: true }) + @IsString() + @IsNotEmpty() + ticket_id: string; + @ApiProperty({ type: Number, required: true,