public IActionResult AddToCart(ShoppingCart shoppingCart) { shoppingCart.Id = 0; if (ModelState.IsValid) { var identity = (ClaimsIdentity)this.User.Identity; var claim = identity.FindFirst(ClaimTypes.NameIdentifier); shoppingCart.ApplicationUserId = claim.Value; shoppingCart.CreatedAt = DateTime.Now; shoppingCart.UpdatedAt = DateTime.Now; ShoppingCart cart = _shoppingCart.Find(c => c.ApplicationUserId == shoppingCart.ApplicationUserId && c.ProductId == shoppingCart.ProductId); if (cart == null) { // Any products does not exists. _shoppingCart.Add(shoppingCart); } else { // Product(s) exist(s) in the shopping cart. Therefore this/those can be increased. cart.Count = cart.Count + shoppingCart.Count; shoppingCart.UpdatedAt = DateTime.Now; } _shoppingCart.Save(); var counter = _shoppingCart.Count(c => c.ApplicationUserId == shoppingCart.ApplicationUserId); HttpContext.Session.SetInt32("Counter", counter); return(RedirectToAction(nameof(Show))); } else { var product = _product.FindWithCategory(shoppingCart.ProductId); ShoppingCart sCart = new ShoppingCart() { Product = product, ProductId = product.Id }; return(View(sCart)); } }
public IActionResult Decrease(int id) { var cart = _shoppingCart.Find(id); if (cart.Count == 1) { _shoppingCart.Delete(cart); var counter = _shoppingCart.Count(c => c.ApplicationUserId == cart.ApplicationUserId); HttpContext.Session.SetInt32("Counter", counter); } else { cart.Count -= 1; _shoppingCart.Save(); } return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure : true); if (result.Succeeded) { var user = _user.FindWithEmail(Input.Email); var counter = _shoppingCart.Count(c => c.ApplicationUserId == user.Id); HttpContext.Session.SetInt32("Counter", counter); _logger.LogInformation("User logged in."); return(LocalRedirect(returnUrl)); } if (result.RequiresTwoFactor) { return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe })); } if (result.IsLockedOut) { _logger.LogWarning("User account locked out."); return(RedirectToPage("./Lockout")); } else { ModelState.AddModelError(string.Empty, "Invalid login attempt."); return(Page()); } } // If we got this far, something failed, redisplay form return(Page()); }