เพิ่ม logic check วันลา
Some checks failed
release-dev / release-dev (push) Failing after 12s

เพิ่ม message ว่าเพราะอะไรถึงลาไม่ได้ เพื่อให้ FE ดึงไปแสดงผล
This commit is contained in:
Suphonchai Phoonsawat 2024-12-15 20:49:49 +07:00
parent 6a3868fd0d
commit 962d7ec7ff
2 changed files with 44 additions and 2 deletions

View file

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

View file

@ -9,5 +9,7 @@
public double TotalDate { get; set; } = 0; public double TotalDate { get; set; } = 0;
public double SumDateHoliday { get; set; } = 0; public double SumDateHoliday { get; set; } = 0;
public string Message { get; set; } = string.Empty;
} }
} }