Beispiel #1
0
        public async Task <IActionResult> Index(string cateId, int page = 1, int pageSize = PAGE_SIZE_DEFAULT, string sortby = "")
        {
            if (page < 1)
            {
                page = 1;
            }
            ViewData["categories"] = await _categoryQueries.Gets(CurrentLanguage);

            IEnumerable <ProductHomepageViewModel> products = null;

            if (string.IsNullOrWhiteSpace(cateId))
            {
                ViewData["CateID"] = "";
                products           = await _productHomepageQueries.GetProductAsync(lang : CurrentLanguage);

                if (products == null)
                {
                    return(Redirect("/error"));
                }
            }
            else
            {
                ViewData["CateID"] = cateId;
                IEnumerable <Category> categories = await _categoryQueries.Gets(CurrentLanguage);

                products = await GetProductByCategoryAsync(int.Parse(cateId), categories);

                if (products == null)
                {
                    return(Redirect("/error"));
                }
            }

            ViewData["TotalProduct"] = products.Count();
            ViewData["TotalPage"]    = (int)Math.Ceiling(decimal.Divide(products.Count(), pageSize));
            ViewData["currentPage"]  = page;
            ViewData["pagesize"]     = pageSize;
            ViewData["sortby"]       = sortby;

            switch (sortby)
            {
            case "price-low-to-high":
                products = products.OrderBy(x => x.SellingCurrentPrice);
                break;

            case "price-high-to-low":
                products = products.OrderByDescending(x => x.SellingCurrentPrice);
                break;

            case "product-name":
            default:
                products = products.OrderBy(x => x.Name).ToList();
                break;
            }
            products = products.Skip((page - 1) * pageSize).Take(pageSize).ToList();
            return(View(products));
        }
Beispiel #2
0
 public async Task <APIResult> Gets()
 {
     return(new APIResult()
     {
         Result = 0,
         Data = await categoryQueries.Gets(LoginSession.LanguageCode)
     });
 }