public async Task <DynamicContentFolderSearchResult> SearchFoldersAsync(DynamicContentFolderSearchCriteria criteria) { var cacheKey = CacheKey.With(GetType(), "SearchFoldersAsync", criteria.GetCacheKey()); return(await _platformMemoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.AddExpirationToken(DynamicContentFolderCacheRegion.CreateChangeToken()); var retVal = AbstractTypeFactory <DynamicContentFolderSearchResult> .TryCreateInstance(); using (var repository = _repositoryFactory()) { var query = repository.Folders.Where(x => x.ParentFolderId == criteria.FolderId); if (!string.IsNullOrEmpty(criteria.Keyword)) { query = query.Where(q => q.Name.Contains(criteria.Keyword)); } var sortInfos = criteria.SortInfos; if (sortInfos.IsNullOrEmpty()) { sortInfos = new[] { new SortInfo { SortColumn = ReflectionUtility.GetPropertyName <DynamicContentFolder>(x => x.Name), SortDirection = SortDirection.Ascending } }; } query = query.OrderBySortInfos(sortInfos); retVal.TotalCount = await query.CountAsync(); if (criteria.Take > 0) { var folderIds = await query.Select(x => x.Id).ToArrayAsync(); retVal.Results = await _dynamicContentService.GetFoldersByIdsAsync(folderIds); } } return retVal; })); }
public async Task <DynamicContentFolderSearchResult> SearchFoldersAsync(DynamicContentFolderSearchCriteria criteria) { var cacheKey = CacheKey.With(GetType(), nameof(SearchFoldersAsync), criteria.GetCacheKey()); return(await _platformMemoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.AddExpirationToken(DynamicContentFolderCacheRegion.CreateChangeToken()); var retVal = AbstractTypeFactory <DynamicContentFolderSearchResult> .TryCreateInstance(); using (var repository = _repositoryFactory()) { var sortInfos = BuildSortExpression(criteria); var query = BuildQuery(criteria, repository); retVal.TotalCount = await query.CountAsync(); if (criteria.Take > 0) { var ids = await query.OrderBySortInfos(sortInfos).ThenBy(x => x.Id) .Select(x => x.Id) .Skip(criteria.Skip).Take(criteria.Take) .ToArrayAsync(); retVal.Results = (await _dynamicContentService.GetFoldersByIdsAsync(ids)) .OrderBy(x => Array.IndexOf(ids, x.Id)).ToList(); } } return retVal; })); }
public async Task <ActionResult <coreModel.DynamicContentFolder> > GetDynamicContentFolderById(string id) { var folders = await _dynamicContentService.GetFoldersByIdsAsync(new[] { id }); var retVal = folders.FirstOrDefault(); if (retVal != null) { return(Ok(retVal)); } return(NotFound()); }