feature: expose custom details to expressions

custom details can now be easily retrieved from any expression
This commit is contained in:
Gary Sharp
2021-02-07 18:17:03 +11:00
parent 3e57af394d
commit 9bfeff8c42
9 changed files with 181 additions and 81 deletions
@@ -81,12 +81,12 @@ namespace Disco.Services
ExpressionCache.InvalidateKey("DocumentTemplatePackage_FilterExpression", package.Id);
}
public static bool FilterExpressionMatches(this DocumentTemplatePackage package, object Data, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState State)
public static bool FilterExpressionMatches(this DocumentTemplatePackage package, IAttachmentTarget Data, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState State)
{
if (!string.IsNullOrEmpty(package.FilterExpression))
{
var compiledExpression = package.FilterExpressionFromCache();
var evaluatorVariables = Expression.StandardVariables(null, Database, User, TimeStamp, State);
var evaluatorVariables = Expression.StandardVariables(null, Database, User, TimeStamp, State, Data);
evaluatorVariables.Add("Package", package);
try
{
@@ -119,12 +119,12 @@ namespace Disco.Services
ExpressionCache.InvalidateKey("DocumentTemplatePackage_OnGenerateExpression", package.Id);
}
public static string EvaluateOnGenerateExpression(this DocumentTemplatePackage package, object Data, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState State)
public static string EvaluateOnGenerateExpression(this DocumentTemplatePackage package, IAttachmentTarget Data, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState State)
{
if (!string.IsNullOrEmpty(package.OnGenerateExpression))
{
Expression compiledExpression = package.OnGenerateExpressionFromCache();
System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(null, Database, User, TimeStamp, State);
System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(null, Database, User, TimeStamp, State, Data);
evaluatorVariables.Add("Package", package);
try
{