fix issue : SIT ระบบบันทึกการลา>> สิทธิ์การลา(โอนสิทธิ์การลา) #974

This commit is contained in:
Suphonchai Phoonsawat 2025-01-30 12:03:14 +07:00
parent 177cefcccc
commit e6a73f1d19

View file

@ -18,6 +18,7 @@ using Newtonsoft.Json.Linq;
using Swashbuckle.AspNetCore.Annotations; using Swashbuckle.AspNetCore.Annotations;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Security.Claims; using System.Security.Claims;
using System.Security.Policy;
namespace BMA.EHR.Leave.Service.Controllers namespace BMA.EHR.Leave.Service.Controllers
{ {
@ -883,7 +884,7 @@ namespace BMA.EHR.Leave.Service.Controllers
break; break;
case "LV-005": case "LV-005":
// fix issue : ระบบลา (ขรก.) >> ลาพักผ่อน (กรณีรับราชการไม่ถึง 6 เดือน) #838 // fix issue : ระบบลา (ขรก.) >> ลาพักผ่อน (กรณีรับราชการไม่ถึง 6 เดือน) #838
var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear -1)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault(); var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear - 1)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
//var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน //var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
if (govAge >= 180) if (govAge >= 180)
@ -1975,6 +1976,8 @@ namespace BMA.EHR.Leave.Service.Controllers
var rejectList = await _leaveRequestRepository.GetSumRejectLeaveAsync(thisYear); var rejectList = await _leaveRequestRepository.GetSumRejectLeaveAsync(thisYear);
var deleteList = await _leaveRequestRepository.GetSumDeleteLeaveAsync(thisYear); var deleteList = await _leaveRequestRepository.GetSumDeleteLeaveAsync(thisYear);
var approvePrevYear = await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear - 1);
var result = new List<dynamic>(); var result = new List<dynamic>();
foreach (var leaveType in leaveTypes) foreach (var leaveType in leaveTypes)
{ {
@ -1990,12 +1993,43 @@ namespace BMA.EHR.Leave.Service.Controllers
var deleteData = deleteList.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id); var deleteData = deleteList.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
var delete = deleteData == null ? 0 : deleteData.SumLeaveDay; var delete = deleteData == null ? 0 : deleteData.SumLeaveDay;
// fix issue : SIT ระบบบันทึกการลา>> สิทธิ์การลา(โอนสิทธิ์การลา) #974
var extendLeave = 0.0;
var leaveLimit = leaveType.Limit;
if (leaveType.Code == "LV-005")
{
var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
var apprvPrev = apprvPrevData == null ? 0 : approveData.SumLeaveDay;
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
if (govAge >= 180)
{
if (govAge >= 3650)
{
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
if (extendLeave >= 20) extendLeave = 20;
}
else
{
extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
if (extendLeave >= 10) extendLeave = 10;
}
}
else
leaveLimit = 0;
}
var data = new var data = new
{ {
Id = leaveType.Id, Id = leaveType.Id,
LeaveTypeName = leaveType.Name, LeaveTypeName = leaveType.Name,
LeaveLimit = leaveType.Limit, LeaveLimit = leaveLimit,
LeaveExtend = 0, LeaveExtend = extendLeave,
leavePercent = Math.Round((approve * 100.0) / leaveType.Limit, 2), leavePercent = Math.Round((approve * 100.0) / leaveType.Limit, 2),
LeaveCountSend = send, LeaveCountSend = send,
LeaveCountApprove = approve, LeaveCountApprove = approve,