public async Task <IActionResult> Post(UserAddDTO userAddDTO)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(BadRequest(Messages.InvalidModel));
         }
         userAddDTO.Password = _util.HashPassword(userAddDTO.Password);
         if ((await _user.CheckUserExist(userAddDTO.UserName, userAddDTO.Password, 0)))
         {
             return(BadRequest(Messages.UserExist));
         }
         return(Ok(await _user.Post(userAddDTO)));
     }
     catch (Exception ex)
     {
         return(BadRequest(Messages.GeneralError));
     }
 }
        public async Task <IActionResult> Login(LoginDTO loginDTO)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(Messages.InvalidModel));
                }
                loginDTO.Password = _util.HashPassword(loginDTO.Password);
                LoginUserDTO userDTO = await _auth.Login(loginDTO);

                if (userDTO != null)
                {
                    var claims = new List <Claim>();
                    claims.Add(new Claim(ClaimTypes.NameIdentifier, userDTO.UserId.ToString()));
                    claims.Add(new Claim(ClaimTypes.Role, userDTO.RoleName.ToString()));

                    var key             = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JWTSettings:SecretKey").Value));
                    var creds           = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
                    var tokenDescriptor = new SecurityTokenDescriptor
                    {
                        Subject            = new ClaimsIdentity(claims),
                        Expires            = DateTime.Now.AddDays(1),
                        SigningCredentials = creds
                    };
                    var    tokenHandler = new JwtSecurityTokenHandler();
                    var    token        = tokenHandler.CreateToken(tokenDescriptor);
                    string tokenValue   = tokenHandler.WriteToken(token);

                    userDTO.Token           = tokenValue;
                    userDTO.TokenExpireDate = tokenDescriptor.Expires?.ToString("MM/dd/yyyy HH:mm:ss");

                    return(Ok(userDTO));
                }
                else
                {
                    return(BadRequest(Messages.LoginFailed));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Error occured"));
            }
        }