public void CompleteTrackingSession() { foreach (var item in _trackedItems) { UnitOfWorkContext.AddEvent(() => { var updated = item.Operation == ChangeTrackingOperation.Delete ? null : _stateService.GetState(item.TrackedEntity); var result = new EntityStateChangedEvent { CorrelationId = _correlationId, StateChangeType = _userAction, EntityType = item.TrackedEntity.GetType().Name, EntityId = item.TrackedEntity.Id, ProviderId = _providerId, EmployerAccountId = _employerAccountId, InitialState = item.InitialState == null ? null : JsonConvert.SerializeObject(item.InitialState), UpdatedState = updated == null ? null : JsonConvert.SerializeObject(updated), UpdatedOn = DateTime.UtcNow, UpdatingParty = _party, UpdatingUserId = _userInfo?.UserId ?? "Unknown", UpdatingUserName = _userInfo?.UserDisplayName ?? "Unknown" }; return(result); }); } _trackedItems.Clear(); }
public UnitOfWorkContextTestsFixture SetEvents() { var fooEvent = new FooEvent { Created = Now }; var barEvent = new BarEvent { Created = Now }; Events.Add(fooEvent); Events.Add(barEvent); UnitOfWorkContextInstance.AddEvent(fooEvent); UnitOfWorkContextInstance.AddEvent(() => new FooEvent { Created = Now }); UnitOfWorkContext.AddEvent(barEvent); UnitOfWorkContext.AddEvent(() => new BarEvent { Created = Now }); Now = DateTime.UtcNow; return(this); }
public UnitOfWorkContextTestsFixture SetEventsOnSeparateThreads() { var fooEvent = new FooEvent { Created = Now }; var barEvent = new BarEvent { Created = Now }; Events.Add(fooEvent); Events.Add(barEvent); var tasks = new List <Task> { Task.Run(() => { UnitOfWorkContextInstance.AddEvent(fooEvent); UnitOfWorkContextInstance.AddEvent <FooEvent>(e => e.Created = Now); }), Task.Run(() => { UnitOfWorkContext.AddEvent(barEvent); UnitOfWorkContext.AddEvent <BarEvent>(e => e.Created = Now); }) }; Task.WhenAll(tasks).GetAwaiter().GetResult(); Now = DateTime.UtcNow; return(this); }
protected void Publish <T>(Action <T> action) where T : Event, new() { UnitOfWorkContext.AddEvent <object>(() => { var message = new T(); action(message); return(message); }); }
protected void Publish <T>(Func <T> action) where T : class { UnitOfWorkContext.AddEvent(action); }
protected void Publish <T>(Action <T> action) where T : Event, new() { UnitOfWorkContext.AddEvent(action); }