public async Task <IActionResult> GetDictionaryItems([FromBody] DynamicPropertyDictionaryItemSearchCriteria criteria) { var result = await _dynamicPropertySearchService.SearchDictionaryItemsAsync(criteria); return(Ok(result.Results)); }
public virtual async Task <GenericSearchResult <DynamicPropertyDictionaryItem> > SearchDictionaryItemsAsync(DynamicPropertyDictionaryItemSearchCriteria criteria) { var cacheKey = CacheKey.With(GetType(), "SearchDictionaryItemsAsync", criteria.GetHashCode().ToString()); return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var result = new GenericSearchResult <DynamicPropertyDictionaryItem>(); using (var repository = _repositoryFactory()) { //Optimize performance and CPU usage repository.DisableChangesTracking(); var query = repository.DynamicPropertyDictionaryItems; if (!string.IsNullOrEmpty(criteria.DynamicPropertyId)) { query = query.Where(x => x.PropertyId == criteria.DynamicPropertyId); } if (!string.IsNullOrEmpty(criteria.Keyword)) { query = query.Where(x => x.Name.Contains(criteria.Keyword)); } var sortInfos = criteria.SortInfos; if (sortInfos.IsNullOrEmpty()) { sortInfos = new[] { new SortInfo { SortColumn = "Name" } }; } query = query.OrderBySortInfos(sortInfos); result.TotalCount = await query.CountAsync(); var ids = await query.Skip(criteria.Skip) .Take(criteria.Take) .Select(x => x.Id) .ToListAsync(); var properties = await _dynamicPropertyService.GetDynamicPropertyDictionaryItemsAsync(ids.ToArray()); result.Results = properties.OrderBy(x => ids.IndexOf(x.Id)) .ToList(); } return result; })); }
public DynamicPropertyDictionaryItemSearchCriteriaBuilder() { _searchCriteria = AbstractTypeFactory <DynamicPropertyDictionaryItemSearchCriteria> .TryCreateInstance(); }