From fef7af3f8704520496ec3231173ca791b3b1b4e7 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Thu, 14 Sep 2023 09:44:17 +0700 Subject: [PATCH 1/8] =?UTF-8?q?default=20=E0=B8=84=E0=B9=88=E0=B8=B2?= =?UTF-8?q?=E0=B9=80=E0=B8=A3=E0=B8=B4=E0=B9=88=E0=B8=A1=E0=B8=95=E0=B9=89?= =?UTF-8?q?=E0=B8=99=20=E0=B8=AD=E0=B8=81=E0=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BMA.EHR.Retirement.Service/Controllers/RetirementController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs b/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs index 8c401275..32695f67 100644 --- a/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs +++ b/BMA.EHR.Retirement.Service/Controllers/RetirementController.cs @@ -233,6 +233,7 @@ namespace BMA.EHR.Retirement.Service.Controllers { Round = round, TypeReport = null, + Detail = "มาตรา ๑๖ และมาตรา ๒๑ แห่งพระราชบัญญัตบำเหน็จบำนาญข้าราชการส่วนท้องถิ่น พ.ศ.๒๕๗๗ มาตรา ๘ แห่งพระราชบัญญัติบัเหน็จบำนาญข้าราชการกรุงเทพมหานคร พ.ศ.๒๕๕๔ ประกอบกับมติ ก.ก. ครั้งที่๑๑/๒๕๕๕ เมื่อวันที่ ๑๕ พฤศจิกายน ๒๕๕๕และมติ อ.ก.ก. สามัญข้ารายการสามัญครั้งที่ ๑/๒๕๖๕ เมื่อวันที่ ๒๑ กุมภาพันธ์ ๒๕๖๕", Type = req.Type.Trim().ToUpper(), Year = req.Year, CreatedUserId = UserId ?? "System Administrator", From b8e6a589e0ed35f4e47d68b1e00b09d81556b9eb Mon Sep 17 00:00:00 2001 From: "Harid Promsri (Bright)" Date: Thu, 14 Sep 2023 10:03:21 +0700 Subject: [PATCH 2/8] =?UTF-8?q?fill=20=E0=B8=AA=E0=B9=88=E0=B8=A7=E0=B8=99?= =?UTF-8?q?=E0=B8=AB=E0=B8=B1=E0=B8=A7=E0=B8=AB=E0=B8=99=E0=B8=B1=E0=B8=87?= =?UTF-8?q?=E0=B8=AA=E0=B8=B7=E0=B8=AD=E0=B9=80=E0=B8=A7=E0=B8=B5=E0=B8=A2?= =?UTF-8?q?=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reports/RetireReportRepository.cs | 12 ++++++--- .../Controllers/DeceasedReportController.cs | 24 +++++++++++++++--- .../Reports/36-บันทึกเวียนแจ้งการถึงแก่กรรม.trdp | Bin 28514 -> 28388 bytes 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs index 420ba8a4..35932f9b 100644 --- a/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs @@ -164,12 +164,17 @@ namespace BMA.EHR.Application.Repositories.Reports if (data == null) return null; + string Prefix = string.IsNullOrEmpty(data.Prefix.ToString()) ? string.Empty : data.Prefix.ToString(); + string FirstName = string.IsNullOrEmpty(data.FirstName.ToString()) ? string.Empty : data.FirstName.ToString(); + string LastName = string.IsNullOrEmpty(data.LastName.ToString()) ? string.Empty : data.LastName.ToString(); + string FullName = $"{Prefix} {FirstName} {LastName}"; string Date = string.IsNullOrEmpty(data.Date.ToString()) ? "วันที่ - เดือน - พ.ศ. -" : DateTime.Parse(data.Date.ToString()).ToThaiFullDate().ToString().ToThaiNumber(); + string CurrentDate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")).ToThaiFullDate().ToString().ToThaiNumber(); return new { - data.Prefix, - data.FirstName, - data.LastName, + FullName, + Date, + CurrentDate, data.Position, data.PositionExecutive, data.PositionType, @@ -183,7 +188,6 @@ namespace BMA.EHR.Application.Repositories.Reports data.PositionLevelId, data.OrganizationId, data.Number, - Date, data.Location, data.Reason, }; diff --git a/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs b/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs index 635bcab1..71aa2855 100644 --- a/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs @@ -57,7 +57,7 @@ namespace BMA.EHR.Report.Service.Controllers /// /// 36-บันทึกเวียนแจ้งการถึงแก่กรรม /// - /// id + /// Id รายการบันทึกเวียนแจ้งการถึงแก่กรรม /// pdf, docx หรือ xlsx /// /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ @@ -68,9 +68,25 @@ namespace BMA.EHR.Report.Service.Controllers { try { + var head = await _repository.GetHeadRetirementDeceasedAsync(id); var data = await _repository.GetRetirementDeceasedAsync(id); - if (data != null) + if (data != null || head != null) { + var mergeData = new + { + Oc = head.GetType().GetProperty("Oc").GetValue(head), + Number = head.GetType().GetProperty("Number").GetValue(head), + Date = head.GetType().GetProperty("Date").GetValue(head), + Subject = head.GetType().GetProperty("Subject").GetValue(head), + Send = head.GetType().GetProperty("Send").GetValue(head), + FullName = data.GetType().GetProperty("FullName").GetValue(data), + Position = data.GetType().GetProperty("Position").GetValue(data), + Reason = data.GetType().GetProperty("Reason").GetValue(data), + DeceasedDate = data.GetType().GetProperty("Date").GetValue(data), + CurrentDate = data.GetType().GetProperty("CurrentDate").GetValue(data), + DeceasedNumber = data.GetType().GetProperty("Number").GetValue(data), + Location = data.GetType().GetProperty("Location").GetValue(data), + }; var mimeType = ""; switch (exportType.Trim().ToLower()) { @@ -86,7 +102,7 @@ namespace BMA.EHR.Report.Service.Controllers { report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); } - report.DataSource = data; + report.DataSource = mergeData; System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable(); InstanceReportSource instanceReportSource = new InstanceReportSource() { @@ -94,7 +110,7 @@ namespace BMA.EHR.Report.Service.Controllers }; ReportProcessor reportProcessor = new ReportProcessor(_configuration); RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo); - return File(result.DocumentBytes, mimeType, $"deceased.{exportType.Trim().ToLower()}"); + return File(result.DocumentBytes, mimeType, $"รายละเอียดบันทึกเวียนแจ้งการถึงแก่กรรม.{exportType.Trim().ToLower()}"); } else { diff --git a/BMA.EHR.Report.Service/Reports/36-บันทึกเวียนแจ้งการถึงแก่กรรม.trdp b/BMA.EHR.Report.Service/Reports/36-บันทึกเวียนแจ้งการถึงแก่กรรม.trdp index 1ddb6506b97274881f67726eebda1ebff5d88f55..4657c01157355257b205397aab76402a3041f917 100644 GIT binary patch delta 1198 zcmV;f1X26q-T~y@0S!<~0|XQR000O8T1_so4U=dNT1_rj_^we?Is^a!R}Yh}Xfc16 zUu)b(5WwFH{SJ!?ee3FU|J~dr#5PxlB+g;E?X#@g+^Nw&q*ZZR3~>{1lGmgyZXl4D z5=h8H+@{rioBb%A9cguvd=7@V;MN%3YBakuznR^UW^iTKbIJECik-k8Y6fj+g!y(b zas25}OZe?C`r4JtpMEmfVqp+*@~wX};WNEsqVgR#zjih#wEN8Ry}bx*ppz z=2^thuVRsM>ro=)tilGOE;*Y!Lo!5u5sqYIE0&Z#x2J+na#l+vca6`jDxi{ zU0K+hly&k|aB_Ji6pS64ClOl>cF8r*n!;Qie`7r?o;2wTJC}eV{MmP!?~qT`ohDLpN!&jNG8z zWx%L|5gTeEeJ$n>Mfyslha!JH66vu>AB%J!2S-GK^30C$ag-2bCih*)HL@DG6Htf} zb{6`a^8@HTYP5T2fzQMR{;wi^4-p_gjvVGrV!D}lJ1p9(fq!Ir|4r~d?Kirof)`;~ z0pPsRKZmbRD0@g60vE3x+A@lW{p z_+;6`0bEnqDHuyA63<2YLZoj{0V?GKSsg|Cvq=9C^L>19h`Z~cFf|ThN4`V$$mgH! zu3v)7)k|XjK)LmcNdJGr_4lPYIW;qSgoYNb%L)xfr5kV1V5$skF)NnKd)e{`QL**mX`CZ2FR3mvMCFs&y zguE{q=8r)1q)@*R*j5%MT<}22*ODk=KCiiYBF7I^7%N*Iea?S^_IweTIe7aF)t=&i zLHZ|NRraNuht(Hj&WQT^`B)lyrFM}lDl#&;A;|Kxh0_{YvwU+FIsP408Y(BUdwwVK zTn=H2_OfHPwC>~|87Dp^RN`*g^_NNSB3B&vF8u(kamp)2!J5g=ckmTkCtmq~5cii6 zGk;RYH5wO&cc6b)ni0LyjVS3DzT-zhz*$spQ<{q&C9EqM%Ac|gT+3u!wnZ@+TOo_C zJ3bIxZ9_yYe-hi4>>YBTHHd-ZCqWXUs*)?mZd%dQ@fQt{5`3K}2h+AyaupM0&?dGz zs{!YMm#0uKLQq~58i|s>nFxbw&KTor3QD$;Qm9X46u3?&vcXhEL8eYQRxL#JtPM

{fZ*b4eH$%;O&0OwJftTN_01Wi3O}_jOP)h>@ z6aWAK2mo45E|a5e?gLs)E|ZjQM-Ey|E?4-jQByhu0037Hlj&|Q16oZklNxUu0T`1u MZzcu@ZU6uP03km<*Z=?k delta 1325 zcmV+|1=9ND-2vj>0S!<~0|XQR000O8gK{mg4U=dNgK{lbYlU0+xC8(I+7OejXfc0S zZEG7x5dL21e^{&U%`yH#)+0#*{R8~UNG(*)HJ zNK7!q7#h22Pyc3rN@wS8@6EC?#09rTmiOjncjkF!c6P_D8=H=-MIewXRTE>@O*zxzPEb34|?^kqmdQUVRKr!G$X=iB0Le{dl7yR zlN}Lmi^)iYzr|x1NcoRAeka0-2;uDxN{&(ZTunT{rS?&NASPQP+!GT}7@sk550(Fr z!ti9q&jZjKtg|7w>fhH z9Kyo_+&@xVg+a3PUW;qcE7d@B9GuM_#$Mns6L$}?zqY*tn zTQ5#;=_wCc@fzFYlA0KFnU=GVOSC=>FzO&Tq1 znaLe6;2N3t>>eoiLv|7LG0tgo1;YVPAJX*Av-3x!{vez|bFR-xOkT1X3T(|~bH?N7wGv)b95&os_1S6ap8Qn)iDLTAB9HSeD zXfRX;R+$;dxW-$ao`{JI1;15y%$K0%LzqMff|)!JAzie?aAZ z)OjblJGJ=A(7DHaN$e4RM!3u&00GhN=_*Wcq3tt#I~DI8#aAx<(aDIN*C_*&C+ZUP z0zV0~Kk-|IS^785ACoaC)E~uTY3M+u%TauHiw!|I_fn@da?5l(ecy8Lt1^+>o%PGx zotLs9E3^@9xv76OD86z`y;#VL?HIFSl;LxPQFtX8oBTw+I;FTBZ=W=YqTLjx*Ak2! ztgugE_%rT<-<^kjrY8d3RMybzbJ3@a@?*M)!Sxi(Bm+t9!)dLCzfu|F%P z&Do%+WGH{KHgK&DE647d z{)XkIou3kX8%Gff&}zn2jHp4&82EXQbI*xmttS*@7ljTg<8LHFQagRdxSE2J)nSI} zQxOH+J=sm;tNJHHryR@I++x&P9q6UI-1Bn{u52yU3ljC2GPIKDd9#=b)3lekW5>x* zuwF11`;)+npA`WuJ^D|@^?v|RO9KQH000080E2QZlO=8L1A}rclNN4A4uf(nS8Ih^ j`M3lC0NN0fYi=$BgK{mCoNgNdmXo+{CI*FW000003iWfB From eb094476262f641ec67f6a3d126d4358c1dbd9cf Mon Sep 17 00:00:00 2001 From: Kittapath Date: Thu, 14 Sep 2023 12:39:16 +0700 Subject: [PATCH 3/8] =?UTF-8?q?=E0=B8=A2=E0=B9=89=E0=B8=B2=E0=B8=A2=20mini?= =?UTF-8?q?o=E0=B9=84=E0=B8=9B=20appcation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BMA.EHR.Application.csproj | 1 + .../Repositories/MinIOService.cs | 366 ++++++++++ .../Storage/MinIOService.cs | 624 +++++++++--------- .../Controllers/RetirementResignController.cs | 14 + 4 files changed, 693 insertions(+), 312 deletions(-) create mode 100644 BMA.EHR.Application/Repositories/MinIOService.cs diff --git a/BMA.EHR.Application/BMA.EHR.Application.csproj b/BMA.EHR.Application/BMA.EHR.Application.csproj index 09d5a4e1..b3262e4b 100644 --- a/BMA.EHR.Application/BMA.EHR.Application.csproj +++ b/BMA.EHR.Application/BMA.EHR.Application.csproj @@ -10,6 +10,7 @@ + diff --git a/BMA.EHR.Application/Repositories/MinIOService.cs b/BMA.EHR.Application/Repositories/MinIOService.cs new file mode 100644 index 00000000..34c01048 --- /dev/null +++ b/BMA.EHR.Application/Repositories/MinIOService.cs @@ -0,0 +1,366 @@ +using Amazon.S3; +using Amazon.S3.Model; +using BMA.EHR.Domain.Models.Documents; +using BMA.EHR.Domain.Shared; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using System.Net.Http.Headers; +using BMA.EHR.Application.Common.Interfaces; +using Amazon; +using BMA.EHR.Domain.Models.Organizations; +using MimeTypes; +using Profile = BMA.EHR.Domain.Models.HR.Profile; + +namespace BMA.EHR.Application.Repositories +{ + public class MinIOService + { + #region " Fields " + + private readonly IApplicationDBContext _dbContext; + private readonly IConfiguration _configuration; + private readonly AmazonS3Client _s3Client; + private readonly IWebHostEnvironment _hostingEnvironment; + private string _bucketName = string.Empty; + + #endregion + + #region " Constructors " + + public MinIOService(IApplicationDBContext dbContext, + IConfiguration configuration, + IWebHostEnvironment hostingEnvironment) + { + _dbContext = dbContext; + _configuration = configuration; + _hostingEnvironment = hostingEnvironment; + + var config = new AmazonS3Config + { + ServiceURL = _configuration["MinIO:Endpoint"], + ForcePathStyle = true + }; + + _s3Client = new AmazonS3Client(_configuration["MinIO:AccessKey"], _configuration["MinIO:SecretKey"], config); + this._bucketName = _configuration["MinIO:BucketName"] ?? "bma-recruit"; + } + + #endregion + + #region " Methods " + + public async Task UploadFileAsync(IFormFile file, string newFileName = "") + { + var fileName = ""; + var fileExt = Path.GetExtension(file.FileName); + if (newFileName != "") + fileName = $"{newFileName}"; + else + fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); + + + var tmpDir = Path.Combine("tmp"); + if (!Directory.Exists(tmpDir)) + Directory.CreateDirectory(tmpDir); + + var tmpFile = Path.Combine(tmpDir, $"tmp_{DateTime.Now.ToString("ddMMyyyyHHmmss")}{fileExt}"); + + try + { + using (var ms = new MemoryStream()) + { + var id = Guid.NewGuid(); + file.CopyTo(ms); + var fileBytes = ms.ToArray(); + System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileBytes); + + var request = new PutObjectRequest + { + BucketName = _bucketName, + Key = id.ToString("D"), + InputStream = filestream, + ContentType = file.ContentType, + CannedACL = S3CannedACL.PublicRead + }; + + await _s3Client.PutObjectAsync(request); + + // create document object + var doc = new Document() + { + FileName = fileName, + FileType = file.ContentType, + FileSize = Convert.ToInt32(file.Length), + ObjectRefId = id, + CreatedDate = DateTime.Now + }; + await _dbContext.Set().AddAsync(doc); + await _dbContext.SaveChangesAsync(); + + return doc; + } + } + catch + { + throw; + } + finally + { + File.Delete(tmpFile); + } + } + + public async Task DownloadFileAsync(Guid fileId) + { + try + { + var doc = await _dbContext.Set().AsQueryable() + .FirstOrDefaultAsync(x => x.Id == fileId); + + if (doc == null) + throw new Exception(GlobalMessages.FileNotFoundOnServer); + + using (var memoryStream = new MemoryStream()) + { + GetObjectRequest request = new GetObjectRequest + { + BucketName = _bucketName, + Key = doc.ObjectRefId.ToString("D") + }; + + using (GetObjectResponse response = await _s3Client.GetObjectAsync(request)) + { + using (Stream responseStream = response.ResponseStream) + { + responseStream.CopyTo(memoryStream); + } + } + + var fileContent = memoryStream.ToArray(); + + return new FileDownloadResponse + { + FileName = doc.FileName, + FileType = doc.FileType, + FileContent = fileContent + }; + }; + } + catch + { + throw; + } + } + + public async Task DeleteFileAsync(Guid fileId) + { + try + { + var doc = await _dbContext.Set().AsQueryable() + .FirstOrDefaultAsync(x => x.Id == fileId); + + if (doc == null) + throw new Exception(GlobalMessages.FileNotFoundOnServer); + else + { + DeleteObjectRequest request = new DeleteObjectRequest + { + BucketName = _bucketName, + Key = doc?.ObjectRefId.ToString("D") + }; + + // delete from minio + await _s3Client.DeleteObjectAsync(request); + + _dbContext.Set().Remove(doc); + await _dbContext.SaveChangesAsync(); + } + } + catch + { + throw; + } + } + + public async Task ImagesPath(Guid? fileId) + { + if (fileId == null) + return ""; + + var doc = await _dbContext.Set().AsQueryable() + .FirstOrDefaultAsync(x => x.Id == fileId); + + if (doc == null) + throw new Exception(GlobalMessages.FileNotFoundOnServer); + var config = new AmazonS3Config + { + ServiceURL = _configuration["MinIO:Endpoint"], + ForcePathStyle = true + }; + + DateTime expires = DateTime.UtcNow.AddHours(6); + var _protocol = _configuration["Protocol"]; + GetPreSignedUrlRequest request = new GetPreSignedUrlRequest + { + BucketName = _bucketName, + Key = doc?.ObjectRefId.ToString("D"), + Expires = expires, + Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP + }; + string path = _s3Client.GetPreSignedURL(request); + + return path; + } + + public async Task ImagesPathByName(string fileName) + { + var config = new AmazonS3Config + { + ServiceURL = _configuration["MinIO:Endpoint"], + ForcePathStyle = true + }; + + DateTime expires = DateTime.UtcNow.AddHours(6); + var _protocol = _configuration["Protocol"]; + GetPreSignedUrlRequest request = new GetPreSignedUrlRequest + { + BucketName = _bucketName, + Key = fileName, + Expires = expires, + Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP + }; + string path = _s3Client.GetPreSignedURL(request); + + return path; + } + + #endregion + + public List GetAllIdByRoot(Guid? id) + { + try + { + var ret = new List(); + if (id == null) + return ret; + + var oc = _dbContext.Set().FirstOrDefault(x => x.Id == id); + if (oc != null) + ret.Add(oc.Id); + + var child = _dbContext.Set().AsQueryable().Where(x => x.Parent != null && x.Parent.Id == id).ToList(); + if (child.Any()) + { + foreach (var item in child) + { + ret.AddRange(GetAllIdByRoot(item.Id)); + } + } + + return ret; + } + catch + { + throw; + } + } + + public async Task CheckBmaOfficer(string CitizenId) + { + var data = await _dbContext.Set().FirstOrDefaultAsync(x => x.CitizenId == CitizenId); + if (data == null) + return null; + if (data.ProfileType.Trim().ToUpper() == "OFFICER") + return "OFFICER"; + if (data.EmployeeClass.Trim().ToUpper() == "PERM") + return "EMPLOYEE_PERM"; + if (data.EmployeeClass.Trim().ToUpper() == "TEMP") + return "EMPLOYEE_TEMP"; + return "EMPLOYEE"; + } + + public async Task UploadFileAsyncTemp(string fileName, string subFolder) + { + try + { + var fileContents = File.ReadAllBytes(fileName); + System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileContents); + //var fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName); + var fileExt = Path.GetExtension(fileName); + var fileType = MimeTypeMap.GetMimeType(fileExt); + var file_name = Path.GetFileName(fileName); + Console.WriteLine($"{_bucketName}{subFolder}"); + Console.WriteLine(fileName); + Console.WriteLine(file_name); + Console.WriteLine(filestream); + Console.WriteLine(fileType); + + var request = new PutObjectRequest + { + BucketName = $"{_bucketName}", + // BucketName = $"{_bucketName}{subFolder}", + Key = file_name, + InputStream = filestream, + ContentType = fileType, + CannedACL = S3CannedACL.PublicRead + }; + + await _s3Client.PutObjectAsync(request); + } + catch + { + throw; + } + } + + public async Task GenerateJsonFile(string json, string path, string fileName) + { + var tmpDir = Path.Combine("tmp"); + if (!Directory.Exists(tmpDir)) + Directory.CreateDirectory(tmpDir); + + var tmpFile = Path.Combine(tmpDir, $"{fileName}.json"); + + try + { + SaveToJsonFile(tmpFile, json); + await UploadFileAsyncTemp(tmpFile, path); + } + catch + { + throw; + } + finally + { + if (tmpFile != "") + { + if (System.IO.File.Exists(tmpFile)) + System.IO.File.Delete(tmpFile); + } + + } + } + + private void SaveToJsonFile(string fileName, string data) + { + TextWriter writer = null; + try + { + writer = new StreamWriter(fileName); + writer.Write(data); + } + catch + { + throw; + } + finally + { + if (writer != null) + writer.Close(); + } + } + + } +} \ No newline at end of file diff --git a/BMA.EHR.Infrastructure/Storage/MinIOService.cs b/BMA.EHR.Infrastructure/Storage/MinIOService.cs index a6f14d49..a65ec719 100644 --- a/BMA.EHR.Infrastructure/Storage/MinIOService.cs +++ b/BMA.EHR.Infrastructure/Storage/MinIOService.cs @@ -1,365 +1,365 @@ -using Amazon.S3; -using Amazon.S3.Model; -using BMA.EHR.Domain.Models.Documents; -using BMA.EHR.Domain.Shared; -using BMA.EHR.Infrastructure.Persistence; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using MimeTypes; -using System.Net.Http.Headers; +// using Amazon.S3; +// using Amazon.S3.Model; +// using BMA.EHR.Domain.Models.Documents; +// using BMA.EHR.Domain.Shared; +// using BMA.EHR.Infrastructure.Persistence; +// using Microsoft.AspNetCore.Hosting; +// using Microsoft.AspNetCore.Http; +// using Microsoft.EntityFrameworkCore; +// using Microsoft.Extensions.Configuration; +// using MimeTypes; +// using System.Net.Http.Headers; -namespace BMA.EHR.Application.Repositories -{ - public class MinIOService - { - #region " Fields " +// namespace BMA.EHR.Application.Repositories +// { +// public class MinIOService +// { +// #region " Fields " - private readonly ApplicationDBContext _context; - private readonly IConfiguration _configuration; - private readonly AmazonS3Client _s3Client; - private readonly IWebHostEnvironment _hostingEnvironment; - private string _bucketName = string.Empty; +// private readonly ApplicationDBContext _context; +// private readonly IConfiguration _configuration; +// private readonly AmazonS3Client _s3Client; +// private readonly IWebHostEnvironment _hostingEnvironment; +// private string _bucketName = string.Empty; - #endregion +// #endregion - #region " Constructors " +// #region " Constructors " - public MinIOService(ApplicationDBContext context, - IConfiguration configuration, - IWebHostEnvironment hostingEnvironment) - { - _context = context; - _configuration = configuration; - _hostingEnvironment = hostingEnvironment; +// public MinIOService(ApplicationDBContext context, +// IConfiguration configuration, +// IWebHostEnvironment hostingEnvironment) +// { +// _context = context; +// _configuration = configuration; +// _hostingEnvironment = hostingEnvironment; - var config = new AmazonS3Config - { - ServiceURL = _configuration["MinIO:Endpoint"], - ForcePathStyle = true - }; +// var config = new AmazonS3Config +// { +// ServiceURL = _configuration["MinIO:Endpoint"], +// ForcePathStyle = true +// }; - _s3Client = new AmazonS3Client(_configuration["MinIO:AccessKey"], _configuration["MinIO:SecretKey"], config); - this._bucketName = _configuration["MinIO:BucketName"] ?? "bma-recruit"; - } +// _s3Client = new AmazonS3Client(_configuration["MinIO:AccessKey"], _configuration["MinIO:SecretKey"], config); +// this._bucketName = _configuration["MinIO:BucketName"] ?? "bma-recruit"; +// } - #endregion +// #endregion - #region " Methods " +// #region " Methods " - public async Task UploadFileAsync(IFormFile file, string newFileName = "") - { - var fileName = ""; - var fileExt = Path.GetExtension(file.FileName); - if (newFileName != "") - fileName = $"{newFileName}"; - else - fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); +// public async Task UploadFileAsync(IFormFile file, string newFileName = "") +// { +// var fileName = ""; +// var fileExt = Path.GetExtension(file.FileName); +// if (newFileName != "") +// fileName = $"{newFileName}"; +// else +// fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); - var tmpDir = Path.Combine("tmp"); - if (!Directory.Exists(tmpDir)) - Directory.CreateDirectory(tmpDir); +// var tmpDir = Path.Combine("tmp"); +// if (!Directory.Exists(tmpDir)) +// Directory.CreateDirectory(tmpDir); - var tmpFile = Path.Combine(tmpDir, $"tmp_{DateTime.Now.ToString("ddMMyyyyHHmmss")}{fileExt}"); +// var tmpFile = Path.Combine(tmpDir, $"tmp_{DateTime.Now.ToString("ddMMyyyyHHmmss")}{fileExt}"); - try - { - using (var ms = new MemoryStream()) - { - var id = Guid.NewGuid(); - file.CopyTo(ms); - var fileBytes = ms.ToArray(); - System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileBytes); +// try +// { +// using (var ms = new MemoryStream()) +// { +// var id = Guid.NewGuid(); +// file.CopyTo(ms); +// var fileBytes = ms.ToArray(); +// System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileBytes); - var request = new PutObjectRequest - { - BucketName = _bucketName, - Key = id.ToString("D"), - InputStream = filestream, - ContentType = file.ContentType, - CannedACL = S3CannedACL.PublicRead - }; +// var request = new PutObjectRequest +// { +// BucketName = _bucketName, +// Key = id.ToString("D"), +// InputStream = filestream, +// ContentType = file.ContentType, +// CannedACL = S3CannedACL.PublicRead +// }; - await _s3Client.PutObjectAsync(request); +// await _s3Client.PutObjectAsync(request); - // create document object - var doc = new Document() - { - FileName = fileName, - FileType = file.ContentType, - FileSize = Convert.ToInt32(file.Length), - ObjectRefId = id, - CreatedDate = DateTime.Now - }; +// // create document object +// var doc = new Document() +// { +// FileName = fileName, +// FileType = file.ContentType, +// FileSize = Convert.ToInt32(file.Length), +// ObjectRefId = id, +// CreatedDate = DateTime.Now +// }; - await _context.Documents.AddAsync(doc); - await _context.SaveChangesAsync(); +// await _context.Documents.AddAsync(doc); +// await _context.SaveChangesAsync(); - return doc; - } - } - catch - { - throw; - } - finally - { - File.Delete(tmpFile); - } - } +// return doc; +// } +// } +// catch +// { +// throw; +// } +// finally +// { +// File.Delete(tmpFile); +// } +// } - public async Task DownloadFileAsync(Guid fileId) - { - try - { - var doc = await _context.Documents.AsQueryable() - .FirstOrDefaultAsync(x => x.Id == fileId); +// public async Task DownloadFileAsync(Guid fileId) +// { +// try +// { +// var doc = await _context.Documents.AsQueryable() +// .FirstOrDefaultAsync(x => x.Id == fileId); - if (doc == null) - throw new Exception(GlobalMessages.FileNotFoundOnServer); +// if (doc == null) +// throw new Exception(GlobalMessages.FileNotFoundOnServer); - using (var memoryStream = new MemoryStream()) - { - GetObjectRequest request = new GetObjectRequest - { - BucketName = _bucketName, - Key = doc.ObjectRefId.ToString("D") - }; +// using (var memoryStream = new MemoryStream()) +// { +// GetObjectRequest request = new GetObjectRequest +// { +// BucketName = _bucketName, +// Key = doc.ObjectRefId.ToString("D") +// }; - using (GetObjectResponse response = await _s3Client.GetObjectAsync(request)) - { - using (Stream responseStream = response.ResponseStream) - { - responseStream.CopyTo(memoryStream); - } - } +// using (GetObjectResponse response = await _s3Client.GetObjectAsync(request)) +// { +// using (Stream responseStream = response.ResponseStream) +// { +// responseStream.CopyTo(memoryStream); +// } +// } - var fileContent = memoryStream.ToArray(); +// var fileContent = memoryStream.ToArray(); - return new FileDownloadResponse - { - FileName = doc.FileName, - FileType = doc.FileType, - FileContent = fileContent - }; - }; - } - catch - { - throw; - } - } +// return new FileDownloadResponse +// { +// FileName = doc.FileName, +// FileType = doc.FileType, +// FileContent = fileContent +// }; +// }; +// } +// catch +// { +// throw; +// } +// } - public async Task DeleteFileAsync(Guid fileId) - { - try - { - var doc = await _context.Documents.AsQueryable() - .FirstOrDefaultAsync(x => x.Id == fileId); +// public async Task DeleteFileAsync(Guid fileId) +// { +// try +// { +// var doc = await _context.Documents.AsQueryable() +// .FirstOrDefaultAsync(x => x.Id == fileId); - if (doc == null) - throw new Exception(GlobalMessages.FileNotFoundOnServer); - else - { - DeleteObjectRequest request = new DeleteObjectRequest - { - BucketName = _bucketName, - Key = doc?.ObjectRefId.ToString("D") - }; +// if (doc == null) +// throw new Exception(GlobalMessages.FileNotFoundOnServer); +// else +// { +// DeleteObjectRequest request = new DeleteObjectRequest +// { +// BucketName = _bucketName, +// Key = doc?.ObjectRefId.ToString("D") +// }; - // delete from minio - await _s3Client.DeleteObjectAsync(request); +// // delete from minio +// await _s3Client.DeleteObjectAsync(request); - _context.Documents.Remove(doc); - await _context.SaveChangesAsync(); - } - } - catch - { - throw; - } - } +// _context.Documents.Remove(doc); +// await _context.SaveChangesAsync(); +// } +// } +// catch +// { +// throw; +// } +// } - public async Task ImagesPath(Guid? fileId) - { - if (fileId == null) - return ""; +// public async Task ImagesPath(Guid? fileId) +// { +// if (fileId == null) +// return ""; - var doc = await _context.Documents.AsQueryable() - .FirstOrDefaultAsync(x => x.Id == fileId); +// var doc = await _context.Documents.AsQueryable() +// .FirstOrDefaultAsync(x => x.Id == fileId); - if (doc == null) - throw new Exception(GlobalMessages.FileNotFoundOnServer); - var config = new AmazonS3Config - { - ServiceURL = _configuration["MinIO:Endpoint"], - ForcePathStyle = true - }; +// if (doc == null) +// throw new Exception(GlobalMessages.FileNotFoundOnServer); +// var config = new AmazonS3Config +// { +// ServiceURL = _configuration["MinIO:Endpoint"], +// ForcePathStyle = true +// }; - DateTime expires = DateTime.UtcNow.AddHours(6); - var _protocol = _configuration["Protocol"]; - GetPreSignedUrlRequest request = new GetPreSignedUrlRequest - { - BucketName = _bucketName, - Key = doc?.ObjectRefId.ToString("D"), - Expires = expires, - Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP - }; - string path = _s3Client.GetPreSignedURL(request); +// DateTime expires = DateTime.UtcNow.AddHours(6); +// var _protocol = _configuration["Protocol"]; +// GetPreSignedUrlRequest request = new GetPreSignedUrlRequest +// { +// BucketName = _bucketName, +// Key = doc?.ObjectRefId.ToString("D"), +// Expires = expires, +// Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP +// }; +// string path = _s3Client.GetPreSignedURL(request); - return path; - } +// return path; +// } - public async Task ImagesPathByName(string fileName) - { - var config = new AmazonS3Config - { - ServiceURL = _configuration["MinIO:Endpoint"], - ForcePathStyle = true - }; +// public async Task ImagesPathByName(string fileName) +// { +// var config = new AmazonS3Config +// { +// ServiceURL = _configuration["MinIO:Endpoint"], +// ForcePathStyle = true +// }; - DateTime expires = DateTime.UtcNow.AddHours(6); - var _protocol = _configuration["Protocol"]; - GetPreSignedUrlRequest request = new GetPreSignedUrlRequest - { - BucketName = _bucketName, - Key = fileName, - Expires = expires, - Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP - }; - string path = _s3Client.GetPreSignedURL(request); +// DateTime expires = DateTime.UtcNow.AddHours(6); +// var _protocol = _configuration["Protocol"]; +// GetPreSignedUrlRequest request = new GetPreSignedUrlRequest +// { +// BucketName = _bucketName, +// Key = fileName, +// Expires = expires, +// Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP +// }; +// string path = _s3Client.GetPreSignedURL(request); - return path; - } +// return path; +// } - #endregion +// #endregion - public List GetAllIdByRoot(Guid? id) - { - try - { - var ret = new List(); - if (id == null) - return ret; +// public List GetAllIdByRoot(Guid? id) +// { +// try +// { +// var ret = new List(); +// if (id == null) +// return ret; - var oc = _context.Organizations.FirstOrDefault(x => x.Id == id); - if (oc != null) - ret.Add(oc.Id); +// var oc = _context.Organizations.FirstOrDefault(x => x.Id == id); +// if (oc != null) +// ret.Add(oc.Id); - var child = _context.Organizations.AsQueryable().Where(x => x.Parent != null && x.Parent.Id == id).ToList(); - if (child.Any()) - { - foreach (var item in child) - { - ret.AddRange(GetAllIdByRoot(item.Id)); - } - } +// var child = _context.Organizations.AsQueryable().Where(x => x.Parent != null && x.Parent.Id == id).ToList(); +// if (child.Any()) +// { +// foreach (var item in child) +// { +// ret.AddRange(GetAllIdByRoot(item.Id)); +// } +// } - return ret; - } - catch - { - throw; - } - } +// return ret; +// } +// catch +// { +// throw; +// } +// } - public async Task CheckBmaOfficer(string CitizenId) - { - var data = await _context.Profiles.FirstOrDefaultAsync(x => x.CitizenId == CitizenId); - if (data == null) - return null; - if (data.ProfileType.Trim().ToUpper() == "OFFICER") - return "OFFICER"; - if (data.EmployeeClass.Trim().ToUpper() == "PERM") - return "EMPLOYEE_PERM"; - if (data.EmployeeClass.Trim().ToUpper() == "TEMP") - return "EMPLOYEE_TEMP"; - return "EMPLOYEE"; - } +// public async Task CheckBmaOfficer(string CitizenId) +// { +// var data = await _context.Profiles.FirstOrDefaultAsync(x => x.CitizenId == CitizenId); +// if (data == null) +// return null; +// if (data.ProfileType.Trim().ToUpper() == "OFFICER") +// return "OFFICER"; +// if (data.EmployeeClass.Trim().ToUpper() == "PERM") +// return "EMPLOYEE_PERM"; +// if (data.EmployeeClass.Trim().ToUpper() == "TEMP") +// return "EMPLOYEE_TEMP"; +// return "EMPLOYEE"; +// } - public async Task UploadFileAsyncTemp(string fileName, string subFolder) - { - try - { - var fileContents = File.ReadAllBytes(fileName); - System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileContents); - //var fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName); - var fileExt = Path.GetExtension(fileName); - var fileType = MimeTypeMap.GetMimeType(fileExt); - var file_name = Path.GetFileName(fileName); - Console.WriteLine($"{_bucketName}{subFolder}"); - Console.WriteLine(fileName); - Console.WriteLine(file_name); - Console.WriteLine(filestream); - Console.WriteLine(fileType); +// public async Task UploadFileAsyncTemp(string fileName, string subFolder) +// { +// try +// { +// var fileContents = File.ReadAllBytes(fileName); +// System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileContents); +// //var fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName); +// var fileExt = Path.GetExtension(fileName); +// var fileType = MimeTypeMap.GetMimeType(fileExt); +// var file_name = Path.GetFileName(fileName); +// Console.WriteLine($"{_bucketName}{subFolder}"); +// Console.WriteLine(fileName); +// Console.WriteLine(file_name); +// Console.WriteLine(filestream); +// Console.WriteLine(fileType); - var request = new PutObjectRequest - { - BucketName = $"{_bucketName}", - // BucketName = $"{_bucketName}{subFolder}", - Key = file_name, - InputStream = filestream, - ContentType = fileType, - CannedACL = S3CannedACL.PublicRead - }; +// var request = new PutObjectRequest +// { +// BucketName = $"{_bucketName}", +// // BucketName = $"{_bucketName}{subFolder}", +// Key = file_name, +// InputStream = filestream, +// ContentType = fileType, +// CannedACL = S3CannedACL.PublicRead +// }; - await _s3Client.PutObjectAsync(request); - } - catch - { - throw; - } - } +// await _s3Client.PutObjectAsync(request); +// } +// catch +// { +// throw; +// } +// } - public async Task GenerateJsonFile(string json, string path, string fileName) - { - var tmpDir = Path.Combine("tmp"); - if (!Directory.Exists(tmpDir)) - Directory.CreateDirectory(tmpDir); +// public async Task GenerateJsonFile(string json, string path, string fileName) +// { +// var tmpDir = Path.Combine("tmp"); +// if (!Directory.Exists(tmpDir)) +// Directory.CreateDirectory(tmpDir); - var tmpFile = Path.Combine(tmpDir, $"{fileName}.json"); +// var tmpFile = Path.Combine(tmpDir, $"{fileName}.json"); - try - { - SaveToJsonFile(tmpFile, json); - await UploadFileAsyncTemp(tmpFile, path); - } - catch - { - throw; - } - finally - { - if (tmpFile != "") - { - if (System.IO.File.Exists(tmpFile)) - System.IO.File.Delete(tmpFile); - } +// try +// { +// SaveToJsonFile(tmpFile, json); +// await UploadFileAsyncTemp(tmpFile, path); +// } +// catch +// { +// throw; +// } +// finally +// { +// if (tmpFile != "") +// { +// if (System.IO.File.Exists(tmpFile)) +// System.IO.File.Delete(tmpFile); +// } - } - } +// } +// } - private void SaveToJsonFile(string fileName, string data) - { - TextWriter writer = null; - try - { - writer = new StreamWriter(fileName); - writer.Write(data); - } - catch - { - throw; - } - finally - { - if (writer != null) - writer.Close(); - } - } +// private void SaveToJsonFile(string fileName, string data) +// { +// TextWriter writer = null; +// try +// { +// writer = new StreamWriter(fileName); +// writer.Write(data); +// } +// catch +// { +// throw; +// } +// finally +// { +// if (writer != null) +// writer.Close(); +// } +// } - } -} \ No newline at end of file +// } +// } \ No newline at end of file diff --git a/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs b/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs index 2e54ccbe..65d21c13 100644 --- a/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs +++ b/BMA.EHR.Retirement.Service/Controllers/RetirementResignController.cs @@ -508,6 +508,13 @@ namespace BMA.EHR.Retirement.Service.Controllers "", true ); + await _repositoryNoti.PushNotificationAsync( + Guid.Parse("08db721d-ae22-424d-8f4a-87ba30cc3ee7"), + $"คำขอลาออกขอ {updated.Profile.Prefix?.Name}{updated.Profile.FirstName} {updated.Profile.LastName} ได้รับการอนุมัติจากผู้บังคับบัญชา", + $"คำขอลาออกขอ {updated.Profile.Prefix?.Name}{updated.Profile.FirstName} {updated.Profile.LastName} ได้รับการอนุมัติจากผู้บังคับบัญชา", + "", + true + ); await _context.SaveChangesAsync(); return Success(); @@ -547,6 +554,13 @@ namespace BMA.EHR.Retirement.Service.Controllers "", true ); + await _repositoryNoti.PushNotificationAsync( + Guid.Parse("08db721d-ae22-424d-8f4a-87ba30cc3ee7"), + $"คำขอลาออกขอ {updated.Profile.Prefix?.Name}{updated.Profile.FirstName} {updated.Profile.LastName} ถูกยับยั้งจากผู้บังคับบัญชา", + $"คำขอลาออกขอ {updated.Profile.Prefix?.Name}{updated.Profile.FirstName} {updated.Profile.LastName} ถูกยับยั้งจากผู้บังคับบัญชา", + "", + true + ); await _context.SaveChangesAsync(); return Success(); From d47404a5b473a627ba81a88032385866e308c73e Mon Sep 17 00:00:00 2001 From: Kittapath Date: Thu, 14 Sep 2023 12:40:59 +0700 Subject: [PATCH 4/8] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=81?= =?UTF-8?q?=E0=B8=B2=E0=B8=A8=20minio=E0=B9=83=E0=B8=99=20repo=20=E0=B9=80?= =?UTF-8?q?=E0=B8=81=E0=B8=A9=E0=B8=B5=E0=B8=A2=E0=B8=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repositories/Reports/RetireReportRepository.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs index 35932f9b..444ed5d2 100644 --- a/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs @@ -16,16 +16,19 @@ namespace BMA.EHR.Application.Repositories.Reports private readonly IApplicationDBContext _dbContext; private readonly IWebHostEnvironment _hostingEnvironment; + private readonly MinIOService _documentService; #endregion #region " Constructor and Destructor " public RetireReportRepository(IApplicationDBContext dbContext, + MinIOService documentService, IWebHostEnvironment hostEnvironment) { _dbContext = dbContext; _hostingEnvironment = hostEnvironment; + _documentService = documentService; } #endregion From 805c28e7452ce31e30407093eaa9fe4e63ba7017 Mon Sep 17 00:00:00 2001 From: "Harid Promsri (Bright)" Date: Thu, 14 Sep 2023 16:01:59 +0700 Subject: [PATCH 5/8] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84?= =?UTF-8?q?=E0=B8=82=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=87=E0=B8=B2=E0=B8=99?= =?UTF-8?q?=E0=B9=81=E0=B8=9A=E0=B8=9A=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B9=80?= =?UTF-8?q?=E0=B8=A1=E0=B8=B4=E0=B8=99=E0=B8=9C=E0=B8=A5(=E0=B8=84?= =?UTF-8?q?=E0=B8=93=E0=B8=B0=E0=B8=81=E0=B8=A3=E0=B8=A3=E0=B8=A1=E0=B8=81?= =?UTF-8?q?=E0=B8=B2=E0=B8=A3)=20=E0=B9=84=E0=B8=A1=E0=B9=88=E0=B8=95?= =?UTF-8?q?=E0=B8=A3=E0=B8=87=E0=B8=81=E0=B8=B1=E0=B8=9A=20ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reports/ProbationReportRepository.cs | 4 ++-- .../EvaluateChairmanAssignResponse.cs | 1 + .../Controllers/ProbationReportController.cs | 19 ++++-------------- ...ะเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp | Bin 5764 -> 5766 bytes ...ะเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-2.trdp | Bin 3779 -> 3832 bytes 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs index 6a7423f1..59cddefa 100644 --- a/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs @@ -162,7 +162,7 @@ namespace BMA.EHR.Application.Repositories.Reports { No = string.IsNullOrEmpty(evaluate_assign.data.evaluate.no.ToString()) ? string.Empty : evaluate_assign.data.evaluate.no.ToString().ToThaiNumber(), EvaluateDateStart = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(), - EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(), + EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_finish.ToThaiFullDate().ToString().ToThaiNumber(), Name = string.IsNullOrEmpty(evaluate_assign.data.experimentee.name) ? string.Empty : evaluate_assign.data.experimentee.name, Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position, Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department, @@ -206,7 +206,7 @@ namespace BMA.EHR.Application.Repositories.Reports { No = string.IsNullOrEmpty(evaluate_assign.data.evaluate.no.ToString()) ? string.Empty : evaluate_assign.data.evaluate.no.ToString().ToThaiNumber(), EvaluateDateStart = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(), - EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(), + EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_finish.ToThaiFullDate().ToString().ToThaiNumber(), Name = string.IsNullOrEmpty(evaluate_assign.data.experimentee.name) ? string.Empty : evaluate_assign.data.experimentee.name, Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position, Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department, diff --git a/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs b/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs index 78878067..e40d274d 100644 --- a/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs +++ b/BMA.EHR.Application/Responses/EvaluateChairmanAssignResponse.cs @@ -126,6 +126,7 @@ namespace BMA.EHR.Application.Responses public int develop_other_training_percent { get; set; } public int develop_total_percent { get; set; } public int develop_result { get; set; } + public int evaluate_result { get; set; } public DateTime createdAt { get; set; } public DateTime updatedAt { get; set; } } diff --git a/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs b/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs index d6e48698..4da99ca5 100644 --- a/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/ProbationReportController.cs @@ -1,22 +1,10 @@ using BMA.EHR.Domain.Common; -using BMA.EHR.Domain.Extensions; -using BMA.EHR.Domain.Shared; using BMA.EHR.Application.Repositories.Reports; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; using Swashbuckle.AspNetCore.Annotations; -using DocumentFormat.OpenXml.Drawing; using Telerik.Reporting; using Telerik.Reporting.Processing; -using System.IO; -using Newtonsoft.Json; -using BMA.EHR.Application.Responses; -using static BMA.EHR.Application.Responses.EvaluateRecordAssignResponse; -using static BMA.EHR.Application.Responses.ProbationAssignResponse; -using DocumentFormat.OpenXml.Drawing.Charts; -using DocumentFormat.OpenXml.Bibliography; -using DocumentFormat.OpenXml.Wordprocessing; namespace BMA.EHR.Report.Service.Controllers { @@ -819,7 +807,7 @@ namespace BMA.EHR.Report.Service.Controllers Check_Moral2Level2 = moral2.col2, Check_Moral2Level3 = moral2.col3, Check_Moral2Level4 = moral2.col4, - Check_Moral2Level5 = moral2.col4, + Check_Moral2Level5 = moral2.col5, Check_Moral3Level1 = moral3.col1, Check_Moral3Level2 = moral3.col2, Check_Moral3Level3 = moral3.col3, @@ -1033,7 +1021,7 @@ namespace BMA.EHR.Report.Service.Controllers Check_Moral2Level2 = moral2.col2, Check_Moral2Level3 = moral2.col3, Check_Moral2Level4 = moral2.col4, - Check_Moral2Level5 = moral2.col4, + Check_Moral2Level5 = moral2.col5, Check_Moral3Level1 = moral3.col1, Check_Moral3Level2 = moral3.col2, Check_Moral3Level3 = moral3.col3, @@ -1091,6 +1079,7 @@ namespace BMA.EHR.Report.Service.Controllers develop_other_training_percent = evaluate.develop_other_training_percent, develop_total_percent = evaluate.develop_total_percent, develop_result = evaluate.develop_result, + evaluate_result = evaluate.evaluate_result, }); var tblEvaluateAssign1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"]; @@ -1101,7 +1090,7 @@ namespace BMA.EHR.Report.Service.Controllers tblEvaluateAssign3.DataSource = _Evaluate; var tblEvaluateAssign4 = (Telerik.Reporting.Table)report2.Items["detailSection1"].Items["table3"]; tblEvaluateAssign4.DataSource = _Evaluate; - + report2.DataSource = _Evaluate; var reportBook = new ReportBook(); reportBook.Reports.Add(report); reportBook.Reports.Add(report2); diff --git a/BMA.EHR.Report.Service/Reports/17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp b/BMA.EHR.Report.Service/Reports/17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-1.trdp index f12a4e52135af3516da25e1e07479bfb0e8129cb..9c1dad85239a605dacad29c89f0493c662dc9be6 100644 GIT binary patch delta 5450 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 delta 5450 zcmY+IWmMFS*2Ni0Vi*{@a|j)}ONLUqyGt5G1gQc3bT>$ebSWw!pybdk-5{d0gybkg zy*|&o?ppVL+-IHjJMn3+9m5yJN29BOgG-5pg++jM@&;})pGrYF_*YJ((})9uO}C-p zS1i=6^6RVw!&@?5o7Bxl5|7rv@QxePx=mwtMQ@|$TZ@;JQja&wyE~HkIMcu4r>)Ar z0prv=NQ?p>5nJO0U(LqHA;VUD_s4bb)kTNok%Ud|UfT|LNUrvBPiv z+T50&1iK4!zqXl`&+QEx*Oy-a%t$S8QFK=yG_%}%m2wiRy|M(`d)s2}?%p4OYH>_& zTYj~jpg{DKgum89dK?YxoJG!8Hq9|^GS;|X$gpggqm4UB9n&(-`W5T5Bz(4s?k@`( z13RV`IG?%6X3z6<^p~%9{yUbYcj-3ZQcix7`Tpz1{ zFfZAP+S*n>M_cVrY*xw(AR0eK*4(-J`KvmvJzMZ$sRt$={+{$fU918~{=i%Ri5n2V zb-)otKqskAVc=2WjvRXR?rb%OcLQXJsNe*n!gygfaIXNC(~K2?-cswU+7)-NbcD%T z>t;(;;g!fH61zXG2RI5mQku9S%s_+#Dyt^4F(^b}ug>>NjX#@9z{dVN8AeokOG;R? zjsKA^UnIKg<0n@ zI(;#2t1B68410g8>wD%u|29FPM^axC-Vw z=rHzI$>9x}K_xXnL&tU2{L!6pG9gOnJ^fH$v5^1@ox`*eNc;pc#6mRKL6#D8he>AG zRPiv2T8mu00{kGSL|Ue=m!raiC*L>G2fKS89>22KG@GfPAG&){wd8;86xiz}6fx^% zOSzQziM8k~sA_@EW5lAdfFLWV$yvxGy(Crej3zB~LVg+oit&bGP|g%31Dv!R!&}~k zR)@(SvZ=BU%@PtgMWT2~8C4pI9Xaubw&O7b^H z<B>$Uxb@szY#4$4GsYOmTeJaP?D!=o+w3PhN^c*f!{4ql({9fC2f z$gxH=KvDf8`a20qXuVsG3TV_Gi5qOxG^b%m!Xal)OMvmlLlEq0*_FNYrw|62A#FO# zISS@4h;&j~F^vl2t(6Mq`X@fo=7Hs|0paxofsPn|lhx`jVBIwZauo^#<=S5_~9_b&?Z_Qq2h73N8NO#{~ce;N5GhX<9 zGELai9Dd(w*WErXVO$JDpY7AItm0PO^EV)l)g}ttfoFtHJ=>rG=P1-~mvhA%L;^J2 z!0_%@T-Ed>aNqE;l`+=03f#~K3BT@@($-KMPl=xwu`fao%KX)$TBMxoOnj1q#5x44 zj^ZdL%TpdhbjE*+JTLCtBSDl&(;2;FR_Mtgx4Azz7JPG%)?yCC)4wV?6SE$YgGqw$ zj_6=lkPpKvEZ@|~g2Z*_;JA-*CV+$VD33jJZ*nNlQa{jJ{>Nsm#=+}8gi_wb8wm~!h0ap6&7gz>q1A&*TEFzK6vQ@iekL@vy2frBOH8jX0YQOk z>^EG7)PiK15$b|ux+fvvl&D%zWYCL^c6!FUgm2%{hxD(X=qW@ck zyz6(EPlAe<4>*|2z@GuoC20sS$aHnuhce#$8cnM(%W9@YoZ&t4g<|{XT@FH^KSH+p z4bK4oubV4uOu8B>`s<`!)h14_6Djn0o|$rH-+Tsj2>z#mTV!Wsj*UOO=51+ z!g{kECFw@XQVui0TBSg$aeSL!reD#l{&UM7Yd;rnNDH)TP);P~*i1ix=tS1(bOv6B zW(8HDGS(lCp*-wue%=SzeG;R&dgvPPaflv+m!&S8c4}O>Qn_u}HWmMA)s#jy;i{YB zBdynxH9}IuEQt9q(HTh=XpG{3ub^RYK+0pWa_^LqzI+Ko%9o})GA9CY{S*OL_y1JJ z=gORHNEX$<8M!+Coh3~Ju!k3`j8$nS{IL+Upu-Krr0h{t-(JGrnDLg(T2fLa_*6#Z z)lh5fF`0+Q{#>q{!|bLm99Sc(wzAfmo|;)1;Oa=da?xtWO@Oxm0Ms?(q*M(X4ob|RDD;PhrROLo~60GBaGg6F45jZ_36REq`aB;FbFHsQd zuOQCci?UhA+_%_lAH9yyS**lMT|883Zsq}JuwH~BtT7b{qYCoGbRq)=`(#06X6ziv z2tf_H9Rq-pK)#E>gX&T*AAuMVsZ!A^@ErSGMA3k=#OA0Hcyv%r>8z8Qp_-bs@0-S~ zN_zj{1D`6D7Vnto5rbVl>Z(hT@on~pY0UaThC4c``XSrr)p6%TyQK<2tPh_cUHH3% zb?Ra(ef7fbi;XbQEm*J#rO^u87ogM%lW9uDQaXXRLR72*!YB5ifdFy)IKKcXhe=9u zoOm{l0qn73k3KTKV`1s)O)6F)VW_e>_jGKs?nX&9=Q=K{zv68BbFOoG!SnZocEcy+jduD{(#IS|*%mjYcz7vq@6V*p*=r?_; zMlH8(lFg`w^Qut|kwdZ==?%kjKT}jco?&&|6IC_4yX@wS&6QgYHG6w#;$5)WRm|Qa zI*lIH_e8x#l{pTxRi*>YHrZ}hMuz>8qSXXK$&EJ+hAXu{S$aP|A%hE8uheGiD;_*- z`*tvr!!UPlQ`x$SWzp618vKV`?1snYB!j=a!EAg63(fqHp&bv%!u(zN-b5Xm--qrOd1|vKq?g1;{5` z^JJ#xIw{zK37Xf*xLR!)b~par&zGQS9gBKJ zgC^vfks2_>&4q+hGj`dxO_in={WF>3#=dpe_H@pZ#P`HUR~KrtTy1;Wai6Y{mP~vOUAKf&_dXYrG zaa_zkbgn--;4yFB1sg#G z$f**0C(5}iFStm1MmZM$9wFzm%8k4Ljsl|rUcH{4M_bR+3C5#C{h>=qphzl_7Y9gBSqJJ^dCh*Xr~eX>2p3<^I=Ltu3X1 zAd;lD*k%jO1x{5mL5w+RH4EZ0Uz-~x1JfDKTls069rS0UT11CO_cBcMIlao^?fLwH zY*x=jtWM2aH}50wTa8j0+|HI}@m{JOTSV`?UW=j3JE&+}^p=YBhFTLJWPW@=i%Wj` zC9e-?j8Dj|j)}(M<4$0>sCP3}?szc2nLqh6;E_Wo{rGjt$D&I+^hQ(tN$Vo6mIv<| zSD8xba8;yEbqHsqPH{i-h+-n-d&^+qRpid?CJEwV)w%GBsPF)J#NW>8%G_&%=uY41 zJYQ9UMkcG#j=h_9Hr$0Cgodk!b!1Q-G@Jol8DTeF3~Rqvi$Dw9&$K2(QmtnaIX;Ji zx&R{5BIFUXEH|ltvc}r+{zAVGJmb$Exj|U)Y0LMb^Qe$f`tbO#SA0W9*sApwoATn2 zFek%8&~<-r`F89rGA#p46kCW~U ztT}6DWbZ?w?e7mK-5`?3I_%i}m%X&(nVQlZ;{v?nHA~*ihc7XasqUF2VnWif zw_qm^Rl|ujK=ID(VtDrVCcdO%gJub*N$uZ;W=xVQV;VSKYu)xSMkzpU31tbwEr*TZ zvT2De3E+V_%XpvTDe?rp^LGQ407>FXc{-`wZcj&qbEi zpS5bQ_V3Pu>OyyvMhAt0s5v%EQah}bNZiuex3C+lk|DN%e4L+=guw`xb zBjuklhMLU2^_8w?5B0$GS3m_IRCd)%1?WMl0S8}f> z%S4dK5)IMW7+bDj7DHI2#T0p=(BZJjV9F!%iX{X#oycFja}q>-2BTf$NP-U>jGR|C z-0pX#(-M(8+$PGvD^7Xip*Blz?gki!z<9ZO(?g|;sb+I@vA{j$tG=EbmP7S?${d@k z(Uik>yyh+eGQ}6WBnS!qaA!2JlUsYx*W;NEXcE1N`70)2Ll3A6uf_PSr9;pM*EiWA*V)nRK=4>Qs_`D9{ z^kcyOd-W1Y08Sr=d}`;*JRRmZ_BawxGId-VXUbdDX_TlOG#!S_fw4P)<`rV%k``M~ zyK*m$!^(%06Yxxl=v1LAchuZef2{#rxZWNVql9l9m)%S5A(!$_H;qbKQ!&+)jh_6` z&BRA#W1cP|AyK7!AKA(C+03cUxGU0WRl#&ZzJh!JdtaQE@-86CN3Nt`ziVry9LGja z>v*H%DsRst4;E@wi#_%da#QOJ{t$O$9*8%TrU{& z;P@||uw^DXx(M+1HBP%Y$aZWNTPdBrlT}GFSRrPJwzOY4Hi@m?$e;6O;!ruJfLp1d z5F4Q5%}%__|8qahsWhtOOChVHZ5vEY3hmo(st)jKWHi7YnhDR`Pg7v5C`Y@r$_J0h zSXIstI!b1b5^sd;Z|K@m2IIe2$uapL(S}3VvI7&@X1(vk#qva-t@k9g!J&WL_qNP3 zC0Pa|VC1$Z74Bf5p_6U7W`LKN0nrS6XA1`eFpx(>Vul0lDSWi;#@^sc$1C8Sr&!N}vQVw3e}{jXN5 zFd@0{9=jwviPMj;n!wJt7B3div?j&eB~S`@I}{ zN`7`_UvvY%qYwh0 zS;XX7A9#_ysdG#}A{8N;z$s|=@=4~?IelfJEHBRFo_uZNpC7_)l(PTY+PO|jjQB=I zZ0et^#_03+L2{F diff --git a/BMA.EHR.Report.Service/Reports/17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-2.trdp b/BMA.EHR.Report.Service/Reports/17-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับคณะกรรมการ-2.trdp index 4a3ce0daefeefd01b685fe0f6058c9c51476141f..25f905b04a58dd47e96463e756cbb54a52365f13 100644 GIT binary patch delta 3497 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 From 806eee393b8c1c81a01498c167614e22c1f9740e Mon Sep 17 00:00:00 2001 From: "Harid Promsri (Bright)" Date: Thu, 14 Sep 2023 17:19:20 +0700 Subject: [PATCH 6/8] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84?= =?UTF-8?q?=E0=B8=82=E0=B9=81=E0=B8=AA=E0=B8=94=E0=B8=87=E0=B8=A3=E0=B8=B2?= =?UTF-8?q?=E0=B8=A2=E0=B8=8A=E0=B8=B7=E0=B9=88=E0=B8=AD=E0=B8=A3=E0=B8=B2?= =?UTF-8?q?=E0=B8=A2=E0=B8=87=E0=B8=B2=E0=B8=99=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B8=81=E0=B8=B2=E0=B8=A8=E0=B9=80=E0=B8=81=E0=B8=A9=E0=B8=B5?= =?UTF-8?q?=E0=B8=A2=E0=B8=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reports/RetireReportRepository.cs | 110 ++++++++++-------- .../Responses/ProfileJsonRequest.cs | 24 ++++ .../Controllers/RetireReportController.cs | 21 ++-- .../Reports/31-ประกาศเกษียณข้าราชการ-1.trdp | Bin 29087 -> 28845 bytes .../Reports/31-ประกาศเกษียณข้าราชการ-2.trdp | Bin 28952 -> 28894 bytes .../Reports/31-ประกาศเกษียณข้าราชการ-3.trdp | Bin 28971 -> 28905 bytes .../Reports/32-ประกาศเกษียณลูกจ้างประจำ.trdp | Bin 29263 -> 28898 bytes BMA.EHR.Report.Service/appsettings.json | 6 +- 8 files changed, 99 insertions(+), 62 deletions(-) create mode 100644 BMA.EHR.Application/Responses/ProfileJsonRequest.cs diff --git a/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs index 444ed5d2..cbe645cc 100644 --- a/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/RetireReportRepository.cs @@ -1,12 +1,15 @@ using System.Reflection.Metadata; using BMA.EHR.Application.Common.Interfaces; +using BMA.EHR.Application.Responses; using BMA.EHR.Domain.Extensions; +using BMA.EHR.Domain.Models.HR; using BMA.EHR.Domain.Models.Organizations; using BMA.EHR.Domain.Models.Retirement; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; namespace BMA.EHR.Application.Repositories.Reports { @@ -70,64 +73,73 @@ namespace BMA.EHR.Application.Repositories.Reports if (retireHistorys == null) return null; - var profile_retireHistory = await _dbContext.Set() - .Where(x => x.RetirementPeriod == retire) - .OrderBy(x => x.Order) - .Select(x => new - { - order = x.Order, - id = x.Id, - reason = x.Reason, - remove = x.Remove, - profileId = x.Profile.Id, - citizenId = x.Profile.CitizenId, - prefix = x.Profile.Prefix == null ? null : x.Profile.Prefix.Name, - fullName = $"{x.Profile.FirstName} {x.Profile.LastName}", - organizationOrganization = x.Profile.OrganizationOrganization, - oc = x.Profile.Oc, - position = x.Profile.Position == null ? null : x.Profile.Position.Name, - positionType = x.Profile.PositionType == null ? null : x.Profile.PositionType.Name, - positionExecutive = x.Profile.PositionExecutive, - posNo = x.Profile.PosNo == null ? null : x.Profile.PosNo.Name, - positionEmployeePosition = x.Profile.PositionEmployeePosition, - positionEmployeeLevel = x.Profile.PositionEmployeeLevel, - positionEmployeeGroup = x.Profile.PositionEmployeeGroup, - posNoEmployee = x.Profile.PosNoEmployee, - }) - .ToListAsync(); - - return new { retireHistorys.Id, retireHistorys.CreatedAt, Year = retireHistorys.Year.ToThaiYear().ToString().ToThaiNumber(), retireHistorys.Round, retireHistorys.Type, retireHistorys.TypeReport, Total = retireHistorys.Total.ToString().ToThaiNumber(), profile = profile_retireHistory }; + //var profile_retireHistory = await _dbContext.Set() + // .Where(x => x.RetirementPeriod == retire) + // .OrderBy(x => x.Order) + // .Select(x => new + // { + // order = x.Order, + // id = x.Id, + // reason = x.Reason, + // remove = x.Remove, + // profileId = x.Profile.Id, + // citizenId = x.Profile.CitizenId, + // prefix = x.Profile.Prefix == null ? string.Empty : x.Profile.Prefix.Name, + // fullName = $"{x.Profile.FirstName} {x.Profile.LastName}", + // organizationOrganization = x.Profile.OrganizationOrganization, + // oc = x.Profile.Oc, + // position = x.Profile.Position == null ? string.Empty : x.Profile.Position.Name, + // positionType = x.Profile.PositionType == null ? string.Empty : x.Profile.PositionType.Name, + // positionExecutive = x.Profile.PositionExecutive, + // posNo = x.Profile.PosNo == null ? string.Empty : x.Profile.PosNo.Name, + // positionEmployeePosition = x.Profile.PositionEmployeePosition, + // positionEmployeeLevel = x.Profile.PositionEmployeeLevel, + // positionEmployeeGroup = x.Profile.PositionEmployeeGroup, + // posNoEmployee = x.Profile.PosNoEmployee, + // }) + // .ToListAsync(); + //return new { retireHistorys.Detail, retireHistorys.Id, retireHistorys.CreatedAt, Year = retireHistorys.Year.ToThaiYear().ToString().ToThaiNumber(), retireHistorys.Round, retireHistorys.Type, retireHistorys.TypeReport, Total = retireHistorys.Total.ToString().ToThaiNumber(), profile = profile_retireHistory }; + using (var client = new HttpClient()) + { + var url = await _documentService.ImagesPathByName($"{retireHistorys.ProfileFile}.json"); + var responseTask = client.GetAsync(url); + var results = responseTask.Result; + var json = results.Content.ReadAsStringAsync().Result; + List profiles = JsonConvert.DeserializeObject>(json); + profiles = profiles.OrderBy(x => x.order).ToList(); + return new { retireHistorys.Detail, retireHistorys.Id, retireHistorys.CreatedAt, Year = retireHistorys.Year.ToThaiYear().ToString().ToThaiNumber(), retireHistorys.Round, retireHistorys.Type, retireHistorys.TypeReport, Total = retireHistorys.Total.ToString().ToThaiNumber(), profile = profiles}; + } } else { var profile_retire = await _dbContext.Set() - .Where(x => x.RetirementPeriod == retire) - .OrderBy(x => x.Order) - .Select(x => new - { - order = x.Order, - id = x.Id, - reason = x.Reason, - remove = x.Remove, - profileId = x.Profile.Id, - citizenId = x.Profile.CitizenId, - prefix = x.Profile.Prefix == null ? null : x.Profile.Prefix.Name, - fullName = $"{x.Profile.FirstName} {x.Profile.LastName}", - organizationOrganization = x.Profile.OrganizationOrganization, - oc = x.Profile.Oc, - position = x.Profile.Position == null ? null : x.Profile.Position.Name, - positionType = x.Profile.PositionType == null ? null : x.Profile.PositionType.Name, - positionExecutive = x.Profile.PositionExecutive, - posNo = x.Profile.PosNo == null ? null : x.Profile.PosNo.Name, - positionEmployeePosition = x.Profile.PositionEmployeePosition, - positionEmployeeLevel = x.Profile.PositionEmployeeLevel, - positionEmployeeGroup = x.Profile.PositionEmployeeGroup, + .Where(x => x.RetirementPeriod == retire) + .OrderBy(x => x.Order) + .Select(x => new + { + order = x.Order, + id = x.Id, + reason = x.Reason, + remove = x.Remove, + profileId = x.Profile.Id, + citizenId = x.Profile.CitizenId, + prefix = x.Profile.Prefix == null ? string.Empty : x.Profile.Prefix.Name, + fullName = $"{x.Profile.FirstName} {x.Profile.LastName}", + organizationOrganization = x.Profile.OrganizationOrganization, + oc = x.Profile.Oc, + position = x.Profile.Position == null ? string.Empty : x.Profile.Position.Name, + positionType = x.Profile.PositionType == null ? string.Empty : x.Profile.PositionType.Name, + positionExecutive = x.Profile.PositionExecutive, + posNo = x.Profile.PosNo == null ? string.Empty : x.Profile.PosNo.Name, + positionEmployeePosition = x.Profile.PositionEmployeePosition, + positionEmployeeLevel = x.Profile.PositionEmployeeLevel, + positionEmployeeGroup = x.Profile.PositionEmployeeGroup, posNoEmployee = x.Profile.PosNoEmployee, }) .ToListAsync(); - return new { retire.Id, retire.CreatedAt, Year = retire.Year.ToThaiYear().ToString().ToThaiNumber(), retire.Round, retire.Type, retire.TypeReport, Total = profile_retire.Count.ToString().ToThaiNumber(), profile = profile_retire }; + return new { retire.Detail, retire.Id, retire.CreatedAt, Year = retire.Year.ToThaiYear().ToString().ToThaiNumber(), retire.Round, retire.Type, retire.TypeReport, Total = profile_retire.Count.ToString().ToThaiNumber(), profile = profile_retire }; } } #endregion diff --git a/BMA.EHR.Application/Responses/ProfileJsonRequest.cs b/BMA.EHR.Application/Responses/ProfileJsonRequest.cs new file mode 100644 index 00000000..6c19f255 --- /dev/null +++ b/BMA.EHR.Application/Responses/ProfileJsonRequest.cs @@ -0,0 +1,24 @@ +namespace BMA.EHR.Application.Responses +{ + public class ProfileJsonRequest + { + public int order { get; set; } + public Guid id { get; set; } + public string reason { get; set; } + public string remove { get; set; } + public Guid profileId { get; set; } + public string? citizenId { get; set; } + public string? prefix { get; set; } + public string? fullName { get; set; } + public string? organizationOrganization { get; set; } + public string? oc { get; set; } + public string? position { get; set; } + public string? positionType { get; set; } + public string? positionExecutive { get; set; } + public string? posNo { get; set; } + public string? positionEmployeePosition { get; set; } + public string? positionEmployeeLevel { get; set; } + public string? positionEmployeeGroup { get; set; } + public string? posNoEmployee { get; set; } + } +} diff --git a/BMA.EHR.Report.Service/Controllers/RetireReportController.cs b/BMA.EHR.Report.Service/Controllers/RetireReportController.cs index 0dfb6a88..9d56912b 100644 --- a/BMA.EHR.Report.Service/Controllers/RetireReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/RetireReportController.cs @@ -42,14 +42,10 @@ namespace BMA.EHR.Report.Service.Controllers public async Task> GetProfileRetirement([FromRoute] Guid Id, string exportType = "pdf") { var retire = await _service.GetProfileRetirementdAsync(Id); - if (retire == null) + if (retire != null) { - return NotFound(); - } - else - { - var reportfile = ""; - var returnfile = ""; + var reportfile = string.Empty; + var returnfile = string.Empty; exportType = exportType.Trim(); switch (retire.GetType().GetProperty("Type").GetValue(retire)) { @@ -89,9 +85,10 @@ namespace BMA.EHR.Report.Service.Controllers { report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); } - //Add Parameter - report.ReportParameters["Year"].Value = retire.GetType().GetProperty("Year").GetValue(retire); - report.ReportParameters["Total"].Value = retire.GetType().GetProperty("Total").GetValue(retire); + report.DataSource = retire; + ////Add Parameter + //report.ReportParameters["Year"].Value = retire.GetType().GetProperty("Year").GetValue(retire); + //report.ReportParameters["Total"].Value = retire.GetType().GetProperty("Total").GetValue(retire); var _profileList = new List(); @@ -123,6 +120,10 @@ namespace BMA.EHR.Report.Service.Controllers var content = result.DocumentBytes; return File(content, $"application/{exportType}", returnfile); } + else + { + return NotFound(); + } } #endregion } diff --git a/BMA.EHR.Report.Service/Reports/31-ประกาศเกษียณข้าราชการ-1.trdp b/BMA.EHR.Report.Service/Reports/31-ประกาศเกษียณข้าราชการ-1.trdp index aef012060afd5259920fd4c4b88b7124ed69e64d..75a2286d57135cf1887173923690d5a7d04092ba 100644 GIT binary patch delta 1687 zcmV;I259-8;{mPV0S!<~0|XQR000O8+EOmD4U=dN+EOl8vgm;z0|o#9s~D56Xfc0S zTW{Mo6n-DD|3GNKusu|=Y$tJ6yG4^;*UOB^ZLvqzVr-$ZBuMg_bSSWF1=8;Fuyxsx z6)4aYL%R(Hwr=g@f1{tW!$Z-MWhQa6^a2D9bx5AecfNB(v3Y!L;F8Z+7&*Sz(oDUg z5$1J$+wpoWZ5Xc}X=ulfz57mcg#~|p7?Z1x9rt0~e0QLcOLV|mTFpFSYQ*aMH!P0^ zXF|trX`OJ$Gy&DX>j21#PDr4@0)(uaR>D+5;U1{*R1cJY(uts5@kO z`_dUr!ifIMc<|u@TZQ4gzQ7+ke$dh?d<2eRLaZ)zSv&L*HQ%GIMlL!7)>#k0ro&Ad zf!C9m6pU*HcNL)Q4ourRU&Mbxg$I}92o%K~wia_xCRiimt?KnW;>tMQnqK8&1goW` z$^A5WlqP?s$wrzyOOq#Qayw1#q2y_rY^OR<4f^D=|R`~vVYbTGw&xxbB2d4i`M|XeFr%jTMzT&&N z!9zC7*Kma}dk5tk3e8;G11T3c!C(h%37x;7l?_z>4?Y6S&vEcbN=7)omyW*8WBnjk zz>R={-*Dd!rX;uXp@3jJGmv>KY-~z($%>yTcZe16(tt{v&0G8*2JRE`Cc z>M9-+PO}rP(}M=K%)Eb?h1y|KJ0o#XX7y>nB&+8Hk0q@ug1>^+bD~8dvFG$c(~P)= zsxq1@3~C$dJd5a}W7{q}#E7K-ylIrRUT{1nf;;JiqL;R`Q&$yA6&f<>%nd+U{__*X z|07c8F_P-gE9sjwd4V;%iNfdqzfib!?!d3e>^u0og>FAZEBk-f?#u-aH6e1v~TJA{`2k4K~f(s{Sk5$E>nh#wE5*jZhF)h)3@uesxvXx8+4y*hEY z(d*U4yxvXGB(dU6GjEGA*HS*LEcy0&+52VYx=~3ez2I|X#lLaRv)LN-7L6?X?r`Ac z&oF5P6u_y;Iq_(gQ9`BS=*tg%idjXI(<}4!(m|&&r|N%ol|rv;Weo5`8{S`&Ic}75 zBJ;3^XOJX`#lc`QUolMcy4hGfFifjM*X0<2W7M!o#q+54|kdpPAv z)0leoLcF2J!txp6knaoQui|S-OzQaAxS$dkf5kEabq8)GO4ZNT5z@)(GZxD&C|Ma6L7Dm}Yg3zF+Gmbc`4zTwY@h3Fi@5-%A5J8J z-|ff=BJP(tnK{r)G%6K?YW3N8;AZqMSuY!z%lsLKmpw}WWT_nc4^T@31QY-O00;ou zQZAF=Z|(!yQZAFxa7PZ>QZ84r=z$;u1^@u77?UP(E+N`dE?0&$#hs!6008d*000vJ h000000000000000;cftv@NX28iE$7H&~E?$005lNHunGk delta 1926 zcmV;12YL9d;Q^oH0S!<~0|XQR000O8q-Ynh4U=dNq-Ymc55e15^#%X{nH-a@Xfc0T z>u=Lm6#qVH|HG9hp-pIZoF;8L5)dupF&>MW0NO{B+$Po>JF}h9@@d_WQnvA7K!KL2 zTFWLFsM5x3&VS=SW#^vj8$WWJhEg6<3D@VIdmg|0yT`|N`Pfp&BHvTjGab94=xRO_UPWp9e)kJa^BQg1F+A0$7In>U)rQm2 zT=WCpwR|o=rRl1!fO|s9XMEc6a0nMCsBf57jW&D;o1CU*tL;NnC3Px}tC@e)iLBt_ zn!jw(;Ux%8I<_Azs-Gq`!!@q-Y;u8Kg(S>tl%?DC6{5u^w6u*>a44vn4Zr8oIcJHS z=@>1rq2d3Y)*a61>LtVKQMG#Elp=t|_(eW=agHv+a9W*V7j>swQF3eqf#DX_8iqxy zu7jvKwqYscyxF1kS?O=2O#gGpiplHxjD@);;8 z9*KPOY9Y=zH_UfR&9gCrRZ%L3zUw*ukuZ1=1`osFA0Qjj?=dp)HcEDohXGDK#J??} z2ID6<0Li~$a5D^k38b9lgRnGQ1uv#TgykyvKdHiewy1cPn##cgh&mlZVr0xtpP zmpFJRBm*4Z4hO%+xqccOU{1im-?(lYwRtz z$k{E(p5v_MWH0i)~fiQ?)p3wdcamnfWgIQ>yZ=gnr*q6e6fh@X{`tkrX-O?h%B zOqW;Kit^=UiBXA#NIG#@D5%Apv@lG|%EBEa)gz?afuFHo!r*@up5{IZU%vSfV%}K* ze<9~r@plcw-a#*WpX!N^9y1JiFnfLBb`7(6g!!!_3@H$W^@9taiQ49yS z!U3$k3%>*nJqQPVG_e*1Jb)DshzQ^@df3Lx=cxA#Q(6=FUdJeK92E$D{?~ZIEFy46 z(r{%}ZeiS!%2R)_QJbQo43XOq`*{-wYbbdhtzxnFF}RIHtmAJKPXvsJVZ3{HvB<&H z`Y3jwcaMzbaDRUZym;drCOQ$rG(;BgcZZ~J#yjYB1tZ%)6D&SZT2a|QBKRt(m}DLN zX$jL2xwaBFQ5jcJk%jvwGHn&%SP{%$CrOJV42pu=Q4@awPTnGek%3 zUjgd!K6_Ir-iPv$If*RwSGa@w=rcCa_Z~Hnyq89U>{jHm%>|3;xp)d$7cB!x^bB>! zH!R*Xki&eQh)A~yyMM4ec`bu|xWQF2{Y7!F{^F~i=bMYmZ@a;$8&|AhgP~8Ug+e~{ z0HGH0v+;kOQ|B!Q-aBtHB8pJ27ogq=J=(aMG1}a2Tt~2C7G493~Fw=ka?IW6=hvRF4;AlG^y3}RL5;X zH<;ezQg%F)xn{09Kl*yc5Z z@#^cuI160b0GT>C|?P@F@JqzXewrMq`=Hw<@ zXh%*}x$~IpPdl7%?u4|b#6`h4_hvoDg0zA?v4-p3OIsBauL$0)~3`KOHi`VOM)`;P*ydX>{D43Se|_*5`pdU z$*4vx0Ml_(o50?biV4EM;V?2Ypyv!Pa~NdWr~Qr<(Lduo<1UJ4m|k=p0}vI9_{mu; z%*Z3MvRCm5xaCUt>@Bp!X-s(#!lMuW15ir?1QY-O00;o2Xcv?2Zter5Xcv>;Z$}QK zXct!x!P{8%1^@t=9FsI~E+C|67gvTf#hs!6008d*000vJ000000000000000({Gc4 Ma3u!9Z~y=R0LI^yO#lD@ diff --git a/BMA.EHR.Report.Service/Reports/31-ประกาศเกษียณข้าราชการ-2.trdp b/BMA.EHR.Report.Service/Reports/31-ประกาศเกษียณข้าราชการ-2.trdp index f2f7deb8429311203739cff3a90cfa97dd286bfb..132a00dacf99a96a61832a94009eede9ef920b7a 100644 GIT binary patch delta 1707 zcmV;c22}Z&;sM^_0S!<~0|XQR000O8wNxU=dNwNx%wfL>rfGzI_wJ{^;;Xfl6W zkJCmJey`O3Fmj~|9WzyDri6$gKQNYPc|&>ow&*y(HNlHJEmt!f^zG}P|-*V~>Q zoC%53)YifQ)(}(eMNO?oY4DL@M4cY)+mTMOi$n6c-tqfJ2wIsf!>U+S!_-ZU8AGUX zj^cg2?ybWMA zwIqI+#7~m=_axp*;+IMMa}wW7;=3Sup2Wi>j$!Bt{O!nTtom+`V#E)R%Z!lp97Rw4h{9xnMG4^xv7_4E#eFE{$u0jEg7}tC<=Xez2A{(fve8>0-%@Di+8#-{0EIOkgDs)+C$O>w%KwBe!}Jw2 zo=C|E+IN%Doh-0JnF4NvDfk7}JqG+UJBJZKFiZ`k9t#`W(w^AE9awZ1F_(3=mpc0L zG{LSD>7QXc{0bccL$`k+AQ6oS>+xYE3zLevsHv(F@uE5Dk}l)p73@(QYWrEJX-Vc~ z?VcTAS)&VjEnlP+QH`QV7xe15Omk0wh_APlv0TB7rx<6Y@mwU11K~Z!NQWIs-wDI6$K_MiSNNM z|J2PT!wx{a?^%DBR>E9Qw3!}4lX~(=G=)0ufs5N9c?vGRgiLt~jpy*UHN{<#V1EG~ zvT6_f43m#_t__-#a31`BhIx%MOfK1mP!G3DJfnQqcpE%pUvtOD8nepY7OleTmR_@# zGNv)bK?k_TG_%7EJz}`0k+ZWqmf- z4r~TaRgQ_SSw;zzinnq88mbsoP^?~AtQA?dR$oxDY$eCA%`_wY&|zoL;vUz_dm{H? zif3$-Bo_0*WWHgT7Im|}G&fA^1J~skF~@AL-3y8Lx%?1PfNtq+KxgHkGYnNy zFN-(ya9BPg?DH2+;qjT!9|RMCK{CKl;ahYjo~(a`#!8R4j#8akWf%0QQ&l~AH%3s; zR+a%vktuFAKu)}_G6FfMRJ+^Cw6I{fv>|Hr(`27b?h5IR^a6u(5uyQjRExU``nDTqB2(|10hv$jsG_{j8mMymDL>-%7 z-<-DHh@T$WMiXz~4@nq&eFWXV67*w;*(!QIff602uT~JOq0dN2S000<( BHcS8j delta 1788 zcmV{Z{zqz&qZJ2Fmimaspx7& zLD*~iw&Qi0NacnuRiQ6#=8=b{YryJ9#)LJbM%ocx@GBYsS zj5l38>Jq_e-;1+JYiE&Zh1Rvchc4k8WEIX$Of3hog0$R(R~ElR zJ*z`(Xz)MMg3*YsUa{OhR$G_OC>+@;jh`EDwiytg4t0O21zv|^A~;usa3!GZ4ou5DFJd9XgGzD)MDZHlh$$$A zMB?i;)P;P-mC<^uszKWTR#R!trOBf-d737FkVJ#j`vtP^9!Oq54kj@46#jO&8fpIq z4I+7&Cf}vW*Xi&MA0ofs3Yu&>v9p~Hze4CM0=}5d zAHmBO82<~p1k=~hc*-S1Xx~eRck_iE$_-E_#K5mG?+M_a`#FpNftiAQD%0n0P~`qS8HO`R#qq-Fy5)qwmNY`=& z6XGHymaXTaW7{s?$Mx{&DI=DxUT{3jmUhw!*@L2~oVqG8DzSf%NvCEvU0tf`GJacN zcnbXXfEUYq$`K^ZpFs&chyDPjy(U~o3g-KC_z;1q9jGf-O9M9YARYdY4(}fn$7I31 z4UTyvHsWoFMCmw&D9gBc^bUi-`#nei9Nz1;y zS&n`MyKYnx@+jySTJ>+7^K869NKQd3zT5A4d7liLfknWn@-f!c%P4_S_Igj>VkM&z z##Ji|wIb=(>hm(vt%!ts+QF_JseWja6Kipg>*YP+`!FFgvPm3^*+|(#p$q)Tp@;c0kyH)>D*Zix z%2<5!EGt5#9|Tm!djQq+tktnR=cYyT>T{u82F}=5;2N6jG07yc@cX zhxvcWLbk*5^c?{_c2FK6Jc00LO4sVN8JO?O)JdC9dE?BTkYu}LQ#M1mPbyq*X@&bO zcK;=4G+I^%n>eP|WD#mv0S?bQp50VV)JV2io*lI z_C-*}UdmdQO)n<1zzljP#{=8re$K=$0n-l)n?S$k@&Uvy%xE%GpqH(vR17lhvvJSO z(!b=r@ELWl5Yn*Nd000LblVxx&AA5W(SB5mjouU8$0Pg?* e022TJ00000000000000?ld^Co20L&700010AWi82 diff --git a/BMA.EHR.Report.Service/Reports/31-ประกาศเกษียณข้าราชการ-3.trdp b/BMA.EHR.Report.Service/Reports/31-ประกาศเกษียณข้าราชการ-3.trdp index 09beb8c67d6e1e8f34592ddfec1565a875138a35..2919650d77467c45204582faeef78e9aa6395c95 100644 GIT binary patch delta 1739 zcmV;+1~mDr;sNR50S!<~0|XQR000O85+sEKL!8*Q5}=6XfuD0 z(?%42uhjoAa-|9$7{|_KlahegV`!l-i07M*-H{Yrkr1(a zj$zvUjx-9^4>hHuM?Ul7${uK?wq&)UR%Hb%5;cZU`%FNF zJ~V0PI0<tHyu&%CEXek+`Vv0 z;xJa3|2!V(oFnVBnMAhcxE-m&TGTPv5UriY!r!BCD+*sk;m=X{Z4}-C$+IXNM_~vi4`%(B17XAhk#$d6m@Z*m*jvuB!#}309I{bfEG`R^rZKEiB z#I&-3CsFtkEc^@N_=Zho+V|N8o5K{+(VHOO5@=@H9&&jM$_v0TD_fxaC3GpK zub}amOD5316HRVsfgQ*cFe6mKFR<YS`5d#%J|*TAVh6;N_OoP@ z;>^pmf$kDst#w?>mudy8S)tZ(H7(ORZZ%pN5&KMsDvak6p{zw2EQ#s7X&4sS$C!8o zj1J3M&zUxf!#i$z@l&EBowzJeD$tNfXHi>$))d^T=4ma(s)2uNF;*$9-QxxFp7H_$ z>Y{1?6#8RW_KH#*Es`Ii$$bQ>cA%Ex`WeR~_oB&<(d6!bfL9&}c?Hd&liMOX$szHN zi3LHVf57^u401la<^;NR1EoZRV9N8@R*7`#dy&qkBR??LH{Uet%q%4p*ITNnl$tR; z@j_x-FwQ@GbGd)80|@VX(j|qkQ1;FBAez>b&!HL2aTi?N2FVj}@df0`6KFhxzpWYW z#_9DZ;E@*XJ2=YZ!(C{P7Nnf}b5TyhhyVAZ49ex(7)s(+iD-mxAMb)_^ea|+yiuyS zR#OWvV7R8XGOD33qbb=a3a)2IoPg;m2es@Nn`Qr3h-H8IB_a2NjiFWN+8Ns*8Vpyuino+=-UyGj`+P#V9WvsY8WsDNd0rBN#qZLL`s5p5+$vz;U-9M7Pq z(c&&Q%e%sNVuojQn>ZGW!KA!lm>O7VwibqIePme-BkGuLYXi@;ukvpr1?XDu0y;GZ zo$@xItKffTy*V#*uH&2RkY1*e%G-cSc@LmcmtH^1icl$U11j}BfNFl$>g%?7U1xdq zS*~3MPTg1F+Op^|(2kK2JRRbJDW0D8s5CQ0X7QQSRiRgHx}^e7sdT!y1=dUR;>_NA zp4h`FSK9K_qnF0(*~BZK688D4XYBDQ&l$N>fI)vUz)<1)bS9pzh4#w8v<#s-vC2N^ z5vQtn@@|YEo-Hf`nj$mYY=hji`@#tLpiu2@E0e;4;nIeP(NB_n&V31H?Z`}SnmSQU z9Vjcf6@Shal2d_mmPFjROUkB$kh&Ks?|PPL6MnJ~?XWm~Q-G(A$|=G#2ydZutUq5uE@ h?*IS*6951J000000000000146|8OP-3~&Gd000M)OlAN8 delta 1784 zcmVe4@nWiOqqHJ|muQxlT*ba7jVL z>AI%n^jgX&*!ZBXoH+jOJIysRbiIE7U9rrdPxWfufr2g?1JY8W@W&{87KL9$;SW)` z7ll7X;r5b(I(_$g$1#SdJ)wbch&prpmeLP`;fJc~cl%^u_&6Xo@vLjO>kd>8 z{7~CGw$49o72Za~9EXNcA72P`VQl*MI=I*ET3nA{1r zY?9tm!70}Xl1b}lP{;6$t0M=D83i>DP1Y?;N+^MRZ5WP@HNnXS9SmQrF@G%#4APS>zW+j9Xm z*D-7bU9bjZeQQX4TFj+7bb5ar6T!J6gew8%U|`yvb0QWpJeVXyKoqZ&&47Wz>!^xr z)tZ>Ij+Yu*mUju4E0r{J9XCo1b_c+tEr5N}fjHH&OUSG`_`$=?tcq|%x|GmxC zWAx|bF_=S#|Bl8tA*LM^g%6okHt;wKpM!^gK^|W+Rc8H=eJ~wnkdEF2`L@I|v-W_? zV^E#}jv=@CJ$Ts$Uzo+%^?i(<0VWCvB@o`Fn*p)Pr)EeVlZxDC_i%A>l1t#TBuCOIXjkw~EVY?^bc6 z*2vh|XEtolGD>SnP8TfGw8-p0#p0YTyaC~ z#UuBk@psYq?tg%2?n{XVP2rc@GJX+|n1^YQoN5*q5Q4P-;G48P%1TJkU3UY+PL!#c zl!g#Ycp8UMq@;i9izw;iksnwaTd$gvrZ$?6s|{V&X!V%9vNmH2v?o5Rg-Y26{13e( zlQx;FHfMTnP1+GFYznX3g%Ec@@)$yV28Ht&E}p>O_LOkrdix9TNL%_1?0m#@=USsV z32ApGLQ2^3f41{koVM>lLhbEAd)zAWj`aQIP4JF!)lPr+LRuMDDthh}4p;O>#ys?O zHsu~o!_{m*6fir*q?TQCs~GzHJd@|=QJTzfQdvU@t%85$Ix zG9Qa?wIWVnG=Ax4FSn9W3F+cet&->6O1&!M-IB<WqsZ8MB$V20D_dzN#Je_hEz*LV}q=>l}x>wvC=>(%@yRhEZJdmT{eZvj-ZvsTY=tQ!Wat51aMB5?Yl0@qY! zkAY^4jO6JM4@~g%WJCqc6q)%oX{geunsiAeky3x@WOGZr7xd!FezBfB!ii9t>cpd$ z=Ic4cEAA2w`MYTx@oCQ;4JQDDVt}FC7w$|v*$d5;zGa(Ib8?eCup=*3x$;4bAlH_* z0WFa!VKzZ-IX!6xd{AokpqWWy!Ej+g76IQ(dEmn1{{T=+0|XQR000O8&3r7ADsS!s&3r7A8*oPs&3r6Z4klFzfd&8o9UhZ# aa4rMQd@Pfpa2o+%lf7^z22OAQ00008NM-u~ diff --git a/BMA.EHR.Report.Service/Reports/32-ประกาศเกษียณลูกจ้างประจำ.trdp b/BMA.EHR.Report.Service/Reports/32-ประกาศเกษียณลูกจ้างประจำ.trdp index bbb55bcf8c11d25efb2d68c24102735187cd1c3a..5799b2023cf448b55dcdbd3014043d8993949c2d 100644 GIT binary patch delta 1740 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 LB?fYF00000cV+PK diff --git a/BMA.EHR.Report.Service/appsettings.json b/BMA.EHR.Report.Service/appsettings.json index d6921d83..169430e3 100644 --- a/BMA.EHR.Report.Service/appsettings.json +++ b/BMA.EHR.Report.Service/appsettings.json @@ -26,10 +26,10 @@ } }, "MinIO": { - "Endpoint": "https://s3.frappet.com/", + "Endpoint": "https://s3cluster.frappet.com/", "AccessKey": "frappet", - "SecretKey": "P@ssw0rd", - "BucketName": "bma-recruit" + "SecretKey": "FPTadmin2357", + "BucketName": "bma-ehr-fpt" }, "Protocol": "HTTPS", "telerikReporting": { From 3771ee2982ba98d33a96bd2fb619f7c58d40476c Mon Sep 17 00:00:00 2001 From: "Harid Promsri (Bright)" Date: Thu, 14 Sep 2023 17:51:32 +0700 Subject: [PATCH 7/8] edit fields in design --- ...ะเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp | Bin 7197 -> 7199 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/BMA.EHR.Report.Service/Reports/16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp b/BMA.EHR.Report.Service/Reports/16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp index 366809562aabb64edf8f4e3634d782f1324b2c40..13a9b82f763bf812f9db931798ff97f1e54bc96d 100644 GIT binary patch delta 114 zcmbPhG2cQsz?+#xgn@y9gMqV0FT7%pymZn=VG9m+=dOrrueDZB_UG_rF6x`Hc>#xz v5HnE8VFUzKv>o;v)#33Za u3{)_AyVOHYxWdT`rH$o5ypBI#DyISs*#^YIK#Tw@CV!SzW9yOzi2wj!j3T7~ From 7fd22e2c10371f795eee462a88a24e4b8f3c9404 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Fri, 15 Sep 2023 00:09:54 +0700 Subject: [PATCH 8/8] =?UTF-8?q?=E0=B9=81=E0=B8=99=E0=B8=9A=E0=B9=84?= =?UTF-8?q?=E0=B8=9F=E0=B8=A5=E0=B8=B7=E0=B8=AB=E0=B8=99=E0=B8=B1=E0=B8=87?= =?UTF-8?q?=E0=B8=AA=E0=B8=B7=E0=B8=AD=E0=B9=80=E0=B8=A7=E0=B8=B5=E0=B8=A2?= =?UTF-8?q?=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repositories/InsigniaPeriodsRepository.cs | 6 +- .../Requests/InsigniaRequestItem.cs | 2 +- BMA.EHR.Domain/Shared/GlobalMessages.cs | 1 + .../Controllers/InsigniaManageController.cs | 4 +- BMA.EHR.Insignia.Service/appsettings.json | 2 +- .../wwwroot/keycloak.json | 2 +- .../Controllers/DeceasedReportController.cs | 69 +++++++++++++++++++ .../RetirementDeceasedController.cs | 2 +- .../RetirementDeceasedAddNotiPersonRequest.cs | 6 +- 9 files changed, 83 insertions(+), 11 deletions(-) diff --git a/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs b/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs index b126d408..00708c0c 100644 --- a/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs +++ b/BMA.EHR.Application/Repositories/InsigniaPeriodsRepository.cs @@ -5738,9 +5738,9 @@ namespace BMA.EHR.Application.Repositories ProfileId = h.Profile.Id, ProfileType = h.Profile.ProfileType, FullName = $"{h.Profile.Prefix?.Name}{h.Profile.FirstName} {h.Profile.LastName}", - Position = h.Profile.ProfileType == " officer" ? h.Profile.Position?.Name : h.Profile.PositionEmployeePosition?.Name, - PosNo = h.Profile.ProfileType == " officer" ? h.Profile.PosNo?.Name : h.Profile.PosNoEmployee, - Rank = h.Profile.ProfileType == " officer" ? $"{h.Profile.PositionType?.Name}/{h.Profile.PositionLevel?.Name}" : $"-", + Position = h.Profile.ProfileType == "officer" ? h.Profile.Position?.Name : h.Profile.PositionEmployeePosition?.Name, + PosNo = h.Profile.ProfileType == "officer" ? h.Profile.PosNo?.Name : h.Profile.PosNoEmployee, + Rank = h.Profile.ProfileType == "officer" ? $"{h.Profile.PositionType?.Name}/{h.Profile.PositionLevel?.Name}" : $"-", Salary = h.Salary.ToString(), LastInsignia = h.Profile.Insignias.Count == 0 ? "" : h.Profile.Insignias.OrderByDescending(x => x.Year).FirstOrDefault().Insignia.Name, RequestInsignia = h.RequestInsignia.Name, diff --git a/BMA.EHR.Application/Requests/InsigniaRequestItem.cs b/BMA.EHR.Application/Requests/InsigniaRequestItem.cs index 9a0d44e4..ab0252e7 100644 --- a/BMA.EHR.Application/Requests/InsigniaRequestItem.cs +++ b/BMA.EHR.Application/Requests/InsigniaRequestItem.cs @@ -7,7 +7,7 @@ public string? ProfileType { get; set; } public Guid ProfileId { get; set; } public string FullName { get; set; } - public string Position { get; set; } + public dynamic Position { get; set; } public string PosNo { get; set; } public string Rank { get; set; } public string Salary { get; set; } diff --git a/BMA.EHR.Domain/Shared/GlobalMessages.cs b/BMA.EHR.Domain/Shared/GlobalMessages.cs index 2678c379..4267f231 100644 --- a/BMA.EHR.Domain/Shared/GlobalMessages.cs +++ b/BMA.EHR.Domain/Shared/GlobalMessages.cs @@ -89,6 +89,7 @@ public static readonly string OCNotFound = "ไม่พบหน่วยงานที่ระบุในระบบ"; public static readonly string InsigniaManageOrgLimit = "จำนวนการจัดสรรเครื่องราชฯ หน่วยงานเกินจำนวน"; public static readonly string InsigniaBorrowOrgLimit = "จำนวนการจัดสรรเครื่องราชฯ หน่วยงานเกินจำนวนของหน่วยงานที่ได้รับ"; + public static readonly string InsigniaNoBorrow = "ไม่สามารถยืมเครื่องราชฯ นี้ได้เนื่องจากสถานะรอการบันทึกข้อมูล"; public static readonly string InsigniaBorrowNotFound = "ไม่พบรายการยืมเครื่องราชฯ"; public static readonly string InsigniaNotReturn = "รายการยืมเครื่องราชนี้ได้ทำการยืมไว้แล้ว"; #endregion diff --git a/BMA.EHR.Insignia.Service/Controllers/InsigniaManageController.cs b/BMA.EHR.Insignia.Service/Controllers/InsigniaManageController.cs index c793201e..8fc7fba3 100644 --- a/BMA.EHR.Insignia.Service/Controllers/InsigniaManageController.cs +++ b/BMA.EHR.Insignia.Service/Controllers/InsigniaManageController.cs @@ -420,6 +420,8 @@ namespace BMA.EHR.Insignia.Service.Controllers .FirstOrDefaultAsync(x => x.Id == req.InsigniaNoteProfileId); if (insigniaNoteProfile == null) return Error(GlobalMessages.InsigniaRequestProfileNotFound); + if (insigniaNoteProfile.Status != "DONE") + return Error(GlobalMessages.InsigniaNoBorrow); var insigniaManage = await _context.InsigniaManages.AsQueryable() .FirstOrDefaultAsync(x => x.Year == insigniaNoteProfile.InsigniaNote.Year && x.Insignia == insigniaNoteProfile.RequestInsignia); @@ -433,7 +435,7 @@ namespace BMA.EHR.Insignia.Service.Controllers return Error(GlobalMessages.InsigniaManageOrgNotFound); var insigniaManageProfile = await _context.InsigniaManageProfiles.AsQueryable() - .FirstOrDefaultAsync(x => x.InsigniaNoteProfile == insigniaNoteProfile && x.InsigniaManageOrganiation == insigniaManageOrganiation && x.Status == false); + .FirstOrDefaultAsync(x => x.InsigniaNoteProfile == insigniaNoteProfile && x.Status == false); if (insigniaManageProfile != null) return Error(GlobalMessages.InsigniaNotReturn); diff --git a/BMA.EHR.Insignia.Service/appsettings.json b/BMA.EHR.Insignia.Service/appsettings.json index 952a70c0..85a25b5c 100644 --- a/BMA.EHR.Insignia.Service/appsettings.json +++ b/BMA.EHR.Insignia.Service/appsettings.json @@ -18,7 +18,7 @@ }, "Jwt": { "Key": "HP-FnQMUj9msHMSD3T9HtdEnphAKoCJLEl85CIqROFI", - "Issuer": "https://identity.frappet.com/realms/bma-ehr" + "Issuer": "https://id.frappet.synology.me/realms/bma-ehr" }, "EPPlus": { "ExcelPackage": { diff --git a/BMA.EHR.Insignia.Service/wwwroot/keycloak.json b/BMA.EHR.Insignia.Service/wwwroot/keycloak.json index 9eba3b39..a023eb38 100644 --- a/BMA.EHR.Insignia.Service/wwwroot/keycloak.json +++ b/BMA.EHR.Insignia.Service/wwwroot/keycloak.json @@ -1,6 +1,6 @@ { "realm": "bma-ehr", - "auth-server-url": "https://identity.frappet.com", + "auth-server-url": "https://id.frappet.synology.me", "ssl-required": "external", "resource": "bma-ehr", "public-client": true diff --git a/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs b/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs index 71aa2855..9d7fb5e1 100644 --- a/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs +++ b/BMA.EHR.Report.Service/Controllers/DeceasedReportController.cs @@ -123,6 +123,75 @@ namespace BMA.EHR.Report.Service.Controllers } } + ///

+ /// 36-บันทึกเวียนแจ้งการถึงแก่กรรม + /// + /// Id รายการบันทึกเวียนแจ้งการถึงแก่กรรม + /// pdf, docx หรือ xlsx + /// + /// เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("copy/36/{exportType}/{id}")] + public async Task> GetDeceasedReportCopyAsync(Guid id, string exportType = "pdf") + { + try + { + var head = await _repository.GetHeadRetirementDeceasedAsync(id); + var data = await _repository.GetRetirementDeceasedAsync(id); + if (data != null || head != null) + { + var mergeData = new + { + Oc = head.GetType().GetProperty("Oc").GetValue(head), + Number = head.GetType().GetProperty("Number").GetValue(head), + Date = head.GetType().GetProperty("Date").GetValue(head), + Subject = head.GetType().GetProperty("Subject").GetValue(head), + Send = head.GetType().GetProperty("Send").GetValue(head), + FullName = data.GetType().GetProperty("FullName").GetValue(data), + Position = data.GetType().GetProperty("Position").GetValue(data), + Reason = data.GetType().GetProperty("Reason").GetValue(data), + DeceasedDate = data.GetType().GetProperty("Date").GetValue(data), + CurrentDate = data.GetType().GetProperty("CurrentDate").GetValue(data), + DeceasedNumber = data.GetType().GetProperty("Number").GetValue(data), + Location = data.GetType().GetProperty("Location").GetValue(data), + }; + var mimeType = ""; + switch (exportType.Trim().ToLower()) + { + case "pdf": mimeType = "application/pdf"; break; + case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break; + case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break; + } + + var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"36-บันทึกเวียนแจ้งการถึงแก่กรรม.trdp"); + ReportPackager reportPacker = new ReportPackager(); + Telerik.Reporting.Report? report = null; + using (var sourceStream = System.IO.File.OpenRead(rptFile)) + { + report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream); + } + report.DataSource = mergeData; + 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); + return File(result.DocumentBytes, mimeType, $"รายละเอียดบันทึกเวียนแจ้งการถึงแก่กรรม.{exportType.Trim().ToLower()}"); + } + else + { + return NotFound(); + } + } + catch + { + throw; + } + } + /// /// อัปไฟล์บันทึกเวียนแจ้งการถึงแก่กรรม /// diff --git a/BMA.EHR.Retirement.Service/Controllers/RetirementDeceasedController.cs b/BMA.EHR.Retirement.Service/Controllers/RetirementDeceasedController.cs index 9b73dce3..e1e5eaad 100644 --- a/BMA.EHR.Retirement.Service/Controllers/RetirementDeceasedController.cs +++ b/BMA.EHR.Retirement.Service/Controllers/RetirementDeceasedController.cs @@ -551,7 +551,7 @@ namespace BMA.EHR.Retirement.Service.Controllers payload_attach.Add(new PayloadAttachment { name = "หนังสือเวียนถึงแก่กรรม", - url = $"{_configuration["API"]}/order/download/attachment/{retirementDeceased.DocumentForward.Id}" + url = $"{_configuration["API"]}/copy/36/pdf/{retirementDeceased.Id}" }); var payload = new CommandPayload() diff --git a/BMA.EHR.Retirement.Service/Requests/RetirementDeceasedAddNotiPersonRequest.cs b/BMA.EHR.Retirement.Service/Requests/RetirementDeceasedAddNotiPersonRequest.cs index e087ce7c..ad996306 100644 --- a/BMA.EHR.Retirement.Service/Requests/RetirementDeceasedAddNotiPersonRequest.cs +++ b/BMA.EHR.Retirement.Service/Requests/RetirementDeceasedAddNotiPersonRequest.cs @@ -10,8 +10,8 @@ namespace BMA.EHR.Retirement.Service.Requests public class RetirementDeceasedAddNotiPerson { public Guid ProfileId { get; set; } - public bool IsSendMail { get; set; } - public bool IsSendInbox { get; set; } - public bool IsSendNotification { get; set; } + public bool IsSendMail { get; set; } = true; + public bool IsSendInbox { get; set; } = true; + public bool IsSendNotification { get; set; } = true; } }