ปรับการเอาวันที่ใช้ไป และยอดวันลาพักผ่อนยกมา มาใช้งาน
Some checks failed
release-dev / release-dev (push) Failing after 11s
Some checks failed
release-dev / release-dev (push) Failing after 11s
This commit is contained in:
parent
a7b8c2786c
commit
04b17729e0
4 changed files with 56 additions and 19 deletions
|
|
@ -61,5 +61,12 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
||||||
.Where(x => x.LeaveYear == year)
|
.Where(x => x.LeaveYear == year)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<LeaveBeginning?> GetByYearAndTypeIdAsync(int year, Guid typeId)
|
||||||
|
{
|
||||||
|
return await _dbContext.Set<LeaveBeginning>()
|
||||||
|
.Include(x => x.LeaveType)
|
||||||
|
.FirstOrDefaultAsync(x => x.LeaveYear == year && x.LeaveTypeId == typeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -280,6 +280,18 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
||||||
|
|
||||||
public async Task<double> GetSumLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
|
public async Task<double> GetSumLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
|
||||||
{
|
{
|
||||||
|
var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(keycloakUserId, AccessToken);
|
||||||
|
if (pf == null)
|
||||||
|
throw new Exception(GlobalMessages.DataNotFound);
|
||||||
|
|
||||||
|
var beginningLeave = await _dbContext.Set<LeaveBeginning>().AsNoTracking()
|
||||||
|
.Where(x => x.ProfileId == pf.Id)
|
||||||
|
.Where(x => x.LeaveYear == year)
|
||||||
|
.Where(x => x.LeaveTypeId == leaveTypeId)
|
||||||
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var startFiscalDate = new DateTime(year - 1, 10, 1);
|
var startFiscalDate = new DateTime(year - 1, 10, 1);
|
||||||
var endFiscalDate = new DateTime(year, 9, 30);
|
var endFiscalDate = new DateTime(year, 9, 30);
|
||||||
|
|
||||||
|
|
@ -293,7 +305,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
||||||
//.Where(x => x.LeaveStatus != "REJECT" && x.LeaveStatus != "DELETE")
|
//.Where(x => x.LeaveStatus != "REJECT" && x.LeaveStatus != "DELETE")
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
return data.Sum(x => x.LeaveTotal);
|
return data.Sum(x => x.LeaveTotal) + (beginningLeave == null ? 0 : beginningLeave.LeaveDaysUsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
//public async Task<double> GetSumApproveLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
|
//public async Task<double> GetSumApproveLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
private readonly UserCalendarRepository _userCalendarRepository;
|
private readonly UserCalendarRepository _userCalendarRepository;
|
||||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||||
private readonly PermissionRepository _permission;
|
private readonly PermissionRepository _permission;
|
||||||
|
private readonly LeaveBeginningRepository _leaveBeginningRepository;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
@ -60,7 +61,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
HolidayRepository holidayRepository,
|
HolidayRepository holidayRepository,
|
||||||
UserCalendarRepository userCalendarRepository,
|
UserCalendarRepository userCalendarRepository,
|
||||||
IHttpContextAccessor httpContextAccessor,
|
IHttpContextAccessor httpContextAccessor,
|
||||||
PermissionRepository permission)
|
PermissionRepository permission,
|
||||||
|
LeaveBeginningRepository leaveBeginningRepository)
|
||||||
{
|
{
|
||||||
_leaveRequestRepository = leaveRequestRepository;
|
_leaveRequestRepository = leaveRequestRepository;
|
||||||
_userProfileRepository = userProfileRepository;
|
_userProfileRepository = userProfileRepository;
|
||||||
|
|
@ -73,6 +75,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
_userCalendarRepository = userCalendarRepository;
|
_userCalendarRepository = userCalendarRepository;
|
||||||
_httpContextAccessor = httpContextAccessor;
|
_httpContextAccessor = httpContextAccessor;
|
||||||
_permission = permission;
|
_permission = permission;
|
||||||
|
_leaveBeginningRepository = leaveBeginningRepository;
|
||||||
}
|
}
|
||||||
private class LoopDate
|
private class LoopDate
|
||||||
{
|
{
|
||||||
|
|
@ -231,7 +234,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
private async Task<dynamic> GetReport03(LeaveRequest data)
|
private async Task<dynamic> GetReport03(LeaveRequest data)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
|
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
|
||||||
|
|
@ -240,7 +243,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}";
|
var fullName = $"{profile!.Prefix}{profile!.FirstName} {profile!.LastName}";
|
||||||
|
|
||||||
|
|
@ -274,6 +277,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == data.KeycloakUserId && x.LeaveTypeId == data.Type.Id);
|
var apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == data.KeycloakUserId && x.LeaveTypeId == data.Type.Id);
|
||||||
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
|
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
|
||||||
|
|
||||||
|
//หาวันลายกมาของปีก่อน
|
||||||
|
var leaveBeginning = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(data.LeaveStartDate.Year, data.Type.Id);
|
||||||
|
|
||||||
//var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
|
//var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(data.KeycloakUserId, AccessToken);
|
||||||
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
|
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
|
||||||
|
|
||||||
|
|
@ -282,12 +288,14 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
if (govAge >= 3650)
|
if (govAge >= 3650)
|
||||||
{
|
{
|
||||||
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
||||||
extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
//extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
||||||
|
extendLeave = leaveBeginning == null ? 30 - apprvPrev : leaveBeginning.LeaveDays;
|
||||||
if (extendLeave >= 20) extendLeave = 20;
|
if (extendLeave >= 20) extendLeave = 20;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
//extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
||||||
|
extendLeave = leaveBeginning == null ? 20 - apprvPrev : leaveBeginning.LeaveDays;
|
||||||
if (extendLeave >= 10) extendLeave = 10;
|
if (extendLeave >= 10) extendLeave = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using Org.BouncyCastle.Asn1.Pkcs;
|
||||||
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;
|
||||||
|
|
@ -43,6 +44,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
private readonly CommandRepository _commandRepository;
|
private readonly CommandRepository _commandRepository;
|
||||||
private readonly UserCalendarRepository _userCalendarRepository;
|
private readonly UserCalendarRepository _userCalendarRepository;
|
||||||
private readonly PermissionRepository _permission;
|
private readonly PermissionRepository _permission;
|
||||||
|
private readonly LeaveBeginningRepository _leaveBeginningRepository;
|
||||||
|
|
||||||
private const string APPROVE_STEP_CREATE = "st1";
|
private const string APPROVE_STEP_CREATE = "st1";
|
||||||
private const string APPROVE_STEP_OFFICER_APPROVE = "st2";
|
private const string APPROVE_STEP_OFFICER_APPROVE = "st2";
|
||||||
|
|
@ -65,7 +67,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
HolidayRepository holidayRepository,
|
HolidayRepository holidayRepository,
|
||||||
CommandRepository commandRepository,
|
CommandRepository commandRepository,
|
||||||
UserCalendarRepository userCalendarRepository,
|
UserCalendarRepository userCalendarRepository,
|
||||||
PermissionRepository permission)
|
PermissionRepository permission,
|
||||||
|
LeaveBeginningRepository leaveBeginningRepository)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_httpContextAccessor = httpContextAccessor;
|
_httpContextAccessor = httpContextAccessor;
|
||||||
|
|
@ -79,6 +82,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
_commandRepository = commandRepository;
|
_commandRepository = commandRepository;
|
||||||
_userCalendarRepository = userCalendarRepository;
|
_userCalendarRepository = userCalendarRepository;
|
||||||
_permission = permission;
|
_permission = permission;
|
||||||
|
_leaveBeginningRepository = leaveBeginningRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -821,19 +825,21 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
if (leaveType.Code.Trim().ToUpper() == "LV-005")
|
if (leaveType.Code.Trim().ToUpper() == "LV-005")
|
||||||
{
|
{
|
||||||
|
var beginningLeave = await _leaveBeginningRepository.GetByYearAndTypeIdAsync(thisYear, leaveType.Id);
|
||||||
|
|
||||||
if (govAge >= 180)
|
if (govAge >= 180)
|
||||||
{
|
{
|
||||||
var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
|
var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
|
||||||
if (govAge >= 3650)
|
if (govAge >= 3650)
|
||||||
{
|
{
|
||||||
leaveLimit = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
|
leaveLimit = beginningLeave != null ? beginningLeave.LeaveDays : 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
|
||||||
remainPrev = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
remainPrev = beginningLeave != null ? beginningLeave.LeaveDays : 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
||||||
if (remainPrev >= 20) remainPrev = 20;
|
if (remainPrev >= 20) remainPrev = 20;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
leaveLimit = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
|
leaveLimit = beginningLeave != null ? beginningLeave.LeaveDays : 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
|
||||||
remainPrev = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
remainPrev = beginningLeave != null ? beginningLeave.LeaveDays : 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
||||||
if (remainPrev >= 10) remainPrev = 10;
|
if (remainPrev >= 10) remainPrev = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1823,11 +1829,11 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
return Success();
|
return Success();
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return Error(ex);
|
return Error(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -1895,7 +1901,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
{
|
{
|
||||||
return Error(ex);
|
return Error(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -1996,7 +2002,7 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
{
|
{
|
||||||
return Error(ex);
|
return Error(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -2100,6 +2106,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
if (rawData.Type.Code == "LV-005")
|
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 apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == rawData.KeycloakUserId && x.LeaveTypeId == rawData.Type.Id);
|
||||||
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
|
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
|
||||||
|
|
||||||
|
|
@ -2111,12 +2119,12 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
if (govAge >= 3650)
|
if (govAge >= 3650)
|
||||||
{
|
{
|
||||||
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
||||||
extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
||||||
if (extendLeave >= 20) extendLeave = 20;
|
if (extendLeave >= 20) extendLeave = 20;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
||||||
if (extendLeave >= 10) extendLeave = 10;
|
if (extendLeave >= 10) extendLeave = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2290,6 +2298,8 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
|
|
||||||
if (leaveType.Code == "LV-005")
|
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 apprvPrevData = approvePrevYear.FirstOrDefault(x => x.KeycloakUserId == userId && x.LeaveTypeId == leaveType.Id);
|
||||||
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
|
var apprvPrev = apprvPrevData == null ? 0 : apprvPrevData.SumLeaveDay;
|
||||||
|
|
||||||
|
|
@ -2301,12 +2311,12 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
if (govAge >= 3650)
|
if (govAge >= 3650)
|
||||||
{
|
{
|
||||||
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
||||||
extendLeave = 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 30 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
||||||
if (extendLeave >= 20) extendLeave = 20;
|
if (extendLeave >= 20) extendLeave = 20;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
extendLeave = 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
extendLeave = beginningLeave != null ? beginningLeave.LeaveDays : 20 - apprvPrev; // หายอดวันลาที่เหลือของปีก่อน
|
||||||
if (extendLeave >= 10) extendLeave = 10;
|
if (extendLeave >= 10) extendLeave = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue