diff --git a/Disco.Services/Documents/AttachmentImport/Importer.cs b/Disco.Services/Documents/AttachmentImport/Importer.cs index 1c48320e..ffc5da11 100644 --- a/Disco.Services/Documents/AttachmentImport/Importer.cs +++ b/Disco.Services/Documents/AttachmentImport/Importer.cs @@ -117,7 +117,7 @@ namespace Disco.Services.Documents.AttachmentImport msBuilder.Position = 0; using (var attachmentThumbnail = documentPageFirst.GetAttachmentThumbnail()) { - documentPageFirst.Identifier.ImportPdfAttachment(Database, msBuilder, attachmentThumbnail); + documentPageFirst.Identifier.ImportPdfAttachment(Database, msBuilder, attachmentThumbnail, documentPages.Select(p => p.Identifier).ToList()); } } } @@ -175,16 +175,21 @@ namespace Disco.Services.Documents.AttachmentImport { using (var pdfStream = File.OpenRead(PdfFilename)) { - return ImportPdfAttachment(Identifier, Database, pdfStream, Thumbnail); + return ImportPdfAttachment(Identifier, Database, pdfStream, Thumbnail, new List() { Identifier }); } } public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent) { - return ImportPdfAttachment(Identifier, Database, PdfContent, null); + return ImportPdfAttachment(Identifier, Database, PdfContent, null, new List() { Identifier }); } public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent, Image Thumbnail) + { + return ImportPdfAttachment(Identifier, Database, PdfContent, Thumbnail, new List() { Identifier }); + } + + public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent, Image Thumbnail, List PageIdentifiers) { string filename; string comments; @@ -230,7 +235,7 @@ namespace Disco.Services.Documents.AttachmentImport { try { - var expressionResult = Identifier.DocumentTemplate.EvaluateOnAttachmentImportExpression(attachment, Database, creatorUser, Identifier.TimeStamp); + var expressionResult = Identifier.DocumentTemplate.EvaluateOnAttachmentImportExpression(attachment, Database, creatorUser, Identifier.TimeStamp, PageIdentifiers); DocumentsLog.LogImportAttachmentExpressionEvaluated(Identifier.DocumentTemplate, Identifier.Target, attachment, expressionResult); } catch (Exception ex) diff --git a/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs b/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs index 339949fb..3bf5c757 100644 --- a/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs +++ b/Disco.Services/Documents/DocumentTemplateExpressionExtensions.cs @@ -1,8 +1,11 @@ using Disco.Data.Repository; using Disco.Models.Repository; using Disco.Models.Services.Documents; +using Disco.Services.Documents; using Disco.Services.Expressions; using System; +using System.Collections; +using System.Collections.Generic; namespace Disco.Services { @@ -57,12 +60,13 @@ namespace Disco.Services ExpressionCache.InvalidateKey("DocumentTemplate_OnImportExpression", dt.Id); } - public static string EvaluateOnAttachmentImportExpression(this DocumentTemplate dt, object Data, DiscoDataContext Database, User User, DateTime TimeStamp) + public static string EvaluateOnAttachmentImportExpression(this DocumentTemplate dt, object Data, DiscoDataContext Database, User User, DateTime TimeStamp, List PageIdentifiers) { if (!string.IsNullOrEmpty(dt.OnImportAttachmentExpression)) { Expression compiledExpression = dt.OnImportAttachmentExpressionFromCache(); - System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, null); + IDictionary evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, null); + evaluatorVariables.Add("PageIdentifiers", PageIdentifiers); try { object result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); diff --git a/Disco.Services/Expressions/Expression.cs b/Disco.Services/Expressions/Expression.cs index ba717258..e948735c 100644 --- a/Disco.Services/Expressions/Expression.cs +++ b/Disco.Services/Expressions/Expression.cs @@ -173,7 +173,7 @@ namespace Disco.Services.Expressions return e; } - public static IDictionary StandardVariables(DocumentTemplate AttachmentType, DiscoDataContext Database, User User, System.DateTime TimeStamp, DocumentState DocumentState) + public static IDictionary StandardVariables(DocumentTemplate AttachmentType, DiscoDataContext Database, User User, DateTime TimeStamp, DocumentState DocumentState) { return new Hashtable { @@ -221,7 +221,7 @@ namespace Disco.Services.Expressions { "#TimeStamp", - typeof(System.DateTime).AssemblyQualifiedName + typeof(DateTime).AssemblyQualifiedName }, {