From c1d689ebfafe6f8687b484966c866038ec214ac9 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Fri, 23 Jan 2026 21:25:34 +0700 Subject: [PATCH] Update LeaveController to adjust check-in/check-out times based on location for meetings --- BMA.EHR.Leave/Controllers/LeaveController.cs | 24 +++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/BMA.EHR.Leave/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index 3346a4a4..9de17c1f 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -3637,7 +3637,8 @@ namespace BMA.EHR.Leave.Service.Controllers if (data.CheckInStatus == "NORMAL" || data.CheckOutStatus == "NORMAL") { - var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(id, AccessToken); + var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); + var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken); var defaultRound = await _dutyTimeRepository.GetDefaultAsync(); if (defaultRound == null) { @@ -3650,13 +3651,30 @@ namespace BMA.EHR.Leave.Service.Controllers var duty = userRound ?? defaultRound; if (req.CheckInStatus == "NORMAL") { - data.CheckIn = DateTime.Parse($"{data.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}"); + if(data.CheckInLocationName == "ไปประชุม / อบรม / สัมมนา") + { + data.CheckIn = DateTime.Parse($"{data.CheckIn.Date.ToString("yyyy-MM-dd")} 10:30"); + } + else + { + data.CheckIn = DateTime.Parse($"{data.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}"); + } + } if (req.CheckOutStatus == "NORMAL" ) { var checkOutTime = data.CheckOut != null ? data.CheckOut.Value : data.CheckIn; var oldCheckOutTime = data.CheckOut != null ? data.CheckOut.Value : DateTime.Now; - var roundCheckOutTime = DateTime.Parse($"{checkOutTime.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}"); + var roundCheckOutTime = DateTime.Now; + if(data.CheckOutLocationName == "ไปประชุม / อบรม / สัมมนา") + { + roundCheckOutTime = DateTime.Parse($"{checkOutTime.Date.ToString("yyyy-MM-dd")} 14:30"); + } + else + { + roundCheckOutTime = DateTime.Parse($"{checkOutTime.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}"); + } + if (oldCheckOutTime < roundCheckOutTime) { data.CheckOut = roundCheckOutTime;