Esempio n. 1
0
 private void Apply(Entity entity)
 {
     if (_idToFilterData.TryGetValue(entity.UniqueIdentifier, out FilterDataT filterData))
     {
         FilterDataT updatedFilterData = new FilterDataT();
         if (!updatedFilterData.TrySetFilterData(entity, _refresher.EntityAdmin))
         {
             _idToFilterData.Remove(entity.UniqueIdentifier);
             var listeners = _listeners.ToArray();
             for (int i = 0, c = listeners.Length; i < c; i++)
             {
                 listeners[i].OnDataUnregistered(filterData);
             }
             DataRemovedEvent?.Invoke(entity.UniqueIdentifier, filterData);
         }
         else if (!updatedFilterData.Equals(filterData))
         {
             _idToFilterData[entity.UniqueIdentifier] = updatedFilterData;
             var listeners = _listeners.ToArray();
             for (int i = 0, c = listeners.Length; i < c; i++)
             {
                 listeners[i].OnDataUnregistered(filterData);
             }
             DataUpdatedEvent?.Invoke(entity.UniqueIdentifier, updatedFilterData);
         }
     }
     else
     {
         filterData = new FilterDataT();
         if (filterData.TrySetFilterData(entity, _refresher.EntityAdmin))
         {
             _idToFilterData[entity.UniqueIdentifier] = filterData;
             var listeners = _listeners.ToArray();
             for (int i = 0, c = listeners.Length; i < c; i++)
             {
                 listeners[i].OnDataRegistered(filterData);
             }
             DataAddedEvent?.Invoke(entity.UniqueIdentifier, filterData);
         }
     }
 }
Esempio n. 2
0
 public Task Handle(DataAddedEvent <TrackedEntity> notification, CancellationToken cancellationToken)
 {
     foreach (var item in notification.Data.OriginalValues.SelectMany(k => k.Value.Select(s => new { Value = s, k.Key })))
     {
         if (IsOnBlackList(notification.GetType().Name, item.Value.Metadata.ShortName()))
         {
             continue;
         }
         var f             = item.Value.Entry;
         var primaryKey    = item.Value.Metadata.FindPrimaryKey();
         var primaryKeys   = primaryKey.Properties.ToDictionary(p => p.Name, p => f.Property(p.Name).CurrentValue?.ToString());
         var originalItems = item.Value.OriginalValues;
         var currentValues = item.Value.Entry.CurrentValues.Properties.ToDictionary(p => p.Name, p => f.Property(p.Name).OriginalValue?.ToString());
         var log           = new EventLog();
         log.CreatedAt      = DateTime.Now;
         log.EventUser      = userAcessor.Name;
         log.DataKeysValues = JsonConvert.SerializeObject(primaryKeys);
         log.EntityType     = item.Key;
         log.EventType      = notification.Type;
         log.OriginalValues = JsonConvert.SerializeObject(originalItems);
         this.dbContext.Add(log);
     }
     return(Task.CompletedTask);
 }
Esempio n. 3
0
 public void PublishDataAddedEvent()
 {
     DataAddedEvent?.Invoke(this, EventArgs.Empty);
 }