From 525362dce14f3717f0380b504cc9b25ec75d4435 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Wed, 10 Dec 2025 09:58:18 +0330 Subject: [PATCH] bug --- src/modules/pager/pager.controller.ts | 3 +++ src/modules/pager/pager.service.ts | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/modules/pager/pager.controller.ts b/src/modules/pager/pager.controller.ts index bd10515..76be8f7 100644 --- a/src/modules/pager/pager.controller.ts +++ b/src/modules/pager/pager.controller.ts @@ -24,6 +24,7 @@ export class PagerController { @ApiBody({ type: CreatePagerDto }) async create( @Body() createPagerDto: CreatePagerDto, + @Req() request: FastifyRequest, @Res() reply: FastifyReply, @RestSlug() slug: string, @RestId() restId?: string, @@ -32,10 +33,12 @@ export class PagerController { // Convert empty strings to undefined for cleaner validation const normalizedRestId = restId || undefined; const normalizedUserId = userId || undefined; + const userCookieId = request.cookies['pagerId'] || undefined; const pager = await this.pagerService.create(createPagerDto, { restId: normalizedRestId, userId: normalizedUserId, + userCookieId, slug, }); reply.setCookie('pagerId', pager.cookieId, { diff --git a/src/modules/pager/pager.service.ts b/src/modules/pager/pager.service.ts index c285c79..bbb9f84 100644 --- a/src/modules/pager/pager.service.ts +++ b/src/modules/pager/pager.service.ts @@ -17,8 +17,11 @@ export class PagerService { private readonly pagerGateway: PagerGateway, ) {} - async create(createPagerDto: CreatePagerDto, params: { restId?: string; userId?: string; slug: string }) { - const { restId, userId, slug } = params; + async create( + createPagerDto: CreatePagerDto, + params: { restId?: string; userId?: string; slug: string; userCookieId?: string }, + ) { + const { restId, userId, slug, userCookieId } = params; let restaurant: Restaurant | null = null; let user: User | null = null; if (!restId && !userId && !slug) { @@ -42,6 +45,15 @@ export class PagerService { throw new NotFoundException('Restaurant not found'); } } + const cookieId = userCookieId || ulid().toString(); + const existingPager = await this.em.findOne(Pager, { + restaurant: { id: restaurant!.id }, + status: PagerStatus.Pending, + cookieId, + }); + if (existingPager) { + throw new BadRequestException('Pager already exists'); + } const pager = this.em.create(Pager, { ...createPagerDto,