From 7c076e32f70f1e9f1ffb53ce5df7a1ed8a5c33ef Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Thu, 26 Feb 2026 18:08:48 +0330 Subject: [PATCH] delete role bug --- src/common/enums/message.enum.ts | 1 + src/modules/roles/providers/roles.service.ts | 14 +++++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index f635400..51e6175 100755 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -522,6 +522,7 @@ export const enum DnsRecordMessage { export const enum RoleMessage { NOT_FOUND = 'نقش یافت نشد', + ROLE_HAS_ADMINS = 'نقش دارای ادمین است و قابل حذف نیست', } export const enum SignatureMessage { diff --git a/src/modules/roles/providers/roles.service.ts b/src/modules/roles/providers/roles.service.ts index 7bb03fd..c13bc4e 100644 --- a/src/modules/roles/providers/roles.service.ts +++ b/src/modules/roles/providers/roles.service.ts @@ -8,6 +8,7 @@ import { EntityManager } from '@mikro-orm/postgresql'; import { CreateRoleDto } from '../dto/create-role.dto'; import { UpdateRoleDto } from '../dto/update-role.dto'; import { RolePermission } from '../entities/rolePermission.entity'; +import { RoleMessage } from 'src/common/enums/message.enum'; @Injectable() export class RolesService { @@ -75,7 +76,7 @@ export class RolesService { async findOneOrFail(id: string) { const role = await this.roleRepository.findOne( { id }, - { populate: ['permissions', 'restaurant'] }, + { populate: ['permissions', 'restaurant','admins'] }, ); if (!role) { throw new NotFoundException('Role not found'); @@ -117,15 +118,10 @@ export class RolesService { } async remove(restId: string, id: string) { - const role = await this.roleRepository.findOne( - { id, restaurant: { id: restId } }, - { populate: ['permissions', 'restaurant'] }, - ); - if (!role) { - throw new NotFoundException('Role not found'); - } + const role = await this.findOne(restId, id); + if (!role.admins.isEmpty()) { - throw new BadRequestException('Role has admins'); + throw new BadRequestException(RoleMessage.ROLE_HAS_ADMINS); } // Hard delete pivot table entries (role_permissions) before soft deleting the role