コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }