diff --git a/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs index 7bb786c8..e2f1713b 100644 --- a/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs @@ -1137,28 +1137,28 @@ namespace BMA.EHR.Application.Repositories.Reports /*var orgResponse = JsonConvert.DeserializeObject(_result);*/ var orgResponse = JObject.Parse(_result); var resultItems = orgResponse["result"]; - /* if (orgResponse != null && orgResponse.result != null) - {*/ - var matchedData = resultItems - .Where(item => item["profileId"].ToString() == d.ProfileId.ToString()) - .FirstOrDefault(); - /* - if (matchedData != null) - { - // แสดงข้อมูลที่ตรงกัน - var receiver = new CommandReceiver - { - Sequence = seq, - CitizenId = matchedData.citizenId ?? "", - Prefix = matchedData.prefix ?? "", - FirstName = matchedData.firstName ?? "", - LastName = matchedData.lastName ?? "", - RefPlacementProfileId = Guid.Parse(matchedData.profileId.ToString()), - }; + /* if (orgResponse != null && orgResponse.result != null) + {*/ + var matchedData = resultItems + .Where(item => item["profileId"].ToString() == d.ProfileId.ToString()) + .FirstOrDefault(); + /* + if (matchedData != null) + { + // แสดงข้อมูลที่ตรงกัน + var receiver = new CommandReceiver + { + Sequence = seq, + CitizenId = matchedData.citizenId ?? "", + Prefix = matchedData.prefix ?? "", + FirstName = matchedData.firstName ?? "", + LastName = matchedData.lastName ?? "", + RefPlacementProfileId = Guid.Parse(matchedData.profileId.ToString()), + }; - seq++; - resultData.Add(receiver); - }*/ + seq++; + resultData.Add(receiver); + }*/ /*}*/ return matchedData; @@ -1369,6 +1369,80 @@ namespace BMA.EHR.Application.Repositories.Reports } } } + public async Task GetKhr5TotalReport(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.Request) + .Include(x => x.RequestInsignia) + .ThenInclude(x => x.InsigniaType) + .Where(x => x.Request.Period.Id == period.Id) + .Where(x => x.IsApprove == true) + .Where(x => x.Status == "PENDING") + .Where(x => x.RequestInsignia.InsigniaType != null); + + if (type == "officer") + { + data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "officer"); + } + else if (type == "employee") + { + data_insigniaQuery = data_insigniaQuery.Where(r => r.ProfileType == "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 + { + Gendor = x.Gender ?? "", + InsigniaTypeName = x.RequestInsignia.InsigniaType.Name, + RequestInsigniaName = x.RequestInsignia.Name, + InsigniaInitial = $"{x.RequestInsignia.Name}({x.RequestInsignia.ShortName})", // Insignia's full name and short name + OcId = x.Request.OrganizationId + }).ToListAsync(); + var insignia = (from r in data + group r by new { OcId = r.OcId, r.InsigniaTypeName, r.RequestInsigniaName } into g + select new + { + RowNo = 1, + DepartmentName = _userProfileRepository.GetOc(g.Key.OcId, 0, AccessToken).Root,// _organizationCommonRepository.GetOrganizationNameFullPath(g.Key.OcId, false, false), + InsigniaTypeName = g.Key.InsigniaTypeName, + RequestInsigniaName = g.Key.RequestInsigniaName, + Male = g.Sum(x => x.Gendor == "ชาย" ? 1 : 0), + Female = g.Sum(x => x.Gendor == "หญิง" ? 1 : 0), + Remark = "", + }).ToList(); + + return insignia; + } #endregion } } diff --git a/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs b/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs index efd173aa..29c1103a 100644 --- a/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs +++ b/BMA.EHR.Insignia/Controllers/InsigniaReportController.cs @@ -367,6 +367,69 @@ namespace BMA.EHR.Insignia.Service.Controllers { try { + var insignalPeriod = await _repository.GetKhr5TotalReport(req.roundId, type, req.node, req.nodeId); + var yearInsignalPeriod = await _repository.GetYearInsigniaPeriod(req.roundId); + var detailList = new List(); + var male = 0; + var feMale = 0; + var _male = 0; + var _feMale = 0; + var maleSum = 0; + var feMaleSum = 0; + var nameType = ""; + var org = ""; + foreach (var _data in insignalPeriod) + { + if (nameType != "" && nameType != _data.GetType().GetProperty("InsigniaTypeName").GetValue(_data)) + { + org = _data.GetType().GetProperty("DepartmentName").GetValue(_data); + detailList.Add(new + { + type = "", + name = "รวม", + male = male.ToString().ToThaiNumber(), + feMale = feMale.ToString().ToThaiNumber(), + sum = (male + feMale).ToString().ToThaiNumber(), + }); + maleSum = maleSum + male; + feMaleSum = maleSum + feMale; + male = 0; + feMale = 0; + } + nameType = _data.GetType().GetProperty("InsigniaTypeName").GetValue(_data); + + _male = _data.GetType().GetProperty("Male").GetValue(_data); + _feMale = _data.GetType().GetProperty("Female").GetValue(_data); + detailList.Add(new + { + type = _data.GetType().GetProperty("InsigniaTypeName").GetValue(_data), + name = _data.GetType().GetProperty("RequestInsigniaName").GetValue(_data), + male = _male.ToString().ToThaiNumber(), + feMale = _feMale.ToString().ToThaiNumber(), + sum = (_male + _feMale).ToString().ToThaiNumber(), + }); + male = male + _data.GetType().GetProperty("Male").GetValue(_data); + feMale = feMale + _data.GetType().GetProperty("Female").GetValue(_data); + } + detailList.Add(new + { + type = "", + name = "รวม", + male = male.ToString().ToThaiNumber(), + feMale = feMale.ToString().ToThaiNumber(), + sum = (male + feMale).ToString().ToThaiNumber(), + }); + maleSum = maleSum + male; + feMaleSum = maleSum + feMale; + detailList.Add(new + { + type = "", + name = "รวมทั้งหมด", + male = maleSum.ToString().ToThaiNumber(), + feMale = feMaleSum.ToString().ToThaiNumber(), + sum = (maleSum + feMaleSum).ToString().ToThaiNumber(), + }); + var date = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}"; var result = new { @@ -374,9 +437,11 @@ namespace BMA.EHR.Insignia.Service.Controllers reportName = "reportInsignia5", data = new { - yearInsignalPeriod = "", + profileType = type == "employee" ? "ลูกจ้างประจำ" : "ข้าราชการสามัญกรุงเทพมหานคร", + org = org, + year = yearInsignalPeriod, date = date, - data = "", + data = detailList, } }; return Success(result);