public async Task <IActionResult> Register([FromForm] UserDtoAdmin userDtoAdmin)
        {
            try
            {
                var    user = _mapper.Map <User>(userDtoAdmin);
                Random rnd  = new Random();
                user.EmailConfirmationCode = rnd.Next(100000, 1000000);
                var addedUser = await _userService.Create(user, userDtoAdmin.Password);

                var tokenString     = "";
                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim(ClaimTypes.Name, addedUser.Id.ToString())
                    }),
                    Expires            = DateTime.UtcNow.AddDays(365),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var token = tokenHandler.CreateToken(tokenDescriptor);
                tokenString = tokenHandler.WriteToken(token);

                var userDtoUser = _mapper.Map <UserDtoUser>(addedUser);
                userDtoUser.Token = tokenString;
                return(Ok(userDtoUser));
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> UpdateUserInfo([FromForm] UserDtoAdmin userDtoAdmin)
        {
            try
            {
                var updatedUser = await _userService.UpdateUserInfo(userDtoAdmin.Id, userDtoAdmin.UserCookie);

                return(Ok());
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> ResetPassword([FromForm] UserDtoAdmin userDtoAdmin)
        {
            try
            {
                var user = await _userService.ResetPassword(userDtoAdmin.Email, userDtoAdmin.CurrentPassword, userDtoAdmin.Password, userDtoAdmin.ResetCode);

                return(Ok(new {
                    Email = user.Email
                }));
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> CanGuarantee([FromForm] UserDtoAdmin userDtoAdmin)
        {
            var user = await _userService.CanGuarantee(userDtoAdmin.HiDee, userDtoAdmin.UserHiDee);

            if (userDtoAdmin.HiDee.Equals(GlobalVariables.BaseKey()))
            {
                var userDtoAdminn = _mapper.Map <IList <UserDtoAdmin> >(user);
                return(Ok(userDtoAdminn));
            }
            else
            {
                var userDtoUser = _mapper.Map <IList <UserDtoUser> >(user);
                return(Ok(userDtoUser));
            }
        }
        public async Task <IActionResult> RequestVerification([FromForm] UserDtoAdmin userDtoAdmin)
        {
            try
            {
                var email = await _userService.RequestVerification(userDtoAdmin.Email);

                return(Ok(new {
                    Email = email,
                }));
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> RequestResetPassword([FromForm] UserDtoAdmin userDtoAdmin)
        {
            try
            {
                Random rnd = new Random();
                var    verificationCode = rnd.Next(100000, 1000000);
                var    email            = await _userService.RequestPasswordReset(userDtoAdmin.Email, verificationCode);

                return(Ok(new {
                    Email = email,
                }));
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> Delete([FromForm] UserDtoAdmin userDtoAdmin)
        {
            await _userService.Delete(userDtoAdmin.Id);

            return(Ok());
        }