From b0715e3da6a7cf972dd28bb87ed308884a26c28d Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Fri, 16 Jan 2026 16:19:49 +0700 Subject: [PATCH] refactor LeaveController to update check-out status logic based on morning end time #2187 --- BMA.EHR.Leave/Controllers/LeaveController.cs | 24 ++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/BMA.EHR.Leave/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index 26e3372d..b4206777 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -989,13 +989,21 @@ namespace BMA.EHR.Leave.Service.Controllers else endTime = duty.EndTimeAfternoon; + var endTimeMorning = duty.EndTimeMorning; + string checkOutStatus = "NORMAL"; var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(userId, currentDate.Date); if (leaveReq != null) { var leaveRange = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper(); if (leaveRange == "AFTERNOON" || leaveRange == "ALL") - checkOutStatus = "NORMAL"; + { + if(DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) < + DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {endTimeMorning}")) + checkOutStatus = "ABSENT"; + else + checkOutStatus = "NORMAL"; + } else { // fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลาเข้า-ออกงาน (กรณีลงเวลาออกอีกวัน) #921 @@ -2438,6 +2446,9 @@ namespace BMA.EHR.Leave.Service.Controllers var endTime = isSeminar.Trim().ToUpper() == "Y" ? DateTime.Parse($"{DateTime.Now.Date.ToString("yyyy-MM-dd")} 14:30") : DateTime.Parse($"{DateTime.Now.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}"); + + var endTimeMorning = DateTime.Parse($"{DateTime.Now.Date.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}"); + var status = string.Empty; if(lastCheckIn == null) { @@ -2458,7 +2469,16 @@ namespace BMA.EHR.Leave.Service.Controllers { var leaveRange = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper(); if (leaveRange == "AFTERNOON" || leaveRange == "ALL") - status = "NORMAL"; + { + if(time < endTimeMorning) + { + status = "ABSENT"; + } + else + { + status = "NORMAL"; + } + } else { status = "ABSENT";