public async Task <Result> RegisterAsync(UserRegisterModel userModel) { try { var existingUser = _userRepository.Queryable().FirstOrDefault(x => x.UserName == userModel.UserName); if (existingUser != null) { return(new FailureResult("User is already registered.")); } var userEnt = userModel.Adapt <User>(); userEnt.DateCreated = DateTime.Now; userEnt.Password = getHashPassword(userModel.Password); //insert user await _userRepository.InsertAsync(userEnt); var responseModel = userEnt.Adapt <UserModel>(); //after save user login process and update token coloumn. var tokenResult = await AuthenticateAsync(userModel.UserName, userModel.Password); string token = (tokenResult.Root as AuthModel).Token; await UpdateUserTokenAsync(userEnt, token); responseModel.UserToken = token; responseModel.Password = ""; // for security return(new SuccessResult(responseModel, "User register process is successful.")); } catch (Exception ex) { return(new FailureResult("An error has been occurred ex message : " + ex.Message)); } }