diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs index e4f61d3d..b24b0427 100644 --- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs @@ -773,6 +773,8 @@ namespace BMA.EHR.Leave.Service.Controllers var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date); var thisYear = DateTime.Now.Year; + var message = string.Empty; + if (profile == null) { return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); @@ -823,15 +825,24 @@ namespace BMA.EHR.Leave.Service.Controllers case "LV-001": // fix issue : ระบบลา (ขรก.) >> ลาป่วย (กรณียื่นขอลาเกิน 120 วัน/ปี) #828 isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= 120; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; //isLeave = true; break; case "LV-002": // fix issue : ระบบลา (ขรก.) >> ลากิจส่วนตัว (กรณียื่นขอลาเกิน 45 วัน/ปี) #829 // fix issue : ระบบลา (ขรก.) >> ลากิจส่วนตัว (กรณีผู้เข้ารับราชการไม่เกิน 1 ปี ยื่นขอลาเกิน 15 วัน/ปี) #831 if (govAge <= 365) + { isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= 15; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; + } + else + { isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= 45; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; + } + //isLeave = true; break; case "LV-007": @@ -839,9 +850,11 @@ namespace BMA.EHR.Leave.Service.Controllers break; case "LV-003": isLeave = totalDay <= 90; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; break; case "LV-004": isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= 15; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; break; case "LV-005": // fix issue : ระบบลา (ขรก.) >> ลาพักผ่อน (กรณีรับราชการไม่ถึง 6 เดือน) #838 @@ -849,31 +862,55 @@ namespace BMA.EHR.Leave.Service.Controllers var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน if (govAge >= 180) - if (govAge >= 3650) // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน + if (govAge >= 3650) + { + // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (20 + leavePrevYearRemain); + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; + } else + { isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain); + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; + } + else + { isLeave = false; + if (!isLeave) message = "อายุราชการน้อยกว่า 6 เดือนหรือ 180 วัน"; + } + break; case "LV-006": // fix issue : ระบบลา(ขรก.) >> ลาอุปสมบทหรือการลาประกอบพิธีฮัจย์ฯ(กรณีรับราชการน้อยกว่า 1 ปี) #840 if (govAge < 365) + { isLeave = false; + if (!isLeave) message = "อายุราชการน้อยกว่า 1 ปีหรือ 365 วัน"; + } + else { // fix issue : ระบบลา (ขรก.) >> ลาอุปสมบทหรือการลาประกอบพิธีฮัจย์ฯ (ยื่นขอลาได้มากกว่า 1 ครั้ง) #841 var prevLeave = _context.Set().Where(x => x.LeaveTypeCode == "LV-006").Where(x => x.LeaveStatus == "APPROVE").Count(); if (prevLeave > 0) + { isLeave = false; + if (!isLeave) message = "ไม่สามารถขอลาได้ เนื้่องจากเคยยื่นขอลาไปแล้ว"; + } else + { isLeave = totalDay <= 120; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; + } + } break; case "LV-008": case "LV-009": isLeave = govAge >= 365; + if (!isLeave) message = "อายุราชการน้อยกว่า 1 ปีหรือ 365 วัน"; break; case "LV-010": int yy, mm, dd; @@ -933,10 +970,12 @@ namespace BMA.EHR.Leave.Service.Controllers var maxEnd = new DateTime(yy, mm, dd); isLeave = req.EndLeaveDate.Date <= maxEnd; + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; break; case "LV-011": //isLeave = totalDay <= 360; isLeave = totalDay <= 365; // fix issue : 847 เปลี่ยนเป็นเช็คว่าเกิน 365 วันหรีอไม่ + if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด"; break; } @@ -947,7 +986,8 @@ namespace BMA.EHR.Leave.Service.Controllers IsLeave = !isBetween ? isLeave : false, SumDateWork = sumWorkDay, TotalDate = totalDay, - SumDateHoliday = sumWeekend + SumDateHoliday = sumWeekend, + Message = message, }; return Success(result); diff --git a/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs b/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs index db739e17..4273b0e4 100644 --- a/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs +++ b/BMA.EHR.Leave/DTOs/LeaveRequest/GetLeaveCheckResultDto.cs @@ -9,5 +9,7 @@ public double TotalDate { get; set; } = 0; public double SumDateHoliday { get; set; } = 0; + + public string Message { get; set; } = string.Empty; } } \ No newline at end of file