public async Task <ActionResult <ApiResponse> > Renew()
        {
            try
            {
                var buildTokenDTO = new BuildTokenDTO()
                {
                    UserName = User.Identity.Name
                };

                return(ApiResponse.Create(HttpStatusCode.OK, await BuildToken(buildTokenDTO)));
            }
            catch (Exception)
            {
                return(ApiResponse.Create(HttpStatusCode.InternalServerError, null, "InternalServerError_Error"));
            }
        }
        private async Task <UserToken> BuildToken(BuildTokenDTO userinfo)
        {
            List <Claim> claims = new();

            claims.Add(new Claim(ClaimTypes.Name, userinfo.UserName));
            if (!String.IsNullOrEmpty(userinfo.CurrencyId.ToString()))
            {
                claims.Add(new Claim("CurrencyId", userinfo.CurrencyId.ToString()));
            }

            var identityUser = await _userManager.FindByNameAsync(userinfo.UserName);

            var claimsDB = await _userManager.GetClaimsAsync(identityUser);

            var user = await _signInManager.UserManager.FindByNameAsync(userinfo.UserName);

            var rolesDB = await _signInManager.UserManager.GetRolesAsync(user);

            claims.AddRange(claimsDB);
            foreach (var role in rolesDB)
            {
                claims.Add(new Claim(ClaimTypes.Role, role));
            }

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:key"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var expiration = DateTime.UtcNow.AddDays(1);

            JwtSecurityToken token = new JwtSecurityToken(
                issuer: "AD",
                audience: "AD",
                claims: claims,
                expires: expiration,
                signingCredentials: creds);

            return(new UserToken()
            {
                Token = new JwtSecurityTokenHandler().WriteToken(token),
                Expiration = expiration
            });
        }