private static User ImmutableApply(User state, EventBase @event) { var alreadyRegistered = string.IsNullOrWhiteSpace(state.UserId); return(@event switch { NoopEvent _ => state, RoomAssigned _ => state, UserRegistered registered => alreadyRegistered ? state : new User { UserId = registered.UserId, FirstName = registered.FirstName, LastName = registered.LastName }, UserChangedName changedName => alreadyRegistered ? new User { UserId = changedName.UserId, FirstName = changedName.FirstName, LastName = changedName.LastName, TimesVoted = state.TimesVoted } : state, UserVoted voted => alreadyRegistered ? new User { UserId = state.UserId, FirstName = state.FirstName, LastName = state.LastName, TimesVoted = ++state.TimesVoted } : state, _ => state });
public void Apply(RoomAssigned aggregateEvent) { }