예제 #1
0
        public async Task TestReportAsync()
        {
            var outPutDirectory   = "Data\\Temp";
            var tempPathDirectory = "Data\\Templates";
            var model             = new { Name = "Con bướm xinh", Job = 100 };

            string headerTemplate = "header.html";
            string bodyTemplate   = "email.html";
            string footerTemplate = "footer.html";

            var htmlBody = await File.ReadAllTextAsync(Path.Combine(tempPathDirectory, bodyTemplate));

            var htmlHeader = await File.ReadAllTextAsync(Path.Combine(tempPathDirectory, headerTemplate));

            var htmlFooter = await File.ReadAllTextAsync(Path.Combine(tempPathDirectory, footerTemplate));


            var reportingFactory = new ReportingFactory(_loggerFactory);
            var reportModel      = reportingFactory.CreateReportingModel(htmlHeader, htmlFooter, model);

            // factory return context
            using (var reportContext = reportingFactory.CreateReportContext(outPutDirectory, tempPathDirectory))
            {
                IHtmlRenderTask viewEngine      = reportingFactory.CreateFluidHtmlRenderTask(reportContext);
                IHtmlRenderTask preMailerEngine = reportingFactory.CreateCleanupHtmlRenderTask(reportContext);

                var body = await viewEngine.RenderAsync(reportModel, htmlBody);

                body = await preMailerEngine.RenderAsync(reportModel, body);

                File.WriteAllBytes(Path.Combine(outPutDirectory, "tententen.html"), Encoding.UTF8.GetBytes(body));
            }
            Assert.True(true);
        }
예제 #2
0
        public async Task <string> GenerateHtmlReportAsync(string reportTemplate, object model)
        {
            var htmlBody   = File.ReadAllText(Path.Combine(_reportingSettings.TempPathDirectory, reportTemplate));
            var htmlHeader = File.ReadAllText(Path.Combine(_reportingSettings.TempPathDirectory, _reportingSettings.HeaderTemplate));
            var htmlFooter = File.ReadAllText(Path.Combine(_reportingSettings.TempPathDirectory, _reportingSettings.FooterTemplate));

            var reportModel = _reportingFactory.CreateReportingModel(htmlHeader, htmlFooter, model);

            using (var reportContext = _reportingFactory.CreateReportContext(_reportingSettings.OutPutDirectory, _reportingSettings.TempPathDirectory))
            {
                IHtmlRenderTask viewEngine  = _reportingFactory.CreateFluidHtmlRenderTask(reportContext);
                IHtmlRenderTask emailEngine = _reportingFactory.CreateCleanupHtmlRenderTask(reportContext);

                var body = await viewEngine.RenderAsync(reportModel, htmlBody);

                return(await emailEngine.RenderAsync(reportModel, body));
            }
        }