Created
September 7, 2020 07:17
-
-
Save serpel/23dc333964bfd08d613f153d95426a73 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[HttpPost("commands/generate-drying-report")] | |
[MiddlewareFilter(typeof(JsReportPipeline))] | |
public async Task<IActionResult> GenerateDryingReport(Guid jobId, DryingReportTestScenarios isMock = 0) | |
{ | |
if (jobId == Guid.Empty) | |
return BadRequest(nameof(jobId)); | |
var dryingReport = isMock != DryingReportTestScenarios.UseJobId ? DryingReportGeneratedDtoMockData.GetMockForPreview(isMock) : await _mediator.Send(new GenerateDryingReport.Command(jobId)); | |
//Render the Header. | |
var headerInfo = new HeaderHelper(dryingReport.SummaryModel.FranchiseName, dryingReport.SummaryModel.CustomerName, dryingReport.SummaryModel.ClaimPoNumber, dryingReport.SummaryModel.ProjectNumber); | |
string header = await _jsReportMvcService.RenderViewToStringAsync( | |
HttpContext, RouteData, $"{ViewRoot}{DryingReportHeaderViewName}", headerInfo); | |
//Render the Footer. | |
string footer = await _jsReportMvcService.RenderViewToStringAsync( | |
HttpContext, RouteData, $"{ViewRoot}{DryingReportFooterViewName}", new FooterHelper(DateTime.UtcNow, "Drying Report")); | |
//Configure the report to convert this view to a PDF using JSReport + PhantomPDF. | |
var reportName = $"DryingReport-{Guid.NewGuid()}.pdf"; | |
HttpContext.JsReportFeature() | |
.Recipe(Recipe.ChromePdf) | |
.Configure((r) => r.Template.Chrome = new Chrome { | |
DisplayHeaderFooter = true, | |
HeaderTemplate = header, | |
FooterTemplate = footer, | |
Format = "A4", | |
MarginTop = "3cm", | |
MarginLeft = "1cm", | |
MarginBottom = "3cm", | |
MarginRight = "1cm" | |
}) | |
.OnAfterRender((r) => | |
HttpContext.Response.Headers["Content-Disposition"] = $"attachment; filename={reportName}"); | |
return View($"{ViewRoot}{DryingReportViewName}", dryingReport); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment