public static void Start(SchemaBuilder sb)
    {
        sb.Include <WordAttachmentEntity>()
        .WithQuery(() => s => new
        {
            Entity = s,
            s.Id,
            s.FileName,
            s.WordTemplate,
            s.OverrideModel,
        });

        EmailTemplateLogic.FillAttachmentTokens.Register((WordAttachmentEntity wa, EmailTemplateLogic.FillAttachmentTokenContext ctx) =>
        {
            if (wa.FileName != null)
            {
                TextTemplateParser.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?.RetrieveAndRemember() ?? (Entity?)ctx.Entity ?? ctx.Model !.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 model = template.Model != null && !WordModelLogic.RequiresExtraParameters(template.Model) ?
                            WordModelLogic.CreateDefaultWordModel(template.Model, entity) : null;

                var bytes = WordTemplateLogic.CreateReport(template, entity, model);

                return(new List <EmailAttachmentEmbedded>
                {
                    new EmailAttachmentEmbedded
                    {
                        File = Files.FilePathEmbeddedLogic.SaveFile(new Entities.Files.FilePathEmbedded(EmailFileType.Attachment, fileName, bytes)),
                        Type = EmailAttachmentType.Attachment,
                    }
                });
            }
        });
    }
Example #2
0
        public string GetConstructorType([Required, FromBody]WordModelEntity wordModel)
        {
            var type = WordModelLogic.GetEntityType(wordModel.ToType());

            return ReflectionServer.GetTypeName(type);
        }