private CartModel GetCartFromSession() { CartModel sessionCart = HttpContext.Session.Get <CartModel>(Utility.SessionExtensions.SessionCart); if (sessionCart == null) { string userId = null; string cookieUserId = null; if (User.Identity.IsAuthenticated) { string userName = User.Identity.Name; UserEntity ue = _usersRepo.GetUserByUsername(userName); userId = ue.Id; } else { cookieUserId = HttpContext.Request.Cookies[BaseController.CookieUserId]; } ShoppingCart shoppingCart = _shoppingRepo.GetShoppingCartFromUser(userId, cookieUserId); if (shoppingCart != null) { sessionCart = _mapper.Map <CartModel>(shoppingCart); } else { sessionCart = new CartModel(); } } HttpContext.Session.Set(Utility.SessionExtensions.SessionCart, sessionCart); return(sessionCart); }
public async Task <IActionResult> Login([FromForm] CredentialModel credential) { try { var result = await _signInMgr.PasswordSignInAsync(credential.UserName, credential.Password, false, false); if (result.Succeeded) { CartModel cartFromDb = null; CartModel sessionCart = HttpContext.Session.Get <CartModel>(Utility.SessionExtensions.SessionCart); if (sessionCart == null) { sessionCart = new CartModel(); } UserEntity ue = _usersRepo.GetUserByUsername(credential.UserName); ShoppingCart shoppingCart = _shoppingRepo.GetShoppingCartFromUser(ue.Id, null); if (shoppingCart != null) { cartFromDb = _mapper.Map <CartModel>(shoppingCart); if (cartFromDb != null) { if (sessionCart.Merge(cartFromDb)) { _shoppingRepo.DeleteCart(shoppingCart); } } } sessionCart.UserId = ue.Id; sessionCart.UnauthenticatedUserId = null; ShoppingCart shoppingCartToSave = _mapper.Map <ShoppingCart>(sessionCart); _shoppingRepo.SaveCart(shoppingCartToSave); sessionCart = _mapper.Map <CartModel>(shoppingCartToSave); HttpContext.Session.Set(Utility.SessionExtensions.SessionCart, sessionCart); HttpContext.Response.Cookies.Delete(CookieUserId); if (!string.IsNullOrEmpty(credential.ReturnUrl)) { return(Redirect(credential.ReturnUrl)); } return(RedirectToAction("Index", "Home")); } else { this.AddErrorMessage("Failed to Login"); } } catch (Exception ex) { _logger.LogError(ex, $"Exception thrown while logging in: {ex}"); } return(View());// BadRequest("Failed to login"); }