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");
        }