diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs index 926a25c9..3eab8066 100644 --- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs @@ -771,6 +771,26 @@ namespace BMA.EHR.Leave.Service.Controllers var sumApproveLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year); + + + var minLeave = (await _context.Set().Where(x => x.Type.Id == req.Type && + x.LeaveStatus != "DELETE" && x.LeaveStatus != "REJECT") + .OrderBy(x => x.LeaveStartDate) + .FirstOrDefaultAsync()); + + var maxLeave = (await _context.Set().Where(x => x.Type.Id == req.Type && + x.LeaveStatus != "DELETE" && x.LeaveStatus != "REJECT") + .OrderByDescending(x => x.LeaveEndDate) + .FirstOrDefaultAsync()); + + var isBetween = false; + if (minLeave != null && maxLeave != null) + { + isBetween = (req.StartLeaveDate.Date >= minLeave.LeaveStartDate.Date && req.StartLeaveDate.Date <= maxLeave.LeaveEndDate.Date) || + (req.EndLeaveDate.Date >= minLeave.LeaveStartDate.Date && req.EndLeaveDate.Date <= maxLeave.LeaveEndDate.Date); + } + + var isLeave = false; switch (leaveType.Code.ToUpper().Trim()) @@ -784,10 +804,10 @@ namespace BMA.EHR.Leave.Service.Controllers isLeave = totalDay <= 90; break; case "LV-004": - isLeave = (totalDay - sumWorkDay - sumWeekend) <= 15; + isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= 15; break; case "LV-005": - isLeave = (totalDay - sumWorkDay - sumWeekend - sumApproveLeave) <= 10; + isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= 10; break; case "LV-006": isLeave = totalDay <= 120; @@ -864,7 +884,7 @@ namespace BMA.EHR.Leave.Service.Controllers var result = new GetLeaveCheckResultDto { - IsLeave = isLeave, + IsLeave = !isBetween ? isLeave : false, SumDateWork = sumWorkDay, TotalDate = totalDay, SumDateHoliday = sumWeekend @@ -1109,7 +1129,7 @@ namespace BMA.EHR.Leave.Service.Controllers CoupleDayLevelCountry = rawData.CoupleDayLevelCountry, CoupleDayCountryHistory = rawData.CoupleDayCountryHistory, CoupleDayTotalHistory = rawData.CoupleDayTotalHistory, - CoupleDayStartDateHistory = rawData.CoupleDayStartDateHistory, + CoupleDayStartDateHistory = rawData.CoupleDayStartDateHistory, CoupleDayEndDateHistory = rawData.CoupleDayEndDateHistory, CoupleDaySumTotalHistory = rawData.CoupleDaySumTotalHistory,