update : setup restuarant

This commit is contained in:
2025-12-27 14:50:34 +03:30
parent 6a762b1624
commit 8f5269186d
5 changed files with 35 additions and 36 deletions
@@ -1,7 +1,7 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsString, IsOptional, IsNumber } from 'class-validator';
export class CreateRestaurantDto {
export class SetupRestaurantDto {
@ApiProperty({ example: 'کافه ژیوان', description: 'نام رستوران' })
@IsString()
name!: string;
@@ -13,12 +13,12 @@ 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()
+2 -2
View File
@@ -9,7 +9,7 @@ import { UpdateIconDto } from "./DTO/update-icon.dto";
import { CreateGroupDto } from "./DTO/create-group.dto";
import { UpdateGroupDto } from "./DTO/update-group.dto";
import { FindRestaurantsDto } from "./DTO/find-restaurants.dto";
import { CreateRestaurantDto } from "./DTO/create-restaurant.dto";
import { SetupRestaurantDto } from "./DTO/create-restaurant.dto";
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
import { PermissionsDec } from "../../common/decorators/permission.decorator";
import { PermissionEnum } from "../users/enums/permission.enum";
@@ -113,7 +113,7 @@ export class DmenuController {
@Post('restaurants')
@ApiOperation({ summary: "Create restaurant" })
createRestaurant(@Body() dto: CreateRestaurantDto, @UserDec("id") userId: string) {
createRestaurant(@Body() dto: SetupRestaurantDto, @UserDec("id") userId: string) {
return this.restaurantService.createRestaurant(dto, userId);
}
@@ -2,3 +2,15 @@ export enum PlanEnum {
Base = 'base',
Premium = 'premium',
}
export interface ISetupRestaurant {
name: string;
slug: string;
establishedYear: number;
phone: string;
plan: PlanEnum;
subscriptionId: string;
subscriptionEndDate: string|Date;
subscriptionStartDate: string|Date;
}
@@ -7,8 +7,8 @@ import { catchError, firstValueFrom, throwError } from "rxjs";
import { IDmenuConfig } from "../../../configs/icons.config";
import { DMENU_CONFIG } from "../constants";
import { FindRestaurantsDto } from "../DTO/find-restaurants.dto";
import { CreateRestaurantDto } from "../DTO/create-restaurant.dto";
import { PlanEnum } from "../interface/plan.interface";
import { SetupRestaurantDto } from "../DTO/create-restaurant.dto";
import { PlanEnum, ISetupRestaurant } from "../interface/plan.interface";
import { SubscriptionsService } from "../../subscriptions/providers/subscriptions.service";
import { SubscriptionMessage } from "../../../common/enums/message.enum";
@@ -20,7 +20,7 @@ export class RestaurantService {
@Inject(DMENU_CONFIG) private readonly config: IDmenuConfig,
private readonly httpService: HttpService,
private readonly subscriptionService: SubscriptionsService,
) {}
) { }
private getHeaders(): Record<string, string> {
const credentials = Buffer.from(`${this.config.username}:${this.config.password}`).toString("base64");
@@ -71,17 +71,29 @@ export class RestaurantService {
}
}
async createRestaurant(dto: CreateRestaurantDto, userId: string) {
async createRestaurant(dto: SetupRestaurantDto, userId: string) {
const { userSubscription } = await this.subscriptionService.getUserSubscriptionById(dto.userSubscriptionId, userId);
if (!userSubscription) {
throw new BadRequestException(SubscriptionMessage.USER_SUBS_NOT_FOUND);
}
const plan = userSubscription.plan.name.includes('دلیوری') ? PlanEnum.Premium : PlanEnum.Base;
const setupRestaurantDto: ISetupRestaurant = {
name: dto.name,
slug: dto.slug,
establishedYear: dto.establishedYear,
phone: dto.phone,
plan,
subscriptionId: dto.userSubscriptionId,
subscriptionEndDate: userSubscription.endDate,
subscriptionStartDate: userSubscription.startDate,
};
try {
const { data } = await firstValueFrom(
this.httpService
.post(`${this.config.baseUrl}/super-admin/restaurants`, {
...dto,
plan: PlanEnum.Base,
setupRestaurantDto
}, {
headers: this.getHeaders(),
})
@@ -1,25 +0,0 @@
import { Controller, Get, Param } from "@nestjs/common";
import { ApiBearerAuth, ApiOperation, ApiParam, ApiTags } from "@nestjs/swagger";
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
import { PermissionsDec } from "../../common/decorators/permission.decorator";
import { PermissionEnum } from "../users/enums/permission.enum";
import { RestaurantService } from "./providers/restaurant.service";
@ApiTags("super-admin")
@Controller("super-admin")
@AuthGuards()
@PermissionsDec(PermissionEnum.DMENU)
@ApiBearerAuth()
export class SuperAdminController {
constructor(
private readonly restaurantService: RestaurantService,
) {}
@Get('restaurants/subscription/:subscriptionId')
@ApiOperation({ summary: "Get restaurant subscription by subscription ID" })
@ApiParam({ name: "subscriptionId", required: true, type: String })
getRestaurantSubscription(@Param("subscriptionId") subscriptionId: string) {
return this.restaurantService.getRestaurantSubscription(subscriptionId);
}
}