From 23a6058eba55aa7edbe4ec646fa2a66c8835eca9 Mon Sep 17 00:00:00 2001 From: harid Date: Fri, 12 Dec 2025 12:27:52 +0700 Subject: [PATCH] query leave report --- .../Controllers/LeaveReportController.cs | 147 +++++++++++++++--- 1 file changed, 129 insertions(+), 18 deletions(-) diff --git a/BMA.EHR.Leave/Controllers/LeaveReportController.cs b/BMA.EHR.Leave/Controllers/LeaveReportController.cs index 17ba0791..6b7a9a4b 100644 --- a/BMA.EHR.Leave/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveReportController.cs @@ -152,7 +152,7 @@ namespace BMA.EHR.Leave.Service.Controllers var startFiscalYear = new DateTime(data.LeaveStartDate.Year - 1, 10, 1); var endFiscalYear = data.LeaveStartDate.Date.AddDays(-1); // นับจากวันที่ยื่นลา var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser(data.KeycloakUserId, data.Type.Id, startFiscalYear, endFiscalYear); - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave9", @@ -181,6 +181,12 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveRemain = (data.Type.Limit - sumLeave).ToString().ToThaiNumber(), LeaveAll = (data.LeaveTotal + sumLeave).ToString().ToThaiNumber(), + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -194,7 +200,7 @@ namespace BMA.EHR.Leave.Service.Controllers } var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}"; - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave10", @@ -217,6 +223,13 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber(), //data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), leaveAddress = data.LeaveAddress.ToThaiNumber(), leaveNumber = data.LeaveNumber.ToThaiNumber(), + + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -248,6 +261,7 @@ namespace BMA.EHR.Leave.Service.Controllers var leaveLimit = leaveData == null ? 0.0 : leaveData.LeaveDays; var extendLeave = leaveLimit - 10; + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave11", @@ -278,7 +292,15 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveSummary = sumLeave.ToString().ToThaiNumber(), // วันลาครั้งก่อน LeaveAll = (data.LeaveTotal + sumLeave).ToString().ToThaiNumber(), // ลาครั้งนี้ + ครั้งก่อน - LeaveLimit = leaveLimit.ToString().ToThaiNumber() // สิทธิ์การลา + LeaveLimit = leaveLimit.ToString().ToThaiNumber(), // สิทธิ์การลา + + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" + } }; } @@ -305,7 +327,7 @@ namespace BMA.EHR.Leave.Service.Controllers { isHajj = true; } - + var approveResult = await GetApproverData(data.Approvers); if (isHajj == true) { return new @@ -330,8 +352,14 @@ namespace BMA.EHR.Leave.Service.Controllers leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), - LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber()//data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), + LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber(),//data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -365,8 +393,13 @@ namespace BMA.EHR.Leave.Service.Controllers leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), - LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber()//data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), + LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber(),//data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -390,7 +423,7 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave14", @@ -417,6 +450,12 @@ namespace BMA.EHR.Leave.Service.Controllers leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber(), //data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -439,7 +478,7 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave15", @@ -473,6 +512,13 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber(), //data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), leaveAddress = data.LeaveAddress.ToThaiNumber(), leaveNumber = data.LeaveNumber.ToThaiNumber(), + + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -501,7 +547,7 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave16", @@ -562,10 +608,15 @@ namespace BMA.EHR.Leave.Service.Controllers institute = x.Institute == null ? "" : x.Institute.ToThaiNumber(), country = x.Country == null ? "" : x.Country.ToThaiNumber(), finishDate = x.FinishDate == null ? "-" : x.FinishDate.Value.ToThaiShortDate().ToThaiNumber() - }).ToList() + }).ToList(), //positionName = profileLeave.PositionName, - + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; @@ -589,7 +640,7 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave17", @@ -623,6 +674,13 @@ namespace BMA.EHR.Leave.Service.Controllers leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), LeaveTotal = data.LeaveTotal.ToString().ToThaiNumber(), //data.LeaveStartDate.DiffDay(data.LeaveEndDate).ToString().ToThaiNumber(), + + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -651,7 +709,7 @@ namespace BMA.EHR.Leave.Service.Controllers // if (list.Count > 0) // approver = list.First().Name; //} - + var approveResult = await GetApproverData(data.Approvers); return new { template = "leave18", @@ -668,13 +726,9 @@ namespace BMA.EHR.Leave.Service.Controllers positionLeaveName = profile!.PositionLeaveName == null ? "-" : profile!.PositionLeaveName.ToThaiNumber(), organizationName = profile!.Oc!.ToThaiNumber() ?? "", - - - leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), - profileType = profile.ProfileType, birthDate = profileLeave.BirthDate.ToThaiShortDate().ToThaiNumber(), @@ -715,7 +769,14 @@ namespace BMA.EHR.Leave.Service.Controllers institute = x.Institute == null ? "" : x.Institute.ToThaiNumber(), country = x.Country == null ? "" : x.Country.ToThaiNumber(), finishDate = x.FinishDate == null ? "-" : x.FinishDate.Value.ToThaiShortDate().ToThaiNumber() - }).ToList() + }).ToList(), + + approve = approveResult, + leaveStatus = data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "APPROVE" + ? "🗹 อนุญาต ☐ ไม่อนุญาต" + : data.LeaveStatus != null && data.LeaveStatus!.ToUpper() == "REJECT" + ? "☐ อนุญาต 🗹 ไม่อนุญาต" + : "☐ อนุญาต ☐ ไม่อนุญาต" } }; } @@ -2477,5 +2538,55 @@ namespace BMA.EHR.Leave.Service.Controllers } #endregion + private async Task GetApproverData(List list) + { + var _default = new + { + fullName = "......................", + positionName = "......................", + positionSign = "......................", + updatedAt = "...... /...... /......", + comment = "......................", + approveType = "" + }; + + var approvers = list + .Select(x => new + { + fullName = $"{(x.Prefix ?? "")}{(x.FirstName ?? "")} {(x.LastName ?? "")}".Trim(), + positionName = x.PositionName ?? "......................", + positionSign = x.PositionSign ?? "......................", + updatedAt = x.LastUpdatedAt.HasValue + ? x.LastUpdatedAt.Value.Date.ToThaiShortDate().ToThaiNumber() + : "...... /...... /......", + comment = (x.Comment ?? "") + .Replace("\r", "") + .Replace("\n", "") + .Trim(), + approveType = (x.ApproveType ?? "").Trim().ToUpper() + }) + .ToList(); + + var sender = approvers + .FirstOrDefault(x => x.approveType == "SENDER") + ?? _default; + + var approver = approvers + .FirstOrDefault(x => x.approveType == "APPROVER") + ?? _default; + + var commanders = approvers + .Where(x => x.approveType == "COMMANDER") + .DefaultIfEmpty(_default) + .ToList(); + + return new + { + sender = sender, + approver = approver, + commanders = commanders + }; + } + } } \ No newline at end of file