Переглянути джерело

Fix to NotificationExpression not loading ReferencedVariables.

Kenric Nugteren 4 місяців тому
батько
коміт
51fb97d2cf

+ 1 - 4
prs.stores/Events/Event.cs

@@ -387,7 +387,7 @@ public static class EventUtils
             var eventData = (ev.EventData as EventData<SaveEvent<T>, SaveEventDataModel<T>>)!;
             var model = new SaveEventDataModel<T>(entity, store);
 
-            eventData.Event.Init(store, eventData, model);
+            eventData.Event.Init(store, ev.Event, eventData, model);
 
             Run(store, ev.Event, eventData, model);
         }
@@ -516,7 +516,6 @@ public static class EventUtils
             if (CheckEventSchedule(eventData.Event))
             {
                 var model = new ScheduledEventDataModel(ev.Event);
-                eventData.Event.Init(store, eventData, model);
                 Run(store, ev.Event, eventData, model);
 
                 ev.Event.Data = Serialize(eventData);
@@ -722,8 +721,6 @@ public interface IEntityEvent<T>
 
 public interface IEvent<TDataModel> : IEvent
 {
-    void Init(IStore store, IEventData data, TDataModel model);
-
     Notification GenerateNotification(TDataModel model);
 }
 

+ 10 - 2
prs.stores/Events/SaveEvent.cs

@@ -36,14 +36,22 @@ public class SaveEvent<T> : IEvent<SaveEventDataModel<T>>, IEntityEvent<T>
         return notification;
     }
 
-    public void Init(IStore store, IEventData evData, SaveEventDataModel<T> model)
+    public void Init(IStore store, Event ev, IEventData evData, SaveEventDataModel<T> model)
     {
         if (model.Entity.ID != Guid.Empty)
         {
             var loadCols = Columns.None<T>();
 
+            IEnumerable<string> refVars = evData.ReferencedVariables;
+
+            if (!ev.NotificationExpression.IsNullOrWhiteSpace())
+            {
+                var notificationExpression = new CoreExpression(ev.NotificationExpression);
+                refVars = refVars.Concat(notificationExpression.ReferencedVariables);
+            }
+
             var prefix = $"{typeof(T).Name}.";
-            foreach (var variable in evData.ReferencedVariables)
+            foreach (var variable in refVars)
             {
                 if (variable.StartsWith(prefix))
                 {

+ 0 - 4
prs.stores/Events/ScheduledEvent.cs

@@ -119,10 +119,6 @@ public class ScheduledEvent : IEvent<ScheduledEventDataModel>, IPropertiesEvent<
         return notification;
     }
 
-    public void Init(IStore store, IEventData data, ScheduledEventDataModel model)
-    {
-    }
-
     public ScheduledEventProperties GetProperties()
     {
         return Properties;