private async Task <OutputFolderSearchServiceModel> AttachSubFoldersForSearchAsync( int catalogId, int userId, OutputFolderSearchServiceModel currentFolder, IEnumerable <OutputFolderSearchServiceModel> allFolders) { foreach (var subFolder in allFolders.Where(f => f.ParentId == currentFolder.FolderId)) { if (subFolder.IsPrivate) { var hasPermission = this.dbContext.Permissions .Any(p => p.FolderId == subFolder.FolderId && p.EmployeeId == userId); if (!hasPermission) { continue; } } currentFolder.SubFolders.Add(subFolder); } var userPermissions = await this.permissionsDapper.GetUserFolderPermissionsAsync(catalogId, userId); await this.AttachSubFoldersRecursivelyForSearchAsync( catalogId, userId, currentFolder.SubFolders, allFolders, userPermissions); return(currentFolder); }
private List <int> GetFolderIdsFromCurrentFolder(OutputFolderSearchServiceModel folder, List <int> savedIds) { if (folder is null) { return(savedIds); } savedIds.Add(folder.FolderId); foreach (var subFolder in folder.SubFolders) { savedIds.Add(subFolder.FolderId); savedIds = this.GetFolderIdsFromCurrentFolder(subFolder, savedIds); } return(savedIds); }