diff --git a/src/modules/restaurants/controllers/restaurants.controller.ts b/src/modules/restaurants/controllers/restaurants.controller.ts index 2fc94e9..4687119 100644 --- a/src/modules/restaurants/controllers/restaurants.controller.ts +++ b/src/modules/restaurants/controllers/restaurants.controller.ts @@ -77,6 +77,7 @@ export class RestaurantsController { @ApiOperation({ summary: 'Create a new restaurant' }) @Post('super-admin/restaurants') createRestaurant(@Body() createRestaurantDto: CreateRestaurantDto) { + console.log('create rest') return this.restaurantsService.create(createRestaurantDto); } diff --git a/src/modules/restaurants/dto/create-restaurant.dto.ts b/src/modules/restaurants/dto/create-restaurant.dto.ts index 6117347..50f1f9d 100644 --- a/src/modules/restaurants/dto/create-restaurant.dto.ts +++ b/src/modules/restaurants/dto/create-restaurant.dto.ts @@ -1,5 +1,6 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsString, IsOptional, IsNumber, IsDate } from 'class-validator'; +import { Type } from 'class-transformer'; export class CreateRestaurantDto { @ApiProperty({ example: 'کافه ژیوان', description: 'نام رستوران' }) @@ -13,22 +14,24 @@ export class CreateRestaurantDto { @ApiPropertyOptional({ example: 2020, description: 'سال تأسیس' }) @IsOptional() @IsNumber() - establishedYear?: number; + establishedYear: number; @ApiPropertyOptional({ example: '09123456789', description: 'شماره تلفن' }) @IsOptional() @IsString() - phone?: string; + phone: string; @ApiProperty({ example: 'sub_1234567890', description: 'شناسه اشتراک' }) @IsString() subscriptionId!: string; @ApiProperty({ example: '2025-12-26', description: 'تاریخ انقضای اشتراک' }) + @Type(() => Date) @IsDate() subscriptionEndDate!: Date; @ApiProperty({ example: '2025-12-26', description: 'تاریخ شروع اشتراک' }) + @Type(() => Date) @IsDate() subscriptionStartDate!: Date; diff --git a/src/modules/restaurants/providers/restaurants.service.ts b/src/modules/restaurants/providers/restaurants.service.ts index 4911c2a..924f2c8 100644 --- a/src/modules/restaurants/providers/restaurants.service.ts +++ b/src/modules/restaurants/providers/restaurants.service.ts @@ -1,4 +1,4 @@ -import { Injectable, NotFoundException } from '@nestjs/common'; +import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; import { CreateRestaurantDto } from '../dto/create-restaurant.dto'; import { UpdateRestaurantDto } from '../dto/update-restaurant.dto'; import { Restaurant } from '../entities/restaurant.entity'; @@ -17,6 +17,14 @@ export class RestaurantsService { ) { } async create(dto: CreateRestaurantDto): Promise { + const validateSlug = await this.em.findOne(Restaurant, { slug: dto.slug }) + if (validateSlug) { + throw new BadRequestException("Duplicate slug: " + dto.slug) + } + const validateSubscriptionId = await this.em.findOne(Restaurant, { subscriptionId: dto.subscriptionId }) + if (validateSubscriptionId) { + throw new BadRequestException("Duplicate subscriptionId: " + dto.subscriptionId) + } const restaurant = this.em.create(Restaurant, { name: dto.name, slug: dto.slug,