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);
        }
Example #3
0
        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);
     });
 }
Example #5
0
 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);
 }