예제 #1
0
        public void Apply(UserNameChangedEvent @event)
        {
            Version++;

            UserName = @event.UserName;
            _Properties["UserName"] = UserName;
        }
예제 #2
0
        public void PossibleToLoadFromEvents()
        {
            var user = AggregateCreator.CreateAggregateRoot <User>();

            var created = new UserCreatedEvent()
            {
                UserId    = "3333",
                Email     = "*****@*****.**",
                FirstName = "John",
                LastName  = "Melinda"
            };

            var changed = new UserNameChangedEvent()
            {
                UserId    = "3333",
                FirstName = "John Jr.",
                LastName  = "Melinda III"
            };

            user.LoadFromEvents(new List <IEvent> {
                created, changed
            });

            Assert.AreEqual(user.Id, created.UserId);
            Assert.AreEqual(user.Version, 1);
            Assert.AreEqual(GetPrivateValue <String>(user, "_firstName"), changed.FirstName);
            Assert.AreEqual(GetPrivateValue <String>(user, "_lastName"), changed.LastName);
            Assert.AreEqual(GetPrivateValue <String>(user, "_email"), created.Email);
        }
예제 #3
0
        public void ApplyChangeUserNameEvent()
        {
            var user = new User(Guid.NewGuid());

            var @event = new UserNameChangedEvent(user.Id, 0, "bill");

            user.ApplyEvents(new Event[] { @event });

            user.UserName.Should().Be("bill");
        }
예제 #4
0
        public void ChangeUserName(string newUserName)
        {
            if (!ValidateUserName(newUserName))
            {
                throw new ArgumentException("Username is not valid");
            }

            var @event = new UserNameChangedEvent(Id, Version, newUserName);

            Apply(@event);
            PublishEvent(@event);
        }
예제 #5
0
        public async Task <IActionResult> UpdateUserName([FromBody] UpdateUserNameRequest request)
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound());
            }
            var result = await _userManager.SetUserNameAsync(user, request.UserName);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToValidationProblemDetails()));
            }
            var @event = new UserNameChangedEvent(SingleUserInfo.FromUser(user));
            await _eventService.Publish(@event);

            return(Ok());
        }
예제 #6
0
 private void Handle(UserNameChangedEvent e)
 {
     Name = e.NewName;
 }
예제 #7
0
 private void On(UserNameChangedEvent created)
 {
     _firstName = created.FirstName;
     _lastName  = created.LastName;
 }