|
@@ -197,6 +197,18 @@ public class ScriptSaveEventTrigger<T> : IEventTrigger<SaveEvent<T>, SaveEventDa
|
|
|
public string Description => "Custom Script";
|
|
|
|
|
|
private ScriptDocument? _scriptDocument;
|
|
|
+ private ScriptDocument? ScriptDocument
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if(_scriptDocument is null && Script is not null)
|
|
|
+ {
|
|
|
+ _scriptDocument = new(Script);
|
|
|
+ _scriptDocument.Compile();
|
|
|
+ }
|
|
|
+ return _scriptDocument;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private string? _script;
|
|
|
public string? Script
|
|
@@ -212,7 +224,23 @@ public class ScriptSaveEventTrigger<T> : IEventTrigger<SaveEvent<T>, SaveEventDa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public IEnumerable<string> ReferencedVariables => [];
|
|
|
+ public IEnumerable<string> ReferencedVariables
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ var method = ScriptDocument?.GetMethod(methodName: "RequiredColumns");
|
|
|
+ if(method is not null)
|
|
|
+ {
|
|
|
+ var cols = Columns.None<T>();
|
|
|
+ method.Invoke(ScriptDocument!.GetObject(), [cols]);
|
|
|
+ return cols.ColumnNames().Select(x => $"{typeof(T).Name}.{x}");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public string DefaultScript()
|
|
|
{
|
|
@@ -220,6 +248,11 @@ public class ScriptSaveEventTrigger<T> : IEventTrigger<SaveEvent<T>, SaveEventDa
|
|
|
|
|
|
public class Module
|
|
|
{
|
|
|
+ public void RequiredColumns(Columns<" + typeof(T).Name + @"> columns)
|
|
|
+ {
|
|
|
+ // Modify 'columns' as required.
|
|
|
+ }
|
|
|
+
|
|
|
public bool Check(SaveEventDataModel<" + typeof(T).Name + @"> model)
|
|
|
{
|
|
|
// Return true if model.Entity meets the requirements for this event trigger.
|
|
@@ -230,14 +263,9 @@ public class Module
|
|
|
|
|
|
public bool Check(SaveEventDataModel<T> dataModel)
|
|
|
{
|
|
|
- if (Script is null) return false;
|
|
|
+ if (ScriptDocument is null) return false;
|
|
|
|
|
|
- if(_scriptDocument is null)
|
|
|
- {
|
|
|
- _scriptDocument = new(Script);
|
|
|
- _scriptDocument.Compile();
|
|
|
- }
|
|
|
- return _scriptDocument.Execute(methodname: "Check", parameters: [dataModel]);
|
|
|
+ return ScriptDocument.Execute(methodname: "Check", parameters: [dataModel]);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -250,6 +278,19 @@ public class ScriptSaveEventAction<T> : IEventAction<SaveEvent<T>>
|
|
|
where T : Entity, new()
|
|
|
{
|
|
|
private ScriptDocument? _scriptDocument;
|
|
|
+ private ScriptDocument? ScriptDocument
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if(_scriptDocument is null && Script is not null)
|
|
|
+ {
|
|
|
+ _scriptDocument = new(Script);
|
|
|
+ _scriptDocument.SetValue("Result", null);
|
|
|
+ _scriptDocument.Compile();
|
|
|
+ }
|
|
|
+ return _scriptDocument;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private string? _script;
|
|
|
public string? Script
|
|
@@ -265,7 +306,23 @@ public class ScriptSaveEventAction<T> : IEventAction<SaveEvent<T>>
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public IEnumerable<string> ReferencedVariables => [];
|
|
|
+ public IEnumerable<string> ReferencedVariables
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ var method = ScriptDocument?.GetMethod(methodName: "RequiredColumns");
|
|
|
+ if(method is not null)
|
|
|
+ {
|
|
|
+ var cols = Columns.None<T>();
|
|
|
+ method.Invoke(ScriptDocument!.GetObject(), [cols]);
|
|
|
+ return cols.ColumnNames().Select(x => $"{typeof(T).Name}.{x}");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public string Description => "Custom Script";
|
|
|
|
|
@@ -277,6 +334,11 @@ public class Module
|
|
|
{
|
|
|
public object? Result { get; set; }
|
|
|
|
|
|
+ public void RequiredColumns(Columns<" + typeof(T).Name + @"> columns)
|
|
|
+ {
|
|
|
+ // Modify 'columns' as required.
|
|
|
+ }
|
|
|
+
|
|
|
public bool Execute(SaveEventDataModel<" + typeof(T).Name + @"> model)
|
|
|
{
|
|
|
// Do anything you want with model.Entity, and then save return-value to 'Result', or leave it as 'null' if no return value is needed.
|
|
@@ -287,18 +349,12 @@ public class Module
|
|
|
|
|
|
public object? Execute(IEventDataModel dataModel)
|
|
|
{
|
|
|
- if (Script is null) return null;
|
|
|
+ if (ScriptDocument is null) return null;
|
|
|
|
|
|
- if(_scriptDocument is null)
|
|
|
- {
|
|
|
- _scriptDocument = new(Script);
|
|
|
- _scriptDocument.SetValue("Result", null);
|
|
|
- _scriptDocument.Compile();
|
|
|
- }
|
|
|
var model = dataModel.RootModel<SaveEventDataModel<T>>();
|
|
|
- if(_scriptDocument.Execute(methodname: "Execute", parameters: [model]))
|
|
|
+ if(ScriptDocument.Execute(methodname: "Execute", parameters: [model]))
|
|
|
{
|
|
|
- return _scriptDocument.GetValue("Result");
|
|
|
+ return ScriptDocument.GetValue("Result");
|
|
|
}
|
|
|
else
|
|
|
{
|