public async Task <IActionResult> Login(AppUserRequest model)
        {
            if (model.Email != userEmail)
            {
                countLockout = 0;
            }
            userEmail = model.Email;
            var user = await _userService.FindUser(model.Email);

            ViewBag.ExternaLogin = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (user == null)
            {
                ModelState.AddModelError(string.Empty, "Tài khoản  chưa đăng ký, đăng ký để tiếp tục!");
                return(View());
            }
            else
            {
                if (user.LockoutEnabled)
                {
                    var reusult = await _userService.Login(model);

                    if (reusult)
                    {
                        var login = new LoginRequest
                        {
                            Email        = model.Email,
                            PasswordHash = model.PasswordHash
                        };
                        var token = await _userApiClient.Authenticated(login);

                        HttpContext.Session.SetString("Token", token);
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        countLockout++;
                        if (countLockout >= 5 && user.LockoutEnabled)
                        {
                            await _userService.UpdateLockout(user);

                            ModelState.AddModelError(string.Empty, "Tài khoản đã bị khóa" +
                                                     " vui lòng liên hệ Admin để được hỗ trợ");
                            return(View());
                        }
                        ModelState.AddModelError(string.Empty, "Lưu ý nhập sai 5 lần liên tiếp sẽ khóa tài khoản!");
                        ModelState.AddModelError(string.Empty, "Sai tài khoản hoặc mật khẩu vui lòng nhập lại!");
                        return(View());
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Tài khoản đã bị khóa" +
                                             " vui lòng liên hệ Admin để được hỗ trợ");
                    return(View());
                }
            }
        }
        public async Task <IActionResult> Login(AppUserRequest appUser, string RememberMe)
        {
            var result = await _userService.Login(appUser);

            var user = await _userService.FindUser(appUser.Email);

            if (result)
            {
                if (RememberMe != null)
                {
                    var cookieOptions = new CookieOptions();
                    cookieOptions.Expires = DateTime.Now.AddDays(1);
                    Response.Cookies.Append("userName", user.Email, cookieOptions);
                    Response.Cookies.Append("password", appUser.PasswordHash, cookieOptions);
                }
                else
                {
                    foreach (var cookie in Request.Cookies.Keys)
                    {
                        Response.Cookies.Delete(cookie);
                    }
                }

                await _signInManager.SignInAsync(user, false);

                if (await _userManager.IsInRoleAsync(user, "Admin") || await _userManager.IsInRoleAsync(user, "Manager"))
                {
                    var loginRequest = new LoginRequest
                    {
                        Email        = appUser.Email,
                        PasswordHash = appUser.PasswordHash
                    };
                    var token = await _userApiClient.Authenticated(loginRequest);

                    HttpContext.Session.SetString("Token", token);
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    await _signInManager.SignOutAsync();

                    ModelState.AddModelError(string.Empty, "Tài khoản không có quyền vui lòng liên hệ Admin!");
                    return(View());
                }
            }
            else
            {
                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, "Tài khoản không tồn tại!");
                    return(View());
                }
                else
                {
                    countLockoutAdmin++;
                    if (countLockoutAdmin >= 5 & user.LockoutEnabled)
                    {
                        await _userService.UpdateLockout(user);

                        ModelState.AddModelError(string.Empty, "- Tài khoản đã bị khóa" +
                                                 " vui lòng liên hệ Admin để được hỗ trợ");
                        return(View());
                    }
                    ModelState.AddModelError(string.Empty, "- Sai tài khoản hoặc mật khẩu vui lòng nhập lại!");
                    ModelState.AddModelError(string.Empty, "- Lưu ý nhập sai 5 lần liên tiếp sẽ khóa tài khoản!");
                    return(View());
                }
            }
        }