From 95168acc3b209e564d94ca3817ccadbaed648e19 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Sun, 20 Aug 2023 12:00:14 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=87=E0=B8=B2?= =?UTF-8?q?=E0=B8=99=E0=B8=84=E0=B8=B3=E0=B8=AA=E0=B8=B1=E0=B9=88=E0=B8=87?= =?UTF-8?q?=E0=B8=9A=E0=B8=A3=E0=B8=A3=E0=B8=88=E0=B8=B8=20(=E0=B8=AB?= =?UTF-8?q?=E0=B8=99=E0=B9=89=E0=B8=B2=E0=B8=84=E0=B8=A3=E0=B8=B8=E0=B8=91?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BMA.EHR.Domain/Shared/GlobalConstants.cs | 4 + .../Controllers/CommandReportController.cs | 127 ++++++++++++++++++ .../01-คำสั่งบรรจุและแต่งตั้งผู้สอบแข่งขันได้-1.trdp | Bin 28816 -> 28894 bytes 3 files changed, 131 insertions(+) create mode 100644 BMA.EHR.Report.Service/Controllers/CommandReportController.cs diff --git a/BMA.EHR.Domain/Shared/GlobalConstants.cs b/BMA.EHR.Domain/Shared/GlobalConstants.cs index 22ed9b28..9d87dabd 100644 --- a/BMA.EHR.Domain/Shared/GlobalConstants.cs +++ b/BMA.EHR.Domain/Shared/GlobalConstants.cs @@ -4,5 +4,9 @@ { public static readonly string TYPE_ATTACHMENT = "attachment"; public static readonly string TYPE_COVER = "cover"; + + public static readonly string EXPORT_PDF = "PDF"; + public static readonly string EXPORT_WORD = "DOCX"; + public static readonly string EXPORT_EXCEL = "XLSX"; } } diff --git a/BMA.EHR.Report.Service/Controllers/CommandReportController.cs b/BMA.EHR.Report.Service/Controllers/CommandReportController.cs new file mode 100644 index 00000000..06f71c46 --- /dev/null +++ b/BMA.EHR.Report.Service/Controllers/CommandReportController.cs @@ -0,0 +1,127 @@ +using BMA.EHR.Application.Repositories.Commands; +using BMA.EHR.Domain.Common; +using BMA.EHR.Domain.Extensions; +using BMA.EHR.Domain.Shared; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; +using static System.Runtime.InteropServices.JavaScript.JSType; +using Telerik.Reporting; +using Telerik.Reporting.Processing; + +namespace BMA.EHR.Report.Service.Controllers +{ + [Route("api/v{version:apiVersion}/report/order")] + [ApiVersion("2.0")] + [ApiController] + [Produces("application/json")] + [Authorize] + [SwaggerTag("API รายงานระบบออกคำสั่ง")] + public class CommandReportController : BaseController + { + #region " Fields " + + private readonly CommandRepository _repository; + private readonly IWebHostEnvironment _hostingEnvironment; + private readonly IConfiguration _configuration; + + #endregion + + #region " Constuctor and Destructor " + + public CommandReportController(CommandRepository repository, + IWebHostEnvironment hostingEnvironment, + IConfiguration configuration) + { + _repository = repository; + _hostingEnvironment = hostingEnvironment; + _configuration = configuration; + } + + #endregion + + #region " Methods " + + #region " Private " + + private async Task GenerateCommandReportType01(Guid commandId, string exportType) + { + try + { + var raw_data = await _repository.GetByIdAsync(commandId); + if (raw_data == null) + { + throw new Exception(GlobalMessages.CommandNotFound); + } + + var command = new + { + CommandNo = raw_data.CommandNo, + CommandYear = raw_data.CommandYear.ToInteger().ToThaiYear().ToString(), + IssuerOrganizationName = raw_data.IssuerOrganizationName, + ConclusionRegisterNo = raw_data.ConclusionRegisterNo, + ConclusionRegisterDate = raw_data.ConclusionRegisterDate.ToThaiFullDate3(), + ConclusionResultNo = raw_data.ConclusionResultNo, + ConclusionResultDate = raw_data.ConclusionResultDate.ToThaiFullDate3(), + PositionList = "", + Count = raw_data.Receivers.Count, + CommandAffectDate = raw_data.CommandAffectDate == null ? "" : raw_data.CommandAffectDate.Value.ToThaiFullDate3() + }; + + var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"01-คำสั่งบรรจุและแต่งตั้งผู้สอบแข่งขันได้-1.trdp"); + + ReportPackager reportPackager = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream); + } + + report.DataSource = command; + + System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); + + InstanceReportSource instanceReportSource = new InstanceReportSource() + { + ReportDocument = report + }; + + + ReportProcessor reportProcessor = new ReportProcessor(_configuration); + RenderingResult result = reportProcessor.RenderReport(exportType, instanceReportSource, deviceInfo); + + var content = result.DocumentBytes; + + return content; + } + catch + { + throw; + } + } + + #endregion + + [HttpGet("{exportType}/{id}")] + [AllowAnonymous] + public async Task> GetCommandReport(Guid id, string exportType) + { + try + { + var cmd = await _repository.GetByIdAsync(id); + if (cmd == null) + throw new Exception(GlobalMessages.CommandNotFound); + + var contentData = await GenerateCommandReportType01(id, exportType); + return File(contentData, "application/pdf", $"command-{cmd.CommandNo}-{cmd.CommandYear.ToInteger().ToThaiYear()}.pdf"); + } + catch + { + throw; + } + } + + #endregion + } +} diff --git a/BMA.EHR.Report.Service/Reports/01-คำสั่งบรรจุและแต่งตั้งผู้สอบแข่งขันได้-1.trdp b/BMA.EHR.Report.Service/Reports/01-คำสั่งบรรจุและแต่งตั้งผู้สอบแข่งขันได้-1.trdp index aed6b1b12f5f03638d13904b7124bde5ef032181..5ca6ca92b190a0aa3978f248296a24c508598dc8 100644 GIT binary patch delta 1793 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