Page Identifiers in OnAttachmentImportExpression

This commit is contained in:
Gary Sharp
2016-11-11 12:07:51 +11:00
parent 4c91d03385
commit ef8df08e29
3 changed files with 17 additions and 8 deletions
@@ -117,7 +117,7 @@ namespace Disco.Services.Documents.AttachmentImport
msBuilder.Position = 0; msBuilder.Position = 0;
using (var attachmentThumbnail = documentPageFirst.GetAttachmentThumbnail()) 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)) using (var pdfStream = File.OpenRead(PdfFilename))
{ {
return ImportPdfAttachment(Identifier, Database, pdfStream, Thumbnail); return ImportPdfAttachment(Identifier, Database, pdfStream, Thumbnail, new List<DocumentUniqueIdentifier>() { Identifier });
} }
} }
public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent) 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<DocumentUniqueIdentifier>() { Identifier });
} }
public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent, Image Thumbnail) public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent, Image Thumbnail)
{
return ImportPdfAttachment(Identifier, Database, PdfContent, Thumbnail, new List<DocumentUniqueIdentifier>() { Identifier });
}
public static bool ImportPdfAttachment(this DocumentUniqueIdentifier Identifier, DiscoDataContext Database, Stream PdfContent, Image Thumbnail, List<DocumentUniqueIdentifier> PageIdentifiers)
{ {
string filename; string filename;
string comments; string comments;
@@ -230,7 +235,7 @@ namespace Disco.Services.Documents.AttachmentImport
{ {
try 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); DocumentsLog.LogImportAttachmentExpressionEvaluated(Identifier.DocumentTemplate, Identifier.Target, attachment, expressionResult);
} }
catch (Exception ex) catch (Exception ex)
@@ -1,8 +1,11 @@
using Disco.Data.Repository; using Disco.Data.Repository;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Models.Services.Documents; using Disco.Models.Services.Documents;
using Disco.Services.Documents;
using Disco.Services.Expressions; using Disco.Services.Expressions;
using System; using System;
using System.Collections;
using System.Collections.Generic;
namespace Disco.Services namespace Disco.Services
{ {
@@ -57,12 +60,13 @@ namespace Disco.Services
ExpressionCache.InvalidateKey("DocumentTemplate_OnImportExpression", dt.Id); 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<DocumentUniqueIdentifier> PageIdentifiers)
{ {
if (!string.IsNullOrEmpty(dt.OnImportAttachmentExpression)) if (!string.IsNullOrEmpty(dt.OnImportAttachmentExpression))
{ {
Expression compiledExpression = dt.OnImportAttachmentExpressionFromCache(); 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 try
{ {
object result = compiledExpression.EvaluateFirst<object>(Data, evaluatorVariables); object result = compiledExpression.EvaluateFirst<object>(Data, evaluatorVariables);
+2 -2
View File
@@ -173,7 +173,7 @@ namespace Disco.Services.Expressions
return e; 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 return new Hashtable
{ {
@@ -221,7 +221,7 @@ namespace Disco.Services.Expressions
{ {
"#TimeStamp", "#TimeStamp",
typeof(System.DateTime).AssemblyQualifiedName typeof(DateTime).AssemblyQualifiedName
}, },
{ {