public async Task <IActionResult> Login([FromBody] LoginViewModel model)
        {
            IActionResult _result = new ObjectResult(false);
            GenericResult _authenticationResult = null;

            try
            {
                //   var user23 = _userManager.FindByNameAsync(model.Username).Result.Claims;

                var user = await _userManager.FindByNameAsync(model.Username);

                var result = await _userManager.CheckPasswordAsync(user, model.Password);

                if (result)
                {
                    //var adminRole = await _roleManager.FindByNameAsync("Admin");
                    //if (adminRole == null)
                    //{
                    //    adminRole = new IdentityRole("Admin");
                    //    await _roleManager.CreateAsync(adminRole);
                    //}
                    //await _roleManager.AddClaimAsync(adminRole, new Claim(ClaimTypes.Role, "projects.create"));


                    //var accountManagerRole = await _roleManager.FindByNameAsync("Account Manager");

                    //if (accountManagerRole == null)
                    //{
                    //    accountManagerRole = new IdentityRole("Account Manager");
                    //    await _roleManager.CreateAsync(accountManagerRole);

                    //    await _roleManager.AddClaimAsync(accountManagerRole, new Claim(, "account.manage"));
                    //}


                    var principal = _signInManager.CreateUserPrincipalAsync(user).Result.Claims.ToList();

                    var xfd = _userManager.GetClaimsAsync(user).Result;


                    // ClaimsIdentity claim = new ClaimsIdentity();
                    // _signInManager.
                    var now    = DateTime.UtcNow;
                    var claims = new Claim[]
                    {
                        new Claim(JwtRegisteredClaimNames.Sub, model.Username),
                        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                        new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(_jwtOptions.IssuedAt).ToString(), ClaimValueTypes.Integer64),
                    };
                    var claimslist = claims.ToList();
                    foreach (var claim in principal)
                    {
                        claimslist.Add(claim);
                    }
                    ;

                    // Create the JWT security token and encode it.
                    var jwt = new JwtSecurityToken(
                        issuer: _jwtOptions.Issuer,
                        audience: _jwtOptions.Audience,
                        claims: principal,
                        notBefore: _jwtOptions.NotBefore,
                        expires: _jwtOptions.Expiration,
                        signingCredentials: _jwtOptions.SigningCredentials);

                    var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

                    // Serialize and return the response
                    var response = new
                    {
                        access_token = encodedJwt,
                        expires_in   = (int)_jwtOptions.ValidFor.TotalSeconds
                    };


                    if (!String.IsNullOrEmpty(model.TokenFirebase))
                    {
                        user.APPTOKEN = model.TokenFirebase;
                        await _userManager.UpdateAsync(user);
                    }

                    _authenticationResult = new GenericTokenResult()
                    {
                        Succeeded    = true,
                        Message      = "Đăng nhập thành công",
                        access_token = encodedJwt,
                        expires_in   = (int)_jwtOptions.ValidFor.TotalSeconds
                    };
                }
                else
                {
                    _authenticationResult = new GenericTokenResult()
                    {
                        Succeeded    = false,
                        Message      = "Đăng nhập thất bại vui lòng kiểm tra lại thông tin",
                        access_token = null,
                        expires_in   = 0
                    };
                }
            }
            catch (Exception ex)
            {
                _authenticationResult = new GenericResult()
                {
                    Succeeded = false,
                    Message   = ex.Message
                };

                _loggingRepository.Add(new Error()
                {
                    Message = ex.Message, StackTrace = ex.StackTrace, DateCreated = DateTime.Now
                });
                _loggingRepository.Commit();
            }

            _result = new ObjectResult(_authenticationResult);
            return(_result);
        }
        public async Task <IActionResult> Login([FromBody] LoginViewModel model)
        {
            IActionResult _result = new ObjectResult(false);
            GenericResult _authenticationResult = null;

            try
            {
                var user = await _userManager.FindByNameAsync(model.Username);

                var result = await _userManager.CheckPasswordAsync(user, model.Password);

                if (result)
                {
                    var principal = await _signInManager.CreateUserPrincipalAsync(user);

                    // Create the JWT security token and encode it.
                    var jwt = new JwtSecurityToken(
                        issuer: _jwtOptions.Issuer,
                        audience: _jwtOptions.Audience,
                        claims: principal.Claims,
                        notBefore: _jwtOptions.NotBefore,
                        expires: _jwtOptions.Expiration,
                        signingCredentials: _jwtOptions.SigningCredentials);

                    var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

                    // Serialize and return the response
                    var response = new
                    {
                        access_token = encodedJwt,
                        expires_in   = (int)_jwtOptions.ValidFor.TotalSeconds
                    };

                    _authenticationResult = new GenericTokenResult()
                    {
                        Succeeded    = true,
                        Message      = "Authentication succeeded",
                        access_token = encodedJwt,
                        expires_in   = (int)_jwtOptions.ValidFor.TotalSeconds
                    };
                }
                else
                {
                    _authenticationResult = new GenericResult()
                    {
                        Succeeded = false,
                        Message   = "Authentication failed"
                    };
                }
            }
            catch (Exception ex)
            {
                _authenticationResult = new GenericResult()
                {
                    Succeeded = false,
                    Message   = ex.Message
                };

                _loggingRepository.Add(new Error()
                {
                    Message = ex.Message, StackTrace = ex.StackTrace, DateCreated = DateTime.Now
                });
                _loggingRepository.Commit();
            }

            _result = new ObjectResult(_authenticationResult);
            return(_result);
        }