public ShoppingCardVM GetUserFinishOrderVM(string userId, SearchProductsBM searchProductsBM) { var finishOrderVM = this.GetUserShoppingCardVM(userId, searchProductsBM); if (finishOrderVM == null) { return(null); } var purchasesToBuy = new List <PurchaseVM>(); foreach (var purchase in finishOrderVM.Purchases) { if (purchase.Quantity > 0 && purchase.Product.Quantity >= purchase.Quantity) { purchasesToBuy.Add(purchase); } } finishOrderVM.Purchases = purchasesToBuy; finishOrderVM.Total = purchasesToBuy.Sum(p => p.Value); if (finishOrderVM.Total == 0) { return(null); } return(finishOrderVM); }
public ActionResult UpdateShoppingCart(SearchProductsBM searchProductsBM, int purchaseId, int quantity) { if (!this.service.UpdatePurchaseToUserShoppingCard(this.User.Identity.GetUserId(), purchaseId, quantity)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } return(this.RedirectToAction("ShoppingCart", searchProductsBM)); }
public ActionResult AddProductToShoppingCart(SearchProductsBM searchProductsBM, int productId) { if (!this.service.AddProductToUserShoppingCard(this.User.Identity.GetUserId(), productId)) { return(new HttpStatusCodeResult(HttpStatusCode.NotAcceptable)); } return(this.RedirectToAction("ProductsList", searchProductsBM)); }
public ActionResult FinishOrder(SearchProductsBM searchProductsBM) { var finishOrderVM = this.service.GetUserFinishOrderVM(this.User.Identity.GetUserId(), searchProductsBM); if (finishOrderVM == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } return(this.PartialView("Partials/FinishOrder", finishOrderVM)); }
public ActionResult ProductsList(SearchProductsBM searchProductsBM) { var userId = this.User.Identity.GetUserId(); var productsListVM = this.service.GetProductsListVM(searchProductsBM, userId); if (productsListVM == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } return(this.PartialView("Partials/ProductsList", productsListVM)); }
public ActionResult ShoppingCart(SearchProductsBM searchProductsBM) { var shoppingCardVM = this.service.GetUserShoppingCardVM( this.User.Identity.GetUserId(), searchProductsBM); if (shoppingCardVM == null) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } return(this.PartialView("Partials/ShoppingCart", shoppingCardVM)); }
public ShoppingCardVM GetUserShoppingCardVM(string userId, SearchProductsBM searchProductsBM) { var shopingCard = this.GetUserShoppingCard(userId); var shoppingCardVM = Mapper.Map <ShoppingCardVM>(shopingCard); foreach (var purchase in shoppingCardVM.Purchases) { purchase.Price = purchase.Product.Price; purchase.Value = purchase.Quantity * purchase.Price; } shoppingCardVM.Total = shoppingCardVM.Purchases.Sum(p => p.Value); shoppingCardVM.SearchProductsBM = searchProductsBM; shoppingCardVM.IsAnyPurchaseOnStock = shoppingCardVM.Purchases .Any(pu => pu.Quantity > 0 && pu.Product.Quantity >= pu.Quantity); return(shoppingCardVM); }
public ProductsListVM GetProductsListVM(SearchProductsBM searchBM, string userId) { const int PageSize = 4; var search = new SearchProductsBM { Search = searchBM.Search ?? string.Empty, Page = searchBM.Page, Order = searchBM.Order ?? Constants.Order[0], OrderBy = searchBM.OrderBy ?? Constants.OrderBy[0], SubCategoryId = searchBM.SubCategoryId, CategoryId = searchBM.CategoryId, DepartmentId = searchBM.DepartmentId, OrderList = new SelectList(Constants.Order), OrderByList = new SelectList(Constants.OrderBy) }; var pageNumber = search.Page; if (pageNumber < 1) { pageNumber = 1; } IEnumerable <Product> products; search.SubCategoryId = searchBM.SubCategoryId; if (search.DepartmentId != 0) { products = this.Context.Products.All() .Where(p => p.SubCategory.Category.Department.Id == search.DepartmentId); search.SubCategoryId = 0; search.CategoryId = 0; } else if (search.CategoryId != 0) { products = this.Context.Products.All() .Where(p => p.SubCategory.Category.Id == search.CategoryId); search.SubCategoryId = 0; search.DepartmentId = 0; } else if (search.SubCategoryId != 0) { var subCategory = this.Context.SubCategories.Find(search.SubCategoryId); if (subCategory == null) { return(null); } products = subCategory.Products; search.DepartmentId = 0; search.CategoryId = 0; } else { products = this.Context.Products.All(); } if (!string.IsNullOrEmpty(search.Search)) { products = products .Where(p => p.Name.ToLower().Contains(search.Search.ToLower())); } if (search.OrderBy == Constants.OrderBy[0]) { products = string.Equals(search.Order, Constants.Order[0]) ? products.OrderBy(p => p.Id) : products.OrderByDescending(p => p.Id); } else if (search.OrderBy == Constants.OrderBy[1]) { products = string.Equals(search.Order, Constants.Order[0]) ? products.OrderBy(p => p.Name) : products.OrderByDescending(p => p.Name); } else if (search.OrderBy == Constants.OrderBy[2]) { products = string.Equals(search.Order, Constants.Order[0]) ? products.OrderBy(p => p.Price) : products.OrderByDescending(p => p.Price); } var productVms = products .Skip((pageNumber - 1) * PageSize) .Take(PageSize) .ToList() .Select(Mapper.Map <DetailsProductVM>); var productsCount = products.Count(); var pageCount = productsCount / PageSize + (productsCount % PageSize > 0 ? 1 : 0); search.PageCount = pageCount; search.Page = pageNumber; var productsInUserShoppingCart = this.GetUserShoppingCard(userId)?.Purchases.Count ?? 0; var result = new ProductsListVM { Products = productVms, SearchProductsBM = search, UserProductsInShoppingCart = productsInUserShoppingCart }; return(result); }