Exemplo n.º 1
0
        public ActionResult List(int categoryId)
        {
            var condition = new ProductClientSearchCondition()
            {
                ProductCategoryId = categoryId,
                PageSize          = Values.ProductClientPageSize,
                PageNumber        = 0,
            };
            var products          = _productService.SearchProducts(condition);
            var bestSellerProduct = _productService.GetHostestProducts(Values.BestSellerNumber);
            var model             = new ProductClientModel()
            {
                Products           = products,
                SearchCondition    = condition,
                BestSellerProducts = bestSellerProduct
            };

            return(View(model));
        }
Exemplo n.º 2
0
        public ActionResult List(ProductClientSearchCondition condition)
        {
            var splits = Regex.Split(condition.Range, " - ");

            condition.MinPrice   = GetPrice(splits[0]);
            condition.MaxPrice   = GetPrice(splits[1]);
            condition.PageSize   = Values.ProductClientPageSize;
            condition.PageNumber = 0;
            var products          = _productService.SearchProducts(condition);
            var bestSellerProduct = _productService.GetHostestProducts(Values.BestSellerNumber);
            var model             = new ProductClientModel()
            {
                Products           = products,
                BestSellerProducts = bestSellerProduct,
                SearchCondition    = condition
            };

            return(View(model));
        }
Exemplo n.º 3
0
        public PageList <ProductModel> SearchProducts(ProductClientSearchCondition condition)
        {
            var query = _shoppingContext.Products.AsNoTracking().Where(w => w.ProductCategoryId == condition.ProductCategoryId);

            if (!string.IsNullOrEmpty(condition.Top))
            {
                if (condition.Top == Trend.Hot.ToString())
                {
                    query = GetHotestProducts(query);
                }
                else if (condition.Top == Trend.New.ToString())
                {
                    query = query.OrderByDescending(p => p.CreatedDateTime);
                }
                else
                {
                    query = query.OrderByDescending(p => p.Name);
                }
            }
            if (!string.IsNullOrEmpty(condition.Name))
            {
                query = query.Where(p => p.Name.ToLower().Contains(condition.Name.ToLower()));
            }

            if (condition.MinPrice >= 0 && condition.MaxPrice >= 0)
            {
                query = query.Where(p => p.Price >= condition.MinPrice && p.Price <= condition.MaxPrice);
            }
            if (condition.Discount > 0)
            {
                query = query.Where(p => p.Promotion >= condition.Discount);
            }
            var products      = query.Skip(condition.PageSize * condition.PageNumber).Take(condition.PageSize).ToList();
            var productModels = Mapper.Map <List <ProductModel> >(products);

            if (!string.IsNullOrEmpty(condition.Top))
            {
                if (condition.Top == Trend.All.ToString())
                {
                    var hostesProductIds = GetHostestProducts(Values.BestSellerNumber).Select(s => s.Id);
                    var minDate          = DateTime.Now.AddDays(-3);
                    foreach (var item in productModels)
                    {
                        if (hostesProductIds.Contains(item.Id))
                        {
                            item.Trend = Trend.Hot.ToString();
                        }
                        else if (item.CreatedDateTime >= minDate)
                        {
                            item.Trend = Trend.New.ToString();
                        }
                        else
                        {
                            item.Trend = Trend.All.ToString();
                        }
                    }
                }
                else
                {
                    productModels.ForEach(x => x.Trend = condition.Top);
                }
            }
            return(new PageList <ProductModel>(productModels, query.Count()));
        }