ปรับการเอาวันที่ใช้ไป และยอดวันลาพักผ่อนยกมา มาใช้งาน
Some checks failed
release-dev / release-dev (push) Failing after 11s

This commit is contained in:
Suphonchai Phoonsawat 2025-04-25 11:05:19 +07:00
parent a7b8c2786c
commit 04b17729e0
4 changed files with 56 additions and 19 deletions

View file

@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Asn1.Pkcs;
using Swashbuckle.AspNetCore.Annotations;
using System.Net.Http.Headers;
using System.Security.Claims;
@ -43,6 +44,7 @@ namespace BMA.EHR.Leave.Service.Controllers
private readonly CommandRepository _commandRepository;
private readonly UserCalendarRepository _userCalendarRepository;
private readonly PermissionRepository _permission;
private readonly LeaveBeginningRepository _leaveBeginningRepository;
private const string APPROVE_STEP_CREATE = "st1";
private const string APPROVE_STEP_OFFICER_APPROVE = "st2";
@ -65,7 +67,8 @@ namespace BMA.EHR.Leave.Service.Controllers
HolidayRepository holidayRepository,
CommandRepository commandRepository,
UserCalendarRepository userCalendarRepository,
PermissionRepository permission)
PermissionRepository permission,
LeaveBeginningRepository leaveBeginningRepository)
{
_context = context;
_httpContextAccessor = httpContextAccessor;
@ -79,6 +82,7 @@ namespace BMA.EHR.Leave.Service.Controllers
_commandRepository = commandRepository;
_userCalendarRepository = userCalendarRepository;
_permission = permission;
_leaveBeginningRepository = leaveBeginningRepository;
}
#endregion
@ -821,19 +825,21 @@ namespace BMA.EHR.Leave.Service.Controllers
if (leaveType.Code.Trim().ToUpper() == "LV-005")
{
var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, leaveType.Id);
if (govAge >= 180)
{
var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
if (govAge >= 3650)
{
leaveLimit = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
remainPrev = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
leaveLimit = beginningLeave != null ? beginningLeave.LeaveDays : 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
remainPrev = beginningLeave != null ? beginningLeave.LeaveDays : 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
if (remainPrev >= 20) remainPrev = 20;
}
else
{
leaveLimit = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
remainPrev = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
leaveLimit = beginningLeave != null ? beginningLeave.LeaveDays : 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
remainPrev = beginningLeave != null ? beginningLeave.LeaveDays : 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
if (remainPrev >= 10) remainPrev = 10;
}
}
@ -1823,11 +1829,11 @@ namespace BMA.EHR.Leave.Service.Controllers
return Success();
}
catch(Exception ex)
catch (Exception ex)
{
return Error(ex);
}
}
/// <summary>
@ -1895,7 +1901,7 @@ namespace BMA.EHR.Leave.Service.Controllers
{
return Error(ex);
}
}
/// <summary>
@ -1996,7 +2002,7 @@ namespace BMA.EHR.Leave.Service.Controllers
{
return Error(ex);
}
}
/// <summary>
@ -2100,6 +2106,8 @@ namespace BMA.EHR.Leave.Service.Controllers
if (rawData.Type.Code == "LV-005")
{
var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, rawData.Type.Id);
var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == rawData.KeycloakUserId && x.LeaveTypeId == rawData.Type.Id);
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
@ -2111,12 +2119,12 @@ namespace BMA.EHR.Leave.Service.Controllers
if (govAge >= 3650)
{
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
if (extendLeave >= 20) extendLeave = 20;
}
else
{
extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
if (extendLeave >= 10) extendLeave = 10;
}
}
@ -2290,6 +2298,8 @@ namespace BMA.EHR.Leave.Service.Controllers
if (leaveType.Code == "LV-005")
{
var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, leaveType.Id);
var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
@ -2301,12 +2311,12 @@ namespace BMA.EHR.Leave.Service.Controllers
if (govAge >= 3650)
{
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
if (extendLeave >= 20) extendLeave = 20;
}
else
{
extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
if (extendLeave >= 10) extendLeave = 10;
}
}