hard delete: restuarant

This commit is contained in:
2026-01-06 09:06:22 +03:30
parent 6732de8066
commit 245e84b877
3 changed files with 44 additions and 1 deletions
@@ -1,5 +1,5 @@
import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsString, IsOptional, IsNumber, IsEnum, IsDate } from 'class-validator';
import { IsString, IsOptional, IsNumber, IsEnum, IsDate, IsBoolean } from 'class-validator';
import { Type } from 'class-transformer';
import { PlanEnum } from '../interface/plan.interface';
@@ -24,6 +24,11 @@ export class UpdateRestaurantDto {
@IsString()
phone?: string;
@ApiPropertyOptional()
@IsOptional()
@IsBoolean()
isActive?: boolean;
@ApiPropertyOptional({ example: 'base', enum: PlanEnum, description: 'پلن رستوران' })
@IsOptional()
@IsEnum(PlanEnum)
+8
View File
@@ -156,6 +156,14 @@ export class DmenuController {
return this.restaurantService.updateRestaurant(id, dto);
}
@PermissionsDec(PermissionEnum.DMENU)
@Delete('admin/dmenu/restaurants/:id/hard-delete')
@ApiOperation({ summary: "Hard delete restaurant" })
@ApiParam({ name: "id", required: true, type: String })
hardDeleteRestaurant(@Param("id") id: string) {
return this.restaurantService.hardDeleteRestaurant(id);
}
@PermissionsDec(PermissionEnum.DMENU)
@Get('admin/dmenu/system-roles')
@ApiOperation({ summary: "Get system roles" })
@@ -402,6 +402,36 @@ export class RestaurantService {
}
}
async hardDeleteRestaurant(id: string) {
try {
const { data } = await firstValueFrom(
this.httpService
.delete(`${this.config.baseUrl}/super-admin/restaurants/${id}/hard-delete`, {
headers: this.getHeaders(),
data: {},
})
.pipe(
catchError((err: AxiosError) => {
this.logger.error(`Failed to hard delete restaurant: ${err.message}`, err.stack);
return throwError(() => err);
}),
),
);
return data;
} catch (error: unknown) {
if (error instanceof AxiosError && error.response) {
this.logger.error(`External API error response:`, error.response.data);
const errorResponse = {
...error.response.data,
message: error.response.data.error?.message || error.message,
};
throw new HttpException(errorResponse, error.response.status);
}
this.logger.error(`Error hard deleting restaurant: ${error instanceof Error ? error.message : "Unknown error"}`);
throw error;
}
}
async directLogin(userSubscriptionId: string, userId: string) {
try {
// 1. Get userSubscription by id