diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 1ecc5519..5090661b 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -661,6 +661,8 @@ namespace BMA.EHR.Leave.Service.Controllers var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId); + var govAge = profile!.DateStart!.Value.Date.DiffDay(DateTime.Now.Date); + if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); @@ -681,7 +683,40 @@ namespace BMA.EHR.Leave.Service.Controllers var totalDay = req.StartLeaveDate.DiffDay(req.EndLeaveDate); var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate, req.EndLeaveDate, category); - var isLeave = sumLeave + (totalDay - sumWorkDay - sumWeekend) <= leaveType.Limit; + var isLeave = false; + + switch (leaveType.Code.ToUpper().Trim()) + { + case "LV-001": + case "LV-002": + case "LV-007": + isLeave = true; + break; + case "LV-003": + isLeave = totalDay <= 90; + break; + case "LV-004": + isLeave = (totalDay - sumWorkDay - sumWeekend) <= 15; + break; + case "LV-005": + isLeave = (totalDay - sumWorkDay - sumWeekend) <= 10; + break; + case "LV-006": + isLeave = totalDay <= 120; + break; + case "LV-008": + case "LV-009": + isLeave = govAge >= 365; + break; + case "LV-010": + isLeave = totalDay <= 730; + break; + case "LV-011": + isLeave = totalDay <= 360; + break; + } + + //var isLeave = sumLeave + (totalDay - sumWorkDay - sumWeekend) <= leaveType.Limit; var result = new GetLeaveCheckResultDto {