public async Task DeleteAsync(params string[] ids) { var roleUpdateMessageDto = new RoleUpdateMessageDto { Roles = new List <string>() }; var permissionConfigs = await _dataContext.GetDocumentsAsync <PermissionConfig, PermissionConfig>(q => q.Where(pc => ids.Contains(pc.Id))); foreach (var permissionConfig in permissionConfigs) { if (permissionConfig != null && !permissionConfig.IsDeleted) { permissionConfig.IsDeleted = true; await _dataContext.ReplaceDocumentAsync(permissionConfig); if (permissionConfig.GroupId != "*" && permissionConfig.Permissions.Any(p => p.StartsWith("DEV_CAB"))) { roleUpdateMessageDto.GroupId = permissionConfig.GroupId; if (permissionConfig.Role == "*") { roleUpdateMessageDto.Roles.Clear(); roleUpdateMessageDto.Roles.AddRange(await GetRolesForGroup()); } else if (!roleUpdateMessageDto.Roles.Contains(permissionConfig.Role)) { roleUpdateMessageDto.Roles.Add(permissionConfig.Role); } } } } if (roleUpdateMessageDto.Roles.Any()) { await _platformServiceBusService.TriggerPodAccessDefinitionGenerationAsync(roleUpdateMessageDto); } }