From ccaa17250d5fd757929df763e8596a6f2364ce00 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 2 May 2024 10:38:07 +0530 Subject: [PATCH] added function in group revamo --- .../services/group_permissions.service.v2.ts | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index fda472945e..16d1bf2db5 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -94,16 +94,28 @@ export class GroupPermissionsServiceV2 { }); } - //Need more work async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto) { + const group = await this.getGroup(id); + const { editable, name } = group; + const { name: newName } = updateGroupPermissionDto; + + if (newName && newName in USER_ROLE) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } + + if (!editable) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } + + if (name in [USER_ROLE.ADMIN, USER_ROLE.END_USER]) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } + return await dbTransactionWrap(async (manager: EntityManager) => { - const group = await this.getGroup(id, manager); const { editable } = group; //add complex logic for only builder // this.validateUpdatePermissions(onlyBuilders,updateGroupPermissionDto); - if (!editable) throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); - - return await manager.delete(GroupPermissions, id); + if (!editable) return await manager.delete(GroupPermissions, id); }); //Is editable only in paid plan builder group } @@ -117,6 +129,16 @@ export class GroupPermissionsServiceV2 { throw new BadRequestException(ERROR_HANDLER.NON_BUILDER_PERMISSION_UPDATE); } + // async getUsersWithRole(role:USER_ROLE):Promise{ + // const manager: EntityManager = getManager(); + // return await manager + // .createQueryBuilder(GroupUsers, 'group_users') + // .innerJoinAndSelect('group_users.group', 'group') + // .where('group.type = :role', { + // versionId: appVersions.map((v) => v.id), + // }) + // } + async getGroup( id: string, manager?: EntityManager,