From 764a27fbd55fd1f38e58bd9171cf38455b77ec56 Mon Sep 17 00:00:00 2001 From: kittapath Date: Thu, 13 Feb 2025 17:20:58 +0700 Subject: [PATCH] insignia4 --- .../Reports/InsigniaReportRepository.cs | 61 +++++++++++++++++++ .../Controllers/InsigniaReportController.cs | 30 ++++++++- 2 files changed, 88 insertions(+), 3 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs index 13e91bb0..86ab8664 100644 --- a/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs @@ -1536,6 +1536,67 @@ namespace BMA.EHR.Application.Repositories.Reports return insignia; } + public async Task GetKhr4TotalReport(Guid id, string type = null, int node = -1, Guid nodeId = default) + { + var period = await _dbContext.Set() + .FirstOrDefaultAsync(x => x.Id == id); + if (period == null) + throw new Exception(GlobalMessages.InsigniaPeriodNotFound); + + var data_insigniaQuery = _dbContext.Set() + .Include(x => x.RequestInsignia) + .ThenInclude(x => x.InsigniaType) + .Where(x => x.InsigniaNote.Id == period.Id) + .Where(x => x.Status == "DONE") + .Where(x => x.RequestInsignia.InsigniaType != null); + + if (type == "officer") + { + data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToUpper() == "OFFICER"); + } + else if (type == "employee") + { + data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType.Trim().ToUpper() == "EMPLOYEE"); + } + + switch (node) + { + case 0: + data_insigniaQuery = data_insigniaQuery.Where(r => r.RootDnaId == nodeId); + break; + + case 1: + data_insigniaQuery = data_insigniaQuery.Where(r => r.Child1DnaId == nodeId); + break; + + case 2: + data_insigniaQuery = data_insigniaQuery.Where(r => r.Child2DnaId == nodeId); + break; + + case 3: + data_insigniaQuery = data_insigniaQuery.Where(r => r.Child3DnaId == nodeId); + break; + + case 4: + data_insigniaQuery = data_insigniaQuery.Where(r => r.Child4DnaId == nodeId); + break; + + default: + break; + } + + var data = await data_insigniaQuery.Select(x => new + { + CitizenId = x.CitizenId, + FullName = $"{x.Prefix}{x.FirstName} {x.LastName}", + PosTypeName = x.PosTypeName, + PosLevelName = x.PosLevelName, + Position = x.Position, + Root = x.Root + }).ToListAsync(); + + return data; + } #endregion } } diff --git a/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs b/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs index 97721107..7ccd69c1 100644 --- a/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs +++ b/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs @@ -330,6 +330,29 @@ namespace BMA.EHR.Insignia.Service.Controllers { try { + var insignalPeriod = await _repository.GetKhr4TotalReport(req.roundId, type, req.node, req.nodeId); + var nameNote = await _repository.GetNameInsigniaNote(req.roundId); + var detailList = new List(); + var row = 1; + var org = ""; + var citizenId = "0"; + foreach (var _data in insignalPeriod) + { + citizenId = _data.GetType().GetProperty("CitizenId").GetValue(_data); + org = _data.GetType().GetProperty("Root").GetValue(_data); + detailList.Add(new + { + row = row.ToString().ToThaiNumber(), + citizenId = citizenId.ToString().ToThaiNumber(), + fullName = _data.GetType().GetProperty("FullName").GetValue(_data), + posTypeName = _data.GetType().GetProperty("PosTypeName").GetValue(_data), + posLevelName = _data.GetType().GetProperty("PosLevelName").GetValue(_data), + position = _data.GetType().GetProperty("Position").GetValue(_data), + root = _data.GetType().GetProperty("Root").GetValue(_data), + }); + row = row + 1; + } + var date = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}"; var result = new { @@ -337,13 +360,14 @@ namespace BMA.EHR.Insignia.Service.Controllers reportName = "reportInsignia4", data = new { - yearInsignalPeriod = "", + profileType = type == "employee" ? "ลูกจ้างประจำ" : "ข้าราชการสามัญกรุงเทพมหานคร", + org = org, + name = nameNote, date = date, - data = "", + data = detailList, } }; return Success(result); - } catch {