Update LeaveController to refine check-in/check-out logic based on meeting location #2223
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m17s
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m17s
This commit is contained in:
parent
c1d689ebfa
commit
22a7a8c17c
1 changed files with 39 additions and 40 deletions
|
|
@ -3635,53 +3635,52 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
if (data == null)
|
||||
return Error(GlobalMessages.DataNotFound);
|
||||
|
||||
if (data.CheckInStatus == "NORMAL" || data.CheckOutStatus == "NORMAL")
|
||||
//if (data.CheckInStatus == "NORMAL" || data.CheckOutStatus == "NORMAL")
|
||||
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
|
||||
var defaultRound = await _dutyTimeRepository.GetDefaultAsync();
|
||||
if (defaultRound == null)
|
||||
{
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, 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);
|
||||
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")
|
||||
var duty = userRound ?? defaultRound;
|
||||
if (req.CheckInStatus == "NORMAL")
|
||||
{
|
||||
if(data.CheckInLocationName == "ไปประชุม / อบรม / สัมมนา")
|
||||
{
|
||||
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}");
|
||||
}
|
||||
|
||||
data.CheckIn = DateTime.Parse($"{data.CheckIn.Date.ToString("yyyy-MM-dd")} 10:30");
|
||||
}
|
||||
if (req.CheckOutStatus == "NORMAL" )
|
||||
else
|
||||
{
|
||||
var checkOutTime = data.CheckOut != null ? data.CheckOut.Value : data.CheckIn;
|
||||
var oldCheckOutTime = data.CheckOut != null ? data.CheckOut.Value : DateTime.Now;
|
||||
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;
|
||||
}
|
||||
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.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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
data.CheckInStatus = req.CheckInStatus;
|
||||
data.CheckOutStatus = req.CheckOutStatus;
|
||||
data.EditReason = req.Reason;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue