private static string GetTemplateString(string title, ref object titleNode, EmailTemplateLogic.GenerateAttachmentContext ctx) { var block = titleNode != null ? (EmailTemplateParser.BlockNode)titleNode : (EmailTemplateParser.BlockNode)(titleNode = EmailTemplateParser.Parse(title, ctx.QueryDescription, ctx.ModelType)); return(block.Print(new EmailTemplateParameters(ctx.Entity, ctx.Culture, ctx.ResultColumns, ctx.CurrentRows) { SystemEmail = ctx.SystemEmail })); }
public static void Start(SchemaBuilder sb, DynamicQueryManager dqm) { sb.Include <WordAttachmentEntity>() .WithQuery(dqm, () => s => new { Entity = s, s.Id, s.FileName, s.WordTemplate, s.OverrideModel, }); EmailTemplateLogic.FillAttachmentTokens.Register((WordAttachmentEntity wa, EmailTemplateLogic.FillAttachmentTokenContext ctx) => { if (wa.FileName != null) { EmailTemplateParser.Parse(wa.FileName, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens); } }); Validator.PropertyValidator((WordAttachmentEntity e) => e.FileName).StaticPropertyValidation = WordAttachmentFileName_StaticPropertyValidation; EmailTemplateLogic.GenerateAttachment.Register((WordAttachmentEntity wa, EmailTemplateLogic.GenerateAttachmentContext ctx) => { var entity = wa.OverrideModel?.Retrieve() ?? (Entity)ctx.Entity ?? ctx.SystemEmail.UntypedEntity; if (wa.ModelConverter != null) { entity = wa.ModelConverter.Convert(entity); } using (CultureInfoUtils.ChangeBothCultures(ctx.Culture)) { WordTemplateEntity template = WordTemplateLogic.GetFromCache(wa.WordTemplate); var fileName = GetTemplateString(wa.FileName, ref wa.FileNameNode, ctx); var systemWordTemplate = template.SystemWordTemplate != null && !SystemWordTemplateLogic.RequiresExtraParameters(template.SystemWordTemplate) ? SystemWordTemplateLogic.CreateDefaultSystemWordTemplate(template.SystemWordTemplate, entity) : null; var bytes = WordTemplateLogic.CreateReport(template, entity, systemWordTemplate); return(new List <EmailAttachmentEmbedded> { new EmailAttachmentEmbedded { File = Files.FilePathEmbeddedLogic.SaveFile(new Entities.Files.FilePathEmbedded(EmailFileType.Attachment, fileName, bytes)), Type = EmailAttachmentType.Attachment, } }); } }); }
public static void Start(SchemaBuilder sb, DynamicQueryManager dqm) { sb.Include <ExcelAttachmentEntity>() .WithQuery(dqm, () => s => new { Entity = s, s.Id, s.FileName, s.UserQuery, s.Related, }); EmailTemplateLogic.FillAttachmentTokens.Register((ExcelAttachmentEntity ea, EmailTemplateLogic.FillAttachmentTokenContext ctx) => { if (ea.FileName != null) { EmailTemplateParser.Parse(ea.FileName, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens); } if (ea.Title != null) { EmailTemplateParser.Parse(ea.Title, ctx.QueryDescription, ctx.ModelType).FillQueryTokens(ctx.QueryTokens); } }); Validator.PropertyValidator((ExcelAttachmentEntity e) => e.FileName).StaticPropertyValidation = ExcelAttachmentFileName_StaticPropertyValidation; Validator.PropertyValidator((ExcelAttachmentEntity e) => e.Title).StaticPropertyValidation = ExcelAttachmentTitle_StaticPropertyValidation; EmailTemplateLogic.GenerateAttachment.Register((ExcelAttachmentEntity ea, EmailTemplateLogic.GenerateAttachmentContext ctx) => { var finalEntity = ea.Related?.Retrieve() ?? (Entity)ctx.Entity ?? ctx.SystemEmail.UntypedEntity as Entity; using (finalEntity == null ? null : CurrentEntityConverter.SetCurrentEntity(finalEntity)) using (CultureInfoUtils.ChangeBothCultures(ctx.Culture)) { QueryRequest request = UserQueryLogic.ToQueryRequest(ea.UserQuery.Retrieve()); var title = GetTemplateString(ea.Title, ref ea.TitleNode, ctx); var fileName = GetTemplateString(ea.FileName, ref ea.FileNameNode, ctx); var bytes = ExcelLogic.ExecutePlainExcel(request, title); return(new List <EmailAttachmentEmbedded> { new EmailAttachmentEmbedded { File = Files.FilePathEmbeddedLogic.SaveFile(new Entities.Files.FilePathEmbedded(EmailFileType.Attachment, fileName, bytes)), Type = EmailAttachmentType.Attachment, } }); } }); }