Add GetDifference method to DateTimeExtension and implement TimeCheck endpoint in LeaveRequestController
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m35s
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m35s
This commit is contained in:
parent
5b054f9948
commit
c20e1b48bd
2 changed files with 60 additions and 33 deletions
|
|
@ -174,6 +174,29 @@ namespace BMA.EHR.Domain.Extensions
|
|||
}
|
||||
}
|
||||
|
||||
public static (int Years, int Months, int Days) GetDifference(this DateTime from, DateTime to)
|
||||
{
|
||||
if (from > to) (from, to) = (to, from); // swap ถ้าลำดับสลับ
|
||||
|
||||
int years = to.Year - from.Year;
|
||||
int months = to.Month - from.Month;
|
||||
int days = to.Day - from.Day;
|
||||
|
||||
if (days < 0)
|
||||
{
|
||||
months--;
|
||||
days += DateTime.DaysInMonth(to.Year, to.Month == 1 ? 12 : to.Month - 1);
|
||||
}
|
||||
|
||||
if (months < 0)
|
||||
{
|
||||
years--;
|
||||
months += 12;
|
||||
}
|
||||
|
||||
return (years, months, days);
|
||||
}
|
||||
|
||||
public static int CalculateAge(this DateTime date, int plusYear = 0, int subtractYear = 0)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -966,6 +966,33 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
return Success(result);
|
||||
}
|
||||
|
||||
[HttpGet("time-check")]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<ResponseObject>> TimeCheckAsync()
|
||||
{
|
||||
var startDate = new DateTime(2017, 1, 6);
|
||||
var govAge = (startDate).DiffDay(DateTime.Now.Date);
|
||||
var date1Raw = startDate;
|
||||
var date1 = new LocalDate(date1Raw.Year, date1Raw.Month, date1Raw.Day);
|
||||
var date2 = new LocalDate(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
||||
|
||||
|
||||
var (yy, mm, dd) = startDate.GetDifference(DateTime.Now.Date);
|
||||
|
||||
|
||||
// Period period = Period.Between(date1, date2);
|
||||
// var govAgeMonth = period.Months;
|
||||
// var govAgeYear = period.Years;
|
||||
|
||||
return Success(new
|
||||
{
|
||||
GovAge = govAge,
|
||||
GovAgeDay = dd,
|
||||
GovAgeMonth = mm,
|
||||
GovAgeYear = yy
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LV2_003 - เช็คการยืนขอลา (USER)
|
||||
/// </summary>
|
||||
|
|
@ -987,12 +1014,15 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
|
||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
|
||||
var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date);
|
||||
var date1Raw = profile?.DateStart?.Date ?? DateTime.Now.Date;
|
||||
var date1 = new LocalDate(date1Raw.Year, date1Raw.Month, date1Raw.Day);
|
||||
var date2 = new LocalDate(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
||||
Period period = Period.Between(date1, date2);
|
||||
var govAgeMonth = period.Months;
|
||||
var govAgeYear = period.Years;
|
||||
var startDate = profile?.DateStart?.Date ?? DateTime.Now.Date;
|
||||
// var date1Raw = profile?.DateStart?.Date ?? DateTime.Now.Date;
|
||||
// var date1 = new LocalDate(date1Raw.Year, date1Raw.Month, date1Raw.Day);
|
||||
// var date2 = new LocalDate(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
||||
// Period period = Period.Between(date1, date2);
|
||||
// var govAgeMonth = period.Months;
|
||||
// var govAgeYear = period.Years;
|
||||
|
||||
var (govAgeYear, govAgeMonth, govAgeDay) = startDate.GetDifference(DateTime.Now.Date);
|
||||
|
||||
var thisYear = DateTime.Now.Year;
|
||||
|
||||
|
|
@ -1089,37 +1119,11 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
break;
|
||||
case "LV-005":
|
||||
// fix issue : ระบบลา (ขรก.) >> ลาพักผ่อน (กรณีรับราชการไม่ถึง 6 เดือน) #838
|
||||
//var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(fiscalYear - 1)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
|
||||
//var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
||||
// if (profile.IsProbation! == true)
|
||||
// {
|
||||
// isLeave = false;
|
||||
// if (!isLeave) message = "ยังอยู่ในช่วงทดลองปฏิบัติราชการ ไม่สามารถลาพักผ่อนได้";
|
||||
// }
|
||||
// else
|
||||
if (govAgeMonth >= 6)
|
||||
//else
|
||||
if (govAgeYear >= 1 || (govAgeYear == 0 && govAgeMonth >= 6))
|
||||
{
|
||||
isLeave = (totalDay - (sumWorkDay + sumWeekend) + approveDay) <= (limitDay);
|
||||
if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
|
||||
}
|
||||
// else if (govAge >= 3650)
|
||||
// {
|
||||
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
|
||||
// var leavePrevYearRemain = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
||||
// if (leavePrevYearRemain >= 20) leavePrevYearRemain = 20;
|
||||
|
||||
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + approveDay) <= (limitDay);
|
||||
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
|
||||
// }
|
||||
// else if
|
||||
// {
|
||||
// //var leavePrevYearRemain = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
||||
// //if (leavePrevYearRemain >= 10) leavePrevYearRemain = 10;
|
||||
|
||||
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain);
|
||||
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
|
||||
// }
|
||||
else
|
||||
{
|
||||
isLeave = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue