예제 #1
0
        public GenericSearchResult <FulfillmentCenter> SearchCenters(FulfillmentCenterSearchCriteria criteria)
        {
            var result = new GenericSearchResult <FulfillmentCenter>();

            using (var repository = _repositoryFactory())
            {
                repository.DisableChangesTracking();

                var query = repository.FulfillmentCenters;
                if (!string.IsNullOrEmpty(criteria.SearchPhrase))
                {
                    query = query.Where(x => x.Name.Contains(criteria.SearchPhrase));
                }

                var sortInfos = criteria.SortInfos;
                if (sortInfos.IsNullOrEmpty())
                {
                    sortInfos = new[] { new SortInfo {
                                            SortColumn = "Name"
                                        } };
                }

                query = query.OrderBySortInfos(sortInfos).ThenBy(x => x.Id);

                result.TotalCount = query.Count();
                result.Results    = query.Skip(criteria.Skip)
                                    .Take(criteria.Take)
                                    .ToArray()
                                    .Select(x => x.ToModel(AbstractTypeFactory <FulfillmentCenter> .TryCreateInstance()))
                                    .ToList();
            }
            return(result);
        }
        public virtual async Task <FulfillmentCenterSearchResult> SearchCentersAsync(FulfillmentCenterSearchCriteria criteria)
        {
            var cacheKey = CacheKey.With(GetType(), "SearchCentersAsync", criteria.GetCacheKey());

            return(await _platformMemoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) =>
            {
                cacheEntry.AddExpirationToken(FulfillmentCenterCacheRegion.CreateChangeToken());
                var result = AbstractTypeFactory <FulfillmentCenterSearchResult> .TryCreateInstance();
                using (var repository = _repositoryFactory())
                {
                    repository.DisableChangesTracking();

                    var sortInfos = GetSortInfos(criteria);
                    var query = GetFulfillmentCenterQuery(repository, criteria, sortInfos);

                    result.TotalCount = await query.CountAsync();

                    var fulfillmentCenterEntities = new FulfillmentCenterEntity[0];
                    if (criteria.Take > 0)
                    {
                        fulfillmentCenterEntities = await query.Skip(criteria.Skip).Take(criteria.Take).ToArrayAsync();
                    }

                    result.Results = fulfillmentCenterEntities
                                     .Select(x => x.ToModel(AbstractTypeFactory <FulfillmentCenter> .TryCreateInstance()))
                                     .ToList();
                }
                return result;
            }));
        }
        public async Task <ActionResult> SearchFulfillmentCenters([FromBody] FulfillmentCenterSearchCriteria criteria)
        {
            if (criteria != null)
            {
                var result = await _inventoryService.SearchFulfillmentCentersAsync(criteria);

                return(Json(new { TotalCount = result.TotalItemCount, Results = result.ToArray() }));
            }
            return(Ok());
        }
예제 #4
0
        protected virtual IList <SortInfo> GetSortInfos(FulfillmentCenterSearchCriteria criteria)
        {
            var sortInfos = criteria.SortInfos;

            if (sortInfos.IsNullOrEmpty())
            {
                sortInfos = new[] { new SortInfo {
                                        SortColumn = "Name"
                                    } };
            }

            return(sortInfos);
        }
예제 #5
0
        public async Task <IPagedList <FulfillmentCenter> > SearchFulfillmentCentersAsync(FulfillmentCenterSearchCriteria criteria)
        {
            var criteriaDto = new inventoryDto.FulfillmentCenterSearchCriteria
            {
                SearchPhrase = criteria.SearchPhrase,
                Skip         = (criteria.PageNumber - 1) * criteria.PageSize,
                Take         = criteria.PageSize,
                Sort         = criteria.Sort
            };

            var searchResult = await _inventoryApi.SearchFulfillmentCentersAsync(criteriaDto);

            var centers = searchResult.Results.Select(x => x.ToFulfillmentCenter());

            return(new StaticPagedList <FulfillmentCenter>(centers, criteria.PageNumber, criteria.PageSize, searchResult.TotalCount.Value));
        }
예제 #6
0
 public IPagedList <FulfillmentCenter> SearchFulfillmentCenters(FulfillmentCenterSearchCriteria criteria)
 {
     return(Task.Factory.StartNew(() => SearchFulfillmentCentersAsync(criteria), CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
예제 #7
0
        protected virtual IQueryable <FulfillmentCenterEntity> GetFulfillmentCenterQuery(IInventoryRepository repository,
                                                                                         FulfillmentCenterSearchCriteria criteria, IEnumerable <SortInfo> sortInfos)
        {
            var query = repository.FulfillmentCenters;

            if (!string.IsNullOrEmpty(criteria.Keyword))
            {
                query = query.Where(x => x.Name.Contains(criteria.Keyword));
            }

            return(query.OrderBySortInfos(sortInfos));
        }
예제 #8
0
        public async Task <IPagedList <FulfillmentCenter> > SearchFulfillmentCentersAsync(FulfillmentCenterSearchCriteria criteria)
        {
            var cacheKey = CacheKey.With(GetType(), "SearchFulfillmentCenters", criteria.GetCacheKey());

            return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) =>
            {
                cacheEntry.AddExpirationToken(InventoryCacheRegion.CreateChangeToken());
                cacheEntry.AddExpirationToken(_apiChangesWatcher.CreateChangeToken());

                var criteriaDto = new inventoryDto.FulfillmentCenterSearchCriteria
                {
                    SearchPhrase = criteria.SearchPhrase,
                    Skip = (criteria.PageNumber - 1) * criteria.PageSize,
                    Take = criteria.PageSize,
                    Sort = criteria.Sort
                };

                var searchResult = await _inventoryApi.SearchFulfillmentCentersAsync(criteriaDto);
                var centers = searchResult.Results.Select(x => x.ToFulfillmentCenter());
                return new StaticPagedList <FulfillmentCenter>(centers, criteria.PageNumber, criteria.PageSize, searchResult.TotalCount.Value);
            }));
        }
예제 #9
0
 public IPagedList <FulfillmentCenter> SearchFulfillmentCenters(FulfillmentCenterSearchCriteria criteria)
 {
     return(SearchFulfillmentCentersAsync(criteria).GetAwaiter().GetResult());
 }
예제 #10
0
        public async Task <IActionResult> SearchFulfillmentCenters([FromBody] FulfillmentCenterSearchCriteria searchCriteria)
        {
            var retVal = await _fulfillmentCenterSearchService.SearchCentersAsync(searchCriteria);

            return(Ok(retVal));
        }
예제 #11
0
        public IHttpActionResult SearchFulfillmentCenters([FromBody] FulfillmentCenterSearchCriteria searchCriteria)
        {
            var retVal = _commerceSearchService.SearchFulfillmentCenters(searchCriteria);

            return(Ok(retVal));
        }
        // Mock. TODO: write implementation
        public virtual GenericSearchResult <domainModel.FulfillmentCenter> SearchFulfillmentCenters(FulfillmentCenterSearchCriteria criteria)
        {
            using (var repository = _repositoryFactory())
            {
                repository.DisableChangesTracking();

                var query = repository.FulfillmentCenters;

                // TODO

                var sortInfos = criteria.SortInfos;
                if (sortInfos.IsNullOrEmpty())
                {
                    sortInfos = new[] { new SortInfo {
                                            SortColumn = ReflectionUtility.GetPropertyName <dataModel.FulfillmentCenter>(x => x.Name), SortDirection = SortDirection.Descending
                                        } };
                }
                query = query.OrderBySortInfos(sortInfos);

                var result = new GenericSearchResult <domainModel.FulfillmentCenter> {
                    TotalCount = query.Count()
                };
                var fulfillmentIds = query.Select(x => x.Id).Skip(criteria.Skip).Take(criteria.Take).ToArray();
                result.Results = GetFulfillmentCentersById(fulfillmentIds);
                return(result);
            }
        }
예제 #13
0
        public async Task <GenericSearchResult <FulfillmentCenter> > SearchCentersAsync(FulfillmentCenterSearchCriteria criteria)
        {
            var cacheKey = CacheKey.With(GetType(), "SearchCentersAsync", criteria.GetCacheKey());

            return(await _platformMemoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) =>
            {
                cacheEntry.AddExpirationToken(FulfillmentCenterCacheRegion.CreateChangeToken());
                var result = new GenericSearchResult <FulfillmentCenter>();
                using (var repository = _repositoryFactory())
                {
                    repository.DisableChangesTracking();

                    var query = repository.FulfillmentCenters;
                    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 arrayFullfillmentCenters = await query.Skip(criteria.Skip).Take(criteria.Take).ToArrayAsync();
                    result.Results = arrayFullfillmentCenters
                                     .Select(x => x.ToModel(AbstractTypeFactory <FulfillmentCenter> .TryCreateInstance()))
                                     .ToList();
                }
                return result;
            }));
        }