소스 검색

Fix to NotificationExpression not loading ReferencedVariables.

Kenric Nugteren 4 달 전
부모
커밋
51fb97d2cf
3개의 변경된 파일11개의 추가작업 그리고 10개의 파일을 삭제
  1. 1 4
      prs.stores/Events/Event.cs
  2. 10 2
      prs.stores/Events/SaveEvent.cs
  3. 0 4
      prs.stores/Events/ScheduledEvent.cs

+ 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 eventData = (ev.EventData as EventData<SaveEvent<T>, SaveEventDataModel<T>>)!;
             var model = new SaveEventDataModel<T>(entity, store);
             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);
             Run(store, ev.Event, eventData, model);
         }
         }
@@ -516,7 +516,6 @@ public static class EventUtils
             if (CheckEventSchedule(eventData.Event))
             if (CheckEventSchedule(eventData.Event))
             {
             {
                 var model = new ScheduledEventDataModel(ev.Event);
                 var model = new ScheduledEventDataModel(ev.Event);
-                eventData.Event.Init(store, eventData, model);
                 Run(store, ev.Event, eventData, model);
                 Run(store, ev.Event, eventData, model);
 
 
                 ev.Event.Data = Serialize(eventData);
                 ev.Event.Data = Serialize(eventData);
@@ -722,8 +721,6 @@ public interface IEntityEvent<T>
 
 
 public interface IEvent<TDataModel> : IEvent
 public interface IEvent<TDataModel> : IEvent
 {
 {
-    void Init(IStore store, IEventData data, TDataModel model);
-
     Notification GenerateNotification(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;
         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)
         if (model.Entity.ID != Guid.Empty)
         {
         {
             var loadCols = Columns.None<T>();
             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}.";
             var prefix = $"{typeof(T).Name}.";
-            foreach (var variable in evData.ReferencedVariables)
+            foreach (var variable in refVars)
             {
             {
                 if (variable.StartsWith(prefix))
                 if (variable.StartsWith(prefix))
                 {
                 {

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

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