Compare commits

...

2 commits

Author SHA1 Message Date
Suphonchai Phoonsawat
9bd6017ded Update LeaveController to adjust check-in/check-out times based on user duty schedule #2223
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m16s
2026-01-23 20:35:54 +07:00
Suphonchai Phoonsawat
e1c7688913 Update LeaveController to set end times based on duty schedule for check-in/check-out #2228 2026-01-23 20:27:22 +07:00

View file

@ -1015,13 +1015,18 @@ namespace BMA.EHR.Leave.Service.Controllers
};
var startTime = "";
var endTime = "";
if (!data.IsLocation && data.LocationName == "ไปประชุม / อบรม / สัมมนา")
{
//startTime = "09:30";
startTime = "10:30";
endTime = "12:00";
}
else
{
startTime = duty.StartTimeMorning;
endTime = duty.EndTimeMorning;
}
string checkInStatus = "NORMAL";
var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(userId, currentDate.Date);
@ -1126,15 +1131,22 @@ namespace BMA.EHR.Leave.Service.Controllers
}
var endTime = "";
var startTime = "";
var endTimeMorning = "";
if (!data.IsLocation && data.LocationName == "ไปประชุม / อบรม / สัมมนา")
{
//startTime = "09:30";
startTime = "13:00";
endTime = "14:30";
endTimeMorning = "12:00";
}
else
{
endTime = duty.EndTimeAfternoon;
startTime = duty.StartTimeAfternoon;
endTimeMorning = duty.EndTimeMorning;
}
var endTimeMorning = duty.EndTimeMorning;
string checkOutStatus = "NORMAL";
var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(userId, currentDate.Date);
@ -1161,7 +1173,7 @@ namespace BMA.EHR.Leave.Service.Controllers
"NORMAL" :
"ABSENT" :
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {endTimeMorning}") ?
"ABSENT" :
"NORMAL";
}
@ -1178,7 +1190,7 @@ namespace BMA.EHR.Leave.Service.Controllers
"NORMAL" :
"ABSENT" :
DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
DateTime.Parse($"{currentDate.ToString("yyyy-MM-dd")} {endTimeMorning}") ?
"ABSENT" :
"NORMAL";
}
@ -3622,6 +3634,30 @@ namespace BMA.EHR.Leave.Service.Controllers
var data = await _processUserTimeStampRepository.GetByIdAsync(id);
if (data == null)
return Error(GlobalMessages.DataNotFound);
if (data.CheckInStatus == "NORMAL" || data.CheckOutStatus == "NORMAL")
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(id, AccessToken);
var defaultRound = await _dutyTimeRepository.GetDefaultAsync();
if (defaultRound == null)
{
return Error("ไม่พบรอบการลงเวลา Default", StatusCodes.Status404NotFound);
}
var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(profile!.Id);
var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty;
var userRound = await _dutyTimeRepository.GetByIdAsync(roundId);
var duty = userRound ?? defaultRound;
if (req.CheckInStatus == "NORMAL")
{
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;
data.CheckOut = DateTime.Parse($"{checkOutTime.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}");
}
}
data.CheckInStatus = req.CheckInStatus;
data.CheckOutStatus = req.CheckOutStatus;