-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
second amendment of discountcoffe project
- Loading branch information
1 parent
18b5f30
commit 9ff0d23
Showing
33 changed files
with
648 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
export * from './qrscan.dto'; |
14 changes: 14 additions & 0 deletions
14
apps/discount-coffe/src/api/admin/qrscan/dto/qrscan.dto.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import { IsNotEmpty, MaxLength, MinLength } from 'class-validator'; | ||
|
||
export class QrScanDto { | ||
@MinLength(3, { | ||
message: 'حداقل کد رزرو میبایست 3 کاراکتر باشد', | ||
}) | ||
@MaxLength(256, { | ||
message: 'حداکثر کد رزرو میبایست 256 کاراکتر باشد', | ||
}) | ||
@IsNotEmpty({ | ||
message: 'کد رزرو نمیتواند خالی باشد', | ||
}) | ||
reserveId: string; | ||
} |
40 changes: 40 additions & 0 deletions
40
apps/discount-coffe/src/api/admin/qrscan/qrscan.controller.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import { | ||
Body, | ||
Controller, | ||
HttpCode, | ||
HttpStatus, | ||
Post, | ||
UseGuards, | ||
UseInterceptors, | ||
} from '@nestjs/common'; | ||
import { CheckPermission } from '@rahino/permission-checker/decorator'; | ||
import { PermissionGuard } from '@rahino/permission-checker/guard'; | ||
import { JsonResponseTransformInterceptor } from '@rahino/response/interceptor'; | ||
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'; | ||
import { JwtGuard } from '@rahino/auth/guard'; | ||
import { GetUser } from '@rahino/auth/decorator'; | ||
import { User } from '@rahino/database/models/core/user.entity'; | ||
import { QrScanDto } from './dto'; | ||
import { QrScanService } from './qrscan.service'; | ||
|
||
@ApiTags('DiscountCoffe-QRScan') | ||
@ApiBearerAuth() | ||
@UseGuards(JwtGuard, PermissionGuard) | ||
@UseInterceptors(JsonResponseTransformInterceptor) | ||
@Controller({ | ||
path: '/api/discountcoffe/admin/qrscans', | ||
version: ['1'], | ||
}) | ||
export class QrScanController { | ||
constructor(private service: QrScanService) {} | ||
|
||
@ApiOperation({ description: 'confirm reserve' }) | ||
@CheckPermission({ | ||
permissionSymbol: 'discountcoffe.admin.qrscan.showmenu', | ||
}) | ||
@Post('/') | ||
@HttpCode(HttpStatus.CREATED) | ||
async confirmReserve(@GetUser() user: User, @Body() dto: QrScanDto) { | ||
return await this.service.confirmReserve(user, dto); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import { Module } from '@nestjs/common'; | ||
import { QrScanController } from './qrscan.controller'; | ||
import { QrScanService } from './qrscan.service'; | ||
import { SequelizeModule } from '@nestjs/sequelize'; | ||
import { User } from '@rahino/database/models/core/user.entity'; | ||
import { Permission } from '@rahino/database/models/core/permission.entity'; | ||
import { BuffetReserve } from '@rahino/database/models/discount-coffe/buffet-reserve.entity'; | ||
import { Buffet } from '@rahino/database/models/discount-coffe/buffet.entity'; | ||
|
||
@Module({ | ||
imports: [ | ||
SequelizeModule.forFeature([User, Permission, BuffetReserve, Buffet]), | ||
], | ||
controllers: [QrScanController], | ||
providers: [QrScanService], | ||
}) | ||
export class QrScanApiModule {} |
52 changes: 52 additions & 0 deletions
52
apps/discount-coffe/src/api/admin/qrscan/qrscan.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
import { BadRequestException, Injectable } from '@nestjs/common'; | ||
import { User } from '@rahino/database/models/core/user.entity'; | ||
import { QrScanDto } from './dto'; | ||
import { InjectModel } from '@nestjs/sequelize'; | ||
import { BuffetReserve } from '@rahino/database/models/discount-coffe/buffet-reserve.entity'; | ||
import { QueryOptionsBuilder } from '@rahino/query-filter/sequelize-query-builder'; | ||
import { Buffet } from '@rahino/database/models/discount-coffe/buffet.entity'; | ||
import { Sequelize } from 'sequelize'; | ||
|
||
@Injectable() | ||
export class QrScanService { | ||
constructor( | ||
@InjectModel(BuffetReserve) | ||
private readonly reserveRepository: typeof BuffetReserve, | ||
@InjectModel(Buffet) | ||
private readonly buffetRepository: typeof Buffet, | ||
) {} | ||
|
||
async confirmReserve(user: User, dto: QrScanDto) { | ||
let reserve = await this.reserveRepository.findOne( | ||
new QueryOptionsBuilder().filter({ uniqueCode: dto.reserveId }).build(), | ||
); | ||
if (!reserve) { | ||
throw new BadRequestException('هیچ رزروی یافت نشد'); | ||
} | ||
const reserveDate = reserve.reserveDate.setHours(0, 0, 0, 0); | ||
const today = new Date().setHours(0, 0, 0, 0); | ||
if (reserveDate != today) { | ||
throw new BadRequestException('تاریخ رزرو برای امروز نیست'); | ||
} | ||
const buffet = await this.buffetRepository.findOne( | ||
new QueryOptionsBuilder() | ||
.filter({ ownerId: user.id }) | ||
.filter({ id: reserve.buffetId }) | ||
.build(), | ||
); | ||
if (!buffet) { | ||
throw new BadRequestException('رزرو کافه برای شما نیست'); | ||
} | ||
reserve = await this.reserveRepository.update( | ||
{ | ||
isQrScan: true, | ||
qrScanDate: Sequelize.fn('getdate'), | ||
qrScanBy: user.id, | ||
}, | ||
{ where: { id: reserve.id } }, | ||
)[1][0]; | ||
return { | ||
result: reserve, | ||
}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
export * from './reserve-filter.dto'; |
8 changes: 8 additions & 0 deletions
8
apps/discount-coffe/src/api/admin/reserve/dto/reserve-filter.dto.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import { IntersectionType } from '@nestjs/swagger'; | ||
import { ReserveDto } from '@rahino/discountCoffe/controller/admin/reservers/dto'; | ||
import { ListFilter } from '@rahino/query-filter'; | ||
|
||
export class ReserveFilterDto extends IntersectionType( | ||
ListFilter, | ||
ReserveDto, | ||
) {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.