public User Create(string email, string plainTextPassword) { var query = new FindUserByEmailQuery(email); var existingUser = _queryExecutor.Execute(query); if (existingUser.Count > 0) { throw new EmailAddressAlreadyTakenException(); } var hashedPassword = _passwordHashingService.SaltAndHash(plainTextPassword); var user = User.Register(email, hashedPassword, _clock.UtcNow); _userRepository.Add(user); return(user); }