This commit is contained in:
Suphonchai Phoonsawat 2025-04-22 13:05:47 +07:00
parent 7b6e5635ea
commit b61e36e532

View file

@ -12,10 +12,12 @@ using BMA.EHR.Infrastructure.Persistence;
using BMA.EHR.Leave.Service.DTOs.LeaveRequest;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Asn1.Pkcs;
using Sentry;
using Swashbuckle.AspNetCore.Annotations;
using System.Net.Http.Headers;
using System.Security.Claims;
@ -1978,6 +1980,38 @@ namespace BMA.EHR.Leave.Service.Controllers
if (rawData.Root != null && rawData.Root != "")
orgName += $" {rawData.Root}";
// #1136
var extendLeave = 0.0;
var leaveLimit = rawData.Type.Limit;
var approvePrevYear = await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear - 1);
if (rawData.Type.Code == "LV-005")
{
var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == rawData.KeycloakUserId && x.LeaveTypeId == rawData.Type.Id);
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(rawData.KeycloakUserId, 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 result = new GetLeaveRequestForAdminByIdDto
{
Id = rawData.Id,
@ -2071,9 +2105,9 @@ namespace BMA.EHR.Leave.Service.Controllers
ApproveStep = rawData.ApproveStep ?? "-",
LeaveLimit = rawData.Type.Limit,
LeaveLimit = rawData.Type.Limit + extendLeave,
LeaveSummary = leaveSummary,
LeaveRemain = rawData.Type.Limit - leaveSummary
LeaveRemain = (rawData.Type.Limit + extendLeave) - leaveSummary
};
if (rawData.LeaveDocument != null && rawData.LeaveDocument.Count > 0)
@ -2141,7 +2175,7 @@ namespace BMA.EHR.Leave.Service.Controllers
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 apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);