Add GetDifference method to DateTimeExtension and implement TimeCheck endpoint in LeaveRequestController
This commit is contained in:
parent
5b054f9948
commit
acdfdce8eb
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)
|
public static int CalculateAge(this DateTime date, int plusYear = 0, int subtractYear = 0)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
||||||
|
|
@ -966,6 +966,33 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
return Success(result);
|
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>
|
/// <summary>
|
||||||
/// LV2_003 - เช็คการยืนขอลา (USER)
|
/// LV2_003 - เช็คการยืนขอลา (USER)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -987,12 +1014,15 @@ namespace BMA.EHR.Leave.Service.Controllers
|
||||||
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
|
// var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
|
||||||
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, AccessToken);
|
var profile = await _userProfileRepository.GetProfileByKeycloakIdNewAsync(userId, 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);
|
||||||
var date1Raw = profile?.DateStart?.Date ?? DateTime.Now.Date;
|
var startDate = profile?.DateStart?.Date ?? DateTime.Now.Date;
|
||||||
var date1 = new LocalDate(date1Raw.Year, date1Raw.Month, date1Raw.Day);
|
// var date1Raw = profile?.DateStart?.Date ?? DateTime.Now.Date;
|
||||||
var date2 = new LocalDate(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
// var date1 = new LocalDate(date1Raw.Year, date1Raw.Month, date1Raw.Day);
|
||||||
Period period = Period.Between(date1, date2);
|
// var date2 = new LocalDate(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
||||||
var govAgeMonth = period.Months;
|
// Period period = Period.Between(date1, date2);
|
||||||
var govAgeYear = period.Years;
|
// var govAgeMonth = period.Months;
|
||||||
|
// var govAgeYear = period.Years;
|
||||||
|
|
||||||
|
var (govAgeYear, govAgeMonth, govAgeDay) = startDate.GetDifference(DateTime.Now.Date);
|
||||||
|
|
||||||
var thisYear = DateTime.Now.Year;
|
var thisYear = DateTime.Now.Year;
|
||||||
|
|
||||||
|
|
@ -1089,37 +1119,11 @@ 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(fiscalYear - 1)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
|
if (govAgeYear >= 1 || (govAgeYear == 0 && govAgeMonth >= 6))
|
||||||
//var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
|
|
||||||
// if (profile.IsProbation! == true)
|
|
||||||
// {
|
|
||||||
// isLeave = false;
|
|
||||||
// if (!isLeave) message = "ยังอยู่ในช่วงทดลองปฏิบัติราชการ ไม่สามารถลาพักผ่อนได้";
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
if (govAgeMonth >= 6)
|
|
||||||
//else
|
|
||||||
{
|
{
|
||||||
isLeave = (totalDay - (sumWorkDay + sumWeekend) + approveDay) <= (limitDay);
|
isLeave = (totalDay - (sumWorkDay + sumWeekend) + approveDay) <= (limitDay);
|
||||||
if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
|
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
|
else
|
||||||
{
|
{
|
||||||
isLeave = false;
|
isLeave = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue