From ca1a2c05c31405989eb812ddfa10ca59c37cab1b Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Tue, 29 Apr 2025 19:08:51 +0700 Subject: [PATCH] fix Leave API --- .../LeaveRequests/LeaveRequestRepository.cs | 6 ++-- .../Controllers/LeaveRequestController.cs | 28 +++++++++++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index abb954c7..cc4d7644 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -437,7 +437,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests data.LeaveCancelStatus = "APPROVE"; - data.LeaveCancelComment = Reason; + data.LeaveDirectorComment = Reason; // TODO : Update ไปตาราง beginning await _leaveBeginningRepository.UpdateLeaveUsageAsync(data.LeaveStartDate.Year, data.Type.Id, data.KeycloakUserId, -1 * data.LeaveTotal); @@ -478,7 +478,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests } rawData.LeaveCancelStatus = "APPROVE"; - rawData.LeaveCancelComment = Reason; + rawData.LeaveDirectorComment = Reason; await UpdateWithTrackingAsync(rawData); @@ -514,7 +514,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests } rawData.LeaveCancelStatus = "REJECT"; - rawData.LeaveCancelComment = Reason; + rawData.LeaveDirectorComment = Reason; // fix issue : ระบบลา (User) >> กรณีขอยกเลิกการลา แต่ผู้บังคับบัญชาไม่อนุมัติ (สถานะการลาไม่อัปเดต) #846 if (rawData.ApproveStep == "st4") diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs index 65b282f7..ffc4ae0a 100644 --- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs @@ -915,11 +915,11 @@ namespace BMA.EHR.Leave.Service.Controllers PositionLevelName = profile.PosLevel == null ? "" : profile.PosLevel, OrganizationName = orgName, //profile.Oc ?? "", - LeaveLimit = leaveLimit, - LeaveTotal = sumLeave, + LeaveLimit = leaveLimit, // จำนวนวันลาทั้งหมดในปีนั้นๆที่ลาได้ โดยรวมยอดที่เหลือจากปีก่อนมา (เอาค่ามาจากตาราง Beginning เลย) + LeaveTotal = sumLeave, // จำนวนวันลาที่ลาไปแล้วในปีนั้นๆ โดยเมื่อมีการอนุมัติลา จะมาบวกค่านี้ไปเรื่อยๆ (เอาค่ามาจากตาราง Beginning เลย) LeaveRemain = leaveLimit - sumLeave, - RestDayTotalOld = restOldDay, - RestDayTotalCurrent = restCurrentDay, + RestDayTotalOld = restOldDay, // เอา leaveLimit มาลบ 10 (LV-005) + RestDayTotalCurrent = restCurrentDay,// 10 วันเสมอ (LV-005) BirthDate = profile.BirthDate.Date, DateAppoint = profile.DateAppoint == null ? null : profile.DateAppoint.Value.Date, Salary = lastSalary == null ? 0 : lastSalary.Amount == null ? 0 : (int)lastSalary.Amount.Value, @@ -1367,6 +1367,8 @@ namespace BMA.EHR.Leave.Service.Controllers [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> GetLeaveRequestByIdAsync(Guid id) { + //var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); + var rawData = await _leaveRequestRepository.GetByIdAsync(id); var thisYear = DateTime.Now.Year; @@ -1383,6 +1385,8 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound); } + var govAge = (profile?.DateStart?.Date ?? DateTime.Now.Date).DiffDay(DateTime.Now.Date); + var userCalendar = await _userCalendarRepository.GetExist(profile.Id); var category = userCalendar == null ? "NORMAL" : userCalendar.Calendar; @@ -1411,6 +1415,12 @@ namespace BMA.EHR.Leave.Service.Controllers orgName += $" {rawData.Root}"; + + var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(thisYear, rawData.Type.Id, rawData.KeycloakUserId); + var restDayOld = govAge < 180 ? 0 : leaveData == null ? 0 : leaveData.LeaveDays - 10; + var restDayCurrent = govAge < 180 ? 0 : 10; + + var result = new GetLeaveRequestByIdDto { Id = rawData.Id, @@ -1451,8 +1461,14 @@ namespace BMA.EHR.Leave.Service.Controllers WifeDayName = rawData.WifeDayName, WifeDayDateBorn = rawData.WifeDayDateBorn, - RestDayOldTotal = rawData.RestDayOldTotal, - RestDayCurrentTotal = rawData.RestDayCurrentTotal, + + RestDayOldTotal = restDayOld, + RestDayCurrentTotal = restDayCurrent, + + //RestDayOldTotal = rawData.RestDayOldTotal, + //RestDayCurrentTotal = rawData.RestDayCurrentTotal, + + OrdainDayStatus = rawData.OrdainDayStatus, OrdainDayLocationName = rawData.OrdainDayLocationName, OrdainDayLocationAddress = rawData.OrdainDayLocationAddress,