コード例 #1
0
ファイル: User.cs プロジェクト: AdemCatamak/UserManagement
        public static User Create(Email email, IUserIdGenerator userIdGenerator, IUserUniqueChecker userUniqueChecker, IPasswordGenerator passwordGenerator, IPasswordHasher passwordHasher, CancellationToken cancellationToken)
        {
            if (!email.IsValid)
            {
                throw new EmailNotValidException(email);
            }
            bool unique = userUniqueChecker.CheckAsync(email, cancellationToken).GetAwaiter().GetResult();

            if (!unique)
            {
                throw new UserAlreadyExistException(email);
            }

            UserId       userId           = userIdGenerator.Generate();
            Password     password         = passwordGenerator.Generate();
            PasswordHash passwordHash     = passwordHasher.Hash(password);
            var          user             = new User(userId, email, passwordHash, DateTime.UtcNow);
            var          userCreatedEvent = new UserCreatedEvent(user, password);

            user.AddDomainEvent(userCreatedEvent);
            return(user);
        }