예제 #1
0
        public void Expire()
        {
            CheckRule(new UserRegistrationCannotBeExpiredMoreThanOnceRule(_status));

            _status = UserRegistrationStatus.Expired;

            AddDomainEvent(new UserRegistrationExpiredDomainEvent(Id));
        }
예제 #2
0
        public void Confirm()
        {
            CheckRule(new UserRegistrationCannotBeConfirmedMoreThanOnceRule(_status));
            CheckRule(new UserRegistrationCannotBeConfirmedAfterExpirationRule(_status));

            _status        = UserRegistrationStatus.Confirmed;
            _confirmedDate = DateTime.UtcNow;

            AddDomainEvent(new UserRegistrationConfirmedDomainEvent(Id));
        }
예제 #3
0
        private UserRegistration(
            string login,
            string password,
            string email,
            string firstName,
            string lastName,
            IUsersCounter usersCounter)
        {
            CheckRule(new UserEmailMustBeUniqueRule(usersCounter, login));

            Id            = new UserRegistrationId(Guid.NewGuid());
            _login        = login;
            _password     = password;
            _email        = email;
            _firstName    = firstName;
            _lastName     = lastName;
            _name         = $"{firstName} {lastName}";
            _registerDate = DateTime.UtcNow;
            _status       = UserRegistrationStatus.WaitingForConfirmation;

            AddDomainEvent(new NewUserRegisteredDomainEvent(Id, _login, _email, _firstName, _lastName, _name,
                                                            _registerDate));
        }