Exemplo n.º 1
0
        public ApiResult <PagedList <ProductBrief> > GetProductList([FromQuery] ProductListInput input)
        {
            var query = new ExpressionQuery <Product>();

            query.And(e => e.StoreId == input.StoreId.ToString());
            query.PageIndex    = (int)input.PageIndex;
            query.PageSize     = (int)input.PageSize;
            query.EnablePaging = true;
            query.OrderByDescending(e => e.Id);
            var list = Resolve <IProductService>().GetPagedList(query);

            if (list.Count < 0)
            {
                return(ApiResult.Success(new PagedList <ProductBrief>()));
            }

            var catDict = Resolve <ICategoryService>().GetList().ToDictionary(c => c.Id);

            var ret = list.Select(prd =>
            {
                var brief = new ProductBrief();

                AutoMapping.SetValue(prd, brief);

                brief.CategoryName = catDict.ContainsKey(prd.CategoryId) ? catDict[prd.CategoryId].Name : "未定义";

                return(brief);
            });

            return(ApiResult.Success(PagedList <ProductBrief> .Create(ret, list.RecordCount, list.PageSize, list.PageIndex)));
        }
Exemplo n.º 2
0
 public IActionResult GetList([FromQuery] ProductListInput input)
 {
     return(Ok(_productService
               .GetSortedFilteredList(input, out var itemCount)
               .Select(ProductListViewModel.GetFromProduct)
               .ToPagedResults(resultCount: itemCount)));
 }
Exemplo n.º 3
0
 public IQueryable <Product> GetSortedFilteredList(ProductListInput input, out int itemCount)
 {
     return(_productRepo.GetAll().FilterSortAndGetPage(
                config: input.AsFilterSortPageConfig(),
                args: input,
                itemCount: out itemCount));
 }
Exemplo n.º 4
0
 public static IFilterSortPageConfig <Product, ProductListInput, int> AsFilterSortPageConfig(this ProductListInput input) =>
 new FilterSortPageConfigBuilder <Product, ProductListInput, int>(
     primaryKeySelector: n => n.Id,
     pageSize: input.pageSize,
     pageNumber: input.pageNumber)
 .WithFiltering(FILTERS)
 .WithSorting(
     sortCriteria: input.sortCriteria ?? DEFAULT_SORT_CRITERIA,
     orderByStringKeySelectors: ORDER_BY_STRING,
     orderByDecimalKeySelectors: ORDER_BY_DECIMAL,
     orderByIntKeySelectors: ORDER_BY_INT
     )
 .Build();