public async Task <ActionResult> AddProduct(int?id) { if (id != null) { var session = new SessionManager(HttpContext); var curCartAmount = session.GetOrCreateProductList(); var product = _mapper.Map <ProductViewModel> (await _productService.GetProduct(id)); product.Amount = 1; if (curCartAmount.Count == 0) { session.AddProduct(product); } else { foreach (var item in curCartAmount) { if (item.Id == product.Id) { if (await _shoppingCartService.IsEnoughProduct(product.Id, item.Amount)) { session.AddProduct(product); return(RedirectToAction(nameof(GetCart))); } else { return(RedirectToAction("GetProductList", "Product")); } } } foreach (var item in curCartAmount) { if (item.Id != product.Id) { session.AddProduct(product); return(RedirectToAction(nameof(GetCart))); } } } } return(RedirectToAction(nameof(GetCart))); }