fix issue : SIT ระบบบันทึกเวลาปฏิบัติงาน>>ลงเวลากรณีพิเศษ (ไม่มีแจ้งเตือนไปยังผู้บังคับบัญชา) #969

This commit is contained in:
Suphonchai Phoonsawat 2025-01-24 10:18:41 +07:00
parent 752b1a5479
commit 6afb95fe1b
3 changed files with 116 additions and 37 deletions

View file

@ -703,12 +703,55 @@ namespace BMA.EHR.Leave.Service.Controllers
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
}
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type);
if (leaveType == null)
{
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
}
var leaveLimit = 0;
if (leaveType.Code.Trim().ToUpper() == "LV-005")
{
if (govAge >= 180)
{
if (govAge >= 3650) leaveLimit = 30;
else leaveLimit = 20;
}
else
{
leaveLimit = 0;
}
//var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
//var leavePrevYearRemain = 0;
////var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
//if (govAge >= 180)
// if (govAge >= 3650)
// {
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (20 + leavePrevYearRemain);
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
// }
// else
// {
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain);
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
// }
//else
//{
// leavePrevYearRemain
//}
}
else
leaveLimit = leaveType.Limit;
var sumLeave = await _leaveRequestRepository.GetSumLeaveByTypeForUserAsync(userId, req.Type, thisYear);
var restOldDay = await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1);
@ -738,9 +781,9 @@ namespace BMA.EHR.Leave.Service.Controllers
PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel,
OrganizationName = profile.Root ?? "", //profile.Oc ?? "",
LeaveLimit = leaveType.Limit,
LeaveLimit = leaveLimit,
LeaveTotal = sumLeave,
LeaveRemain = leaveType.Limit - sumLeave,
LeaveRemain = leaveLimit - sumLeave,
RestDayTotalOld = restOldDay,
BirthDate = profile.BirthDate.Date,
DateAppoint = profile.DateAppoint == null ? null : profile.DateAppoint.Value.Date,