diff --git a/src/modules/orders/listeners/order.listeners.ts b/src/modules/orders/listeners/order.listeners.ts index 7921143..8a3a2e0 100644 --- a/src/modules/orders/listeners/order.listeners.ts +++ b/src/modules/orders/listeners/order.listeners.ts @@ -110,7 +110,7 @@ export class OrderListeners { restaurantId: event.restaurantId, message: { title: NotifTitleEnum.ORDER_STATUS_CHANGED, - content: `لطفا ثبت نظر سفارش ${event.orderNumber} به اپ مراجعه کنید`, + content: `لطفابرای ثبت نظر سفارش ${event.orderNumber} به اپ مراجعه کنید`, sms: { templateId: this.orderCreatedSmsTemplateId , parameters: { @@ -119,7 +119,7 @@ export class OrderListeners { }, pushNotif: { title: `تغییر وضعیت سفارش`, - content: `لطفا ثبت نظر سفارش ${event.orderNumber} به اپ مراجعه کنید`, + content: `لطفا برای ثبت نظر سفارش ${event.orderNumber} به اپ مراجعه کنید`, icon: `/`, action: { type: NotifTitleEnum.ORDER_STATUS_CHANGED, diff --git a/src/modules/restaurants/controllers/restaurants.controller.ts b/src/modules/restaurants/controllers/restaurants.controller.ts index a9bffed..48d12c1 100644 --- a/src/modules/restaurants/controllers/restaurants.controller.ts +++ b/src/modules/restaurants/controllers/restaurants.controller.ts @@ -34,16 +34,6 @@ export class RestaurantsController { } /** Admin Endpoints */ - @UseGuards(AdminAuthGuard) - @ApiBearerAuth() - @Permissions(Permission.UPDATE_RESTAURANT) - @Post('admin/restaurants') - @ApiOperation({ summary: 'Create a new restaurant' }) - @ApiBody({ type: CreateRestaurantDto }) - create(@Body() createRestaurantDto: CreateRestaurantDto) { - return this.restaurantsService.create(createRestaurantDto); - } - @UseGuards(AdminAuthGuard) @ApiBearerAuth() @@ -81,4 +71,14 @@ export class RestaurantsController { findAll(@Query() dto: FindRestaurantsDto) { return this.restaurantsService.findAll(dto); } + + @UseGuards(SuperAdminAuthGuard) + @ApiBearerAuth() + @ApiOperation({ summary: 'Create a new restaurant' }) + @Post('super-admin/restaurants') + createRestaurant(@Body() createRestaurantDto: CreateRestaurantDto) { + 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 a49388e..060ce50 100644 --- a/src/modules/restaurants/dto/create-restaurant.dto.ts +++ b/src/modules/restaurants/dto/create-restaurant.dto.ts @@ -1,6 +1,5 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; -import { IsString, IsOptional, IsNumber, IsBoolean, IsArray, IsUrl, IsObject, IsEnum } from 'class-validator'; -import { PlanEnum } from '../interface/plan.interface'; +import { IsString, IsOptional, IsNumber } from 'class-validator'; export class CreateRestaurantDto { @ApiProperty({ example: 'کافه ژیوان', description: 'نام رستوران' }) @@ -11,56 +10,6 @@ export class CreateRestaurantDto { @IsString() slug!: string; - @ApiProperty({ example: 'zhivan.example.com', description: 'دامنه رستوران' }) - @IsString() - domain!: string; - - @ApiPropertyOptional({ example: 'https://example.com/logo.png', description: 'آدرس تصویر لوگو' }) - @IsOptional() - @IsUrl() - logo?: string; - - @ApiPropertyOptional({ example: 'تهران، خیابان ولیعصر پلاک ۱۲۳', description: 'آدرس کامل' }) - @IsOptional() - @IsString() - address?: string; - - @ApiPropertyOptional({ example: '#ff6600', description: 'رنگ قالب/منو (hex)' }) - @IsOptional() - @IsString() - menuColor?: string; - - @ApiPropertyOptional({ example: 35.6892, description: 'عرض جغرافیایی (latitude)' }) - @IsOptional() - @IsNumber() - latitude?: number; - - @ApiPropertyOptional({ example: 51.389, description: 'طول جغرافیایی (longitude)' }) - @IsOptional() - @IsNumber() - longitude?: number; - - @ApiPropertyOptional({ - example: { - type: 'Polygon', - coordinates: [ - [ - [51.389, 35.6892], - [51.39, 35.6892], - [51.39, 35.6902], - [51.389, 35.6902], - [51.389, 35.6892], - ], - ], - }, - description: 'محدوده سرویس‌دهی به صورت GeoJSON Polygon', - }) - @IsOptional() - serviceArea?: { - type: 'Polygon'; - coordinates: number[][][]; - }; - @ApiPropertyOptional({ example: 2020, description: 'سال تأسیس' }) @IsOptional() @IsNumber() @@ -71,88 +20,4 @@ export class CreateRestaurantDto { @IsString() phone?: string; - @ApiPropertyOptional({ example: 'https://instagram.com/cafemorteza', description: 'آدرس اینستاگرام' }) - @IsOptional() - @IsUrl() - instagram?: string; - - @ApiPropertyOptional({ example: 'https://t.me/cafemorteza', description: 'آدرس تلگرام' }) - @IsOptional() - @IsUrl() - telegram?: string; - - @ApiPropertyOptional({ example: 'https://wa.me/989123456789', description: 'لینک واتس‌اپ' }) - @IsOptional() - @IsUrl() - whatsapp?: string; - - @ApiPropertyOptional({ example: 'محل دنج با بهترین قهوه شهر.', description: 'توضیحات درباره رستوران' }) - @IsOptional() - @IsString() - description?: string; - - @ApiPropertyOptional({ example: 'بهترین کافه تهران', description: 'عنوان برای SEO' }) - @IsOptional() - @IsString() - seoTitle?: string; - - @ApiPropertyOptional({ example: 'کافه مرتضی ارائه‌دهنده قهوه با کیفیت بالا.', description: 'توضیحات برای SEO' }) - @IsOptional() - @IsString() - seoDescription?: string; - - @ApiPropertyOptional({ example: ['قهوه', 'صبحانه', 'کافه'], description: 'لیست تگ‌های مرتبط' }) - @IsOptional() - @IsArray() - tagNames?: string[]; - - @ApiPropertyOptional({ - example: ['https://example.com/image1.jpg', 'https://example.com/image2.jpg'], - description: 'لیست آدرس تصاویر رستوران', - type: [String], - }) - @IsOptional() - @IsArray() - @IsUrl({}, { each: true }) - images?: string[]; - - @ApiPropertyOptional({ example: true, description: 'آیا رستوران اکنون باز است؟' }) - @IsOptional() - @IsBoolean() - isOpenNow?: boolean; - - @ApiPropertyOptional({ example: 0.09, description: 'نرخ مالیات (مثلاً 0.09 برای 9%)' }) - @IsOptional() - @IsNumber() - vat?: number; - - @ApiPropertyOptional({ - example: { - purchaseAmount: '100000', - purchaseScore: '100000', - scoreAmount: '100000', - scoreCredit: '100000', - birthdayScore: '100000', - registerScore: '100000', - marriageDateScore: '100000', - referrerScore: '100000', - }, - description: 'مشخصات امتیازات', - }) - @IsOptional() - @IsObject() - score?: { - purchaseAmount: string; - purchaseScore: string; - scoreAmount: string; - scoreCredit: string; - birthdayScore: string; - registerScore: string; - marriageDateScore: string; - referrerScore: string; - }; - - @ApiProperty({ example: true, description: 'PlanEnum.Base', enum: PlanEnum }) - @IsEnum(PlanEnum) - plan: PlanEnum; } diff --git a/src/modules/restaurants/providers/restaurants.service.ts b/src/modules/restaurants/providers/restaurants.service.ts index 5787229..57cb9e0 100644 --- a/src/modules/restaurants/providers/restaurants.service.ts +++ b/src/modules/restaurants/providers/restaurants.service.ts @@ -7,6 +7,7 @@ import { RestRepository } from '../repositories/rest.repository'; import { RestMessage } from 'src/common/enums/message.enum'; import { FindRestaurantsDto } from '../dto/find-restaurants.dto'; import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; +import { PlanEnum } from '../interface/plan.interface'; @Injectable() export class RestaurantsService { @@ -17,9 +18,13 @@ export class RestaurantsService { async create(dto: CreateRestaurantDto): Promise { const restaurant = this.em.create(Restaurant, { - ...dto, + name: dto.name, + slug: dto.slug, + establishedYear: dto.establishedYear, + phone: dto.phone, isActive: true, - plan: dto.plan, + plan: PlanEnum.Base, + domain: `https://dmenu-plus-front.dev.danakcorp.com/${dto.slug}`, }); await this.em.persistAndFlush(restaurant);