public async Task <object> Register([FromBody] UserRegisterModel userRegister)
        {
            ResponseMessageModel message;

            if (userRegister.Password == null || userRegister.Password.Length <= 0)
            {
                userRegister.Password   = PasswordGenerator.GenerateRandomPassword();
                userRegister.RePassword = userRegister.Password;
            }

            if (userRegister.Password != userRegister.RePassword)
            {
                message = new ResponseMessageModel
                {
                    Code         = MessageCode.DATA_VALIDATE_ERROR,
                    ErrorMessage = "Mật khẩu không khớp nhau"
                };
                return(message);
            }
            var user = new ApplicationUser
            {
                Id              = Guid.NewGuid(),
                UserName        = userRegister.UserName,
                PersonalId      = userRegister.PersonalId,
                PasswordChanged = false
            };

            IdentityResult result = await _userManager.CreateAsync(user, userRegister.Password);

            if (result.Succeeded)
            {
                var userInfo = new UserRegistedModel
                {
                    UserName = user.UserName,
                    Id       = user.Id,
                    Password = userRegister.Password
                };
                message = new ResponseMessageModel
                {
                    Code = MessageCode.SUCCESS,
                    Data = userInfo
                };
                return(message);
            }
            //errors occur
            string errorMessage = "";

            foreach (var error in result.Errors)
            {
                errorMessage += error.Description + "\r\n";
            }
            message = new ResponseMessageModel
            {
                Code         = MessageCode.SQL_ACTION_ERROR,
                ErrorMessage = errorMessage
            };
            return(message);
        }
        public async Task <object> ResetPassword(Guid userId)
        {
            ResponseMessageModel message;
            var user = await _userManager.FindByIdAsync(userId.ToString());

            if (user == null)
            {
                message = ResponseMessageModel.CreateResponse(
                    MessageCode.OBJECT_NOT_FOUND,
                    "Không tìm thấy user");
                return(message);
            }

            //generate new password
            string newPassword = PasswordGenerator.GenerateRandomPassword();
            //generate token and reset password
            string token = await _userManager.GeneratePasswordResetTokenAsync(user);

            var result = await _userManager.ResetPasswordAsync(user, token, newPassword);

            if (!result.Succeeded)
            {
                message = ResponseMessageModel.CreateResponse(
                    MessageCode.SQL_ACTION_ERROR,
                    "Không thể khởi tạo password mới");
                return(message);
            }
            //reset success
            var userRegistedModel = new UserRegistedModel
            {
                UserName = user.UserName,
                Id       = user.Id,
                Password = newPassword
            };

            message = ResponseMessageModel.CreateResponse(userRegistedModel);
            return(message);
        }