diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs
index 79b0cf49..1299337f 100644
--- a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs
+++ b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs
@@ -843,7 +843,8 @@ namespace BMA.EHR.Leave.Service.Controllers
CheckInLocation = d.CheckInPOI,
CheckInLat = d.CheckInLat,
CheckInLon = d.CheckInLon,
- CheckInStatus = DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
+ CheckInStatus = d.CheckInStatus != "" ? d.CheckInStatus :
+ DateTime.Parse(d.CheckIn.ToString("yyyy-MM-dd HH:mm")) >
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.StartTimeMorning}") ?
"LATE" :
"NORMAL",
@@ -856,7 +857,8 @@ namespace BMA.EHR.Leave.Service.Controllers
CheckOutLocation = d.CheckOut == null ? "" : d.CheckOutPOI,
CheckOutLat = d.CheckOut == null ? null : d.CheckOutLat,
CheckOutLon = d.CheckOut == null ? null : d.CheckOutLon,
- CheckOutStatus = d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
+ CheckOutStatus = d.CheckOutStatus != "" ? d.CheckOutStatus :
+ d.CheckOut == null ? null : DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
DateTime.Parse($"{d.CheckIn.Date.ToString("yyyy-MM-dd")} {duty.EndTimeAfternoon}") ?
"LATE" :
DateTime.Parse(d.CheckOut.Value.ToString("yyyy-MM-dd HH:mm")) <
diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs
index d183444d..55e01c67 100644
--- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs
+++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs
@@ -134,8 +134,6 @@ namespace BMA.EHR.Leave.Service.Controllers
else
leaveTotal = sumLeave - sumHoliday - sumWeekend;
-
-
var leaveRequest = new LeaveRequest
{
Type = leaveType,
@@ -297,6 +295,218 @@ namespace BMA.EHR.Leave.Service.Controllers
return Success(new { id = leaveRequest.Id });
}
+
+ ///
+ /// LV2_020 - แก้ไขคำขอการลา
+ ///
+ ///
+ ///
+ /// เมื่อทำรายการสำเร็จ
+ /// ไม่ได้ Login เข้าระบบ
+ /// เมื่อเกิดข้อผิดพลาดในการทำงาน
+ [HttpPut("user/{id:guid}")]
+ [ProducesResponseType(StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status401Unauthorized)]
+ [ProducesResponseType(StatusCodes.Status500InternalServerError)]
+ public async Task> EditLeaveRequestAsync(Guid id, [FromForm] CreateLeaveRequestDto req)
+ {
+ var oldData = await _leaveRequestRepository.GetByIdAsync(id);
+ if (oldData == null)
+ {
+ return Error(GlobalMessages.DataNotFound);
+ }
+
+
+
+ var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
+ var thisYear = DateTime.Now.Year;
+
+ var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId);
+
+ if (profile == null)
+ {
+ return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
+ }
+
+ var leaveType = await _leaveTypeRepository.GetByIdAsync(req.Type);
+ if (leaveType == null)
+ {
+ return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
+ }
+
+ var sumLeave = req.LeaveStartDate.DiffDay(req.LeaveEndDate);
+ var sumHoliday = await _holidayRepository.GetHolidayCountAsync(req.LeaveStartDate, req.LeaveEndDate);
+ var sumWeekend = _holidayRepository.GetWeekEndCount(req.LeaveStartDate, req.LeaveEndDate);
+
+ var leaveTotal = 0.0;
+ if (req.LeaveRange != "ALL")
+ leaveTotal = 0.5;
+ else
+ leaveTotal = sumLeave - sumHoliday - sumWeekend;
+
+ var leaveRequest = new LeaveRequest
+ {
+ Id = id,
+ Type = leaveType,
+ LeaveRange = req.LeaveRange,
+ LeaveStartDate = req.LeaveStartDate,
+ LeaveEndDate = req.LeaveEndDate,
+ LeaveWrote = req.LeaveWrote ?? "",
+ LeaveDetail = req.LeaveDetail ?? "",
+ LeaveAddress = req.LeaveAddress ?? "",
+ LeaveNumber = req.LeaveNumber ?? "",
+ //LeaveTotal = req.LeaveStartDate.DiffDay(req.LeaveEndDate),
+ LeaveTotal = leaveTotal,
+
+
+ LeaveSalaryText = req.LeaveSalaryText ?? "",
+ LeaveStatus = oldData.LeaveStatus,
+ KeycloakUserId = userId,
+ ApproveStep = oldData.ApproveStep
+ };
+
+ // get leave last
+ leaveRequest.LeaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type);
+
+ // upload document
+ if (req.LeaveDocument != null)
+ {
+ var doc = await _minIOService.UploadFileAsync(req.LeaveDocument);
+ if (doc != null)
+ {
+ leaveRequest.LeaveDocument = doc;
+ }
+ }
+
+ // upload draft document
+ if (req.LeaveDraftDocument != null)
+ {
+ var doc = await _minIOService.UploadFileAsync(req.LeaveDraftDocument);
+ if (doc != null)
+ {
+ leaveRequest.LeaveDraftDocument = doc;
+ }
+ }
+
+ // switch from leave type
+ switch (leaveType.Code.Trim().ToUpper())
+ {
+ case "LV-004":
+ {
+ leaveRequest.WifeDayName = req.WifeDayName ?? "";
+ leaveRequest.WifeDayDateBorn = req.WifeDayDateBorn ?? "";
+ }
+ break;
+ case "LV-005":
+ {
+ leaveRequest.RestDayOldTotal =
+ await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear - 1);
+ leaveRequest.RestDayCurrentTotal =
+ await _leaveRequestRepository.GetRestDayTotalByYearForUserAsync(userId, thisYear);
+ }
+ break;
+ case "LV-006":
+ {
+ leaveRequest.OrdainDayStatus = req.OrdainDayStatus ?? false;
+ leaveRequest.OrdainDayLocationName = req.OrdainDayLocationName ?? "";
+ leaveRequest.OrdainDayLocationAddress = req.OrdainDayLocationAddress ?? "";
+ leaveRequest.OrdainDayLocationNumber = req.OrdainDayLocationNumber ?? "";
+ if (req.OrdainDayOrdination != null)
+ leaveRequest.OrdainDayOrdination = req.OrdainDayOrdination.Value;
+
+ leaveRequest.OrdainDayBuddhistLentName = req.OrdainDayBuddhistLentName ?? "";
+
+ leaveRequest.OrdainDayBuddhistLentAddress = req.OrdainDayBuddhistLentAddress ?? "";
+
+ leaveRequest.LeaveBirthDate = profile.BirthDate;
+ leaveRequest.LeaveGovernmentDate = profile.DateStart;
+
+ leaveRequest.HajjDayStatus = req.HajjDayStatus ?? false;
+ }
+ break;
+ case "LV-007":
+ {
+ leaveRequest.AbsentDayLocation = req.AbsentDayLocation ?? "";
+ leaveRequest.AbsentDaySummon = req.AbsentDaySummon ?? "";
+ if (req.AbsentDayRegistorDate != null)
+ leaveRequest.AbsentDayRegistorDate = req.AbsentDayRegistorDate.Value;
+
+ leaveRequest.AbsentDayGetIn = req.AbsentDayGetIn ?? "";
+
+ leaveRequest.AbsentDayAt = req.AbsentDayAt ?? "";
+ }
+ break;
+ case "LV-008":
+ {
+ var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault();
+
+ leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
+ leaveRequest.LeaveSalaryText =
+ lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false);
+ leaveRequest.LeaveBirthDate = profile.BirthDate;
+ leaveRequest.LeaveGovernmentDate = profile.DateStart;
+
+ leaveRequest.StudyDaySubject = req.StudyDaySubject ?? "";
+ leaveRequest.StudyDayDegreeLevel = req.StudyDayDegreeLevel ?? "";
+ leaveRequest.StudyDayUniversityName = req.StudyDayUniversityName ?? "";
+ leaveRequest.StudyDayCountry = req.StudyDayCountry ?? "";
+ leaveRequest.StudyDayScholarship = req.StudyDayScholarship ?? "";
+
+ leaveRequest.StudyDayTrainingSubject = req.StudyDayTrainingSubject ?? "";
+ leaveRequest.StudyDayTrainingName = req.StudyDayTrainingName ?? "";
+ }
+ break;
+ case "LV-010":
+ {
+ var lastSalary = profile.Salaries.OrderByDescending(x => x.Order).FirstOrDefault();
+
+ leaveRequest.LeaveSalary = lastSalary == null ? 0 : (int)lastSalary.Amount.Value;
+ leaveRequest.LeaveSalaryText =
+ lastSalary == null ? "" : ((int)lastSalary.Amount.Value).ToThaiBahtText(false);
+
+ leaveRequest.CoupleDayName = req.CoupleDayName ?? "";
+ leaveRequest.CoupleDayPosition = req.CoupleDayPosition ?? "";
+ leaveRequest.CoupleDayLevel = req.CoupleDayLevel ?? "";
+ leaveRequest.CoupleDayLevelCountry = req.CoupleDayLevelCountry ?? "";
+ leaveRequest.CoupleDayCountryHistory = req.CoupleDayCountryHistory ?? "";
+ leaveRequest.CoupleDayTotalHistory = req.CoupleDayTotalHistory ?? "";
+
+ if (req.CoupleDayStartDateHistory != null)
+ leaveRequest.CoupleDayStartDateHistory = req.CoupleDayStartDateHistory.Value;
+
+ if (req.CoupleDayEndDateHistory != null)
+ leaveRequest.CoupleDayEndDateHistory = req.CoupleDayEndDateHistory.Value;
+
+ leaveRequest.CoupleDaySumTotalHistory = req.CoupleDaySumTotalHistory ?? "";
+ }
+ break;
+ }
+
+ // add dear and oc_data
+ var rootOc = _userProfileRepository.GetRootOcId(profile.OcId ?? Guid.Empty);
+ var approver = string.Empty;
+ if (rootOc != null)
+ {
+ var list = await _commandRepository.GetOrgApproverAsync(rootOc ?? Guid.Empty);
+ if (list.Count > 0)
+ approver = list.First().Name;
+ }
+
+ leaveRequest.LeaveTypeCode = leaveType.Code;
+ leaveRequest.Dear = approver;
+ leaveRequest.PositionName = profile.Position == null ? "" : profile.Position.Name;
+ leaveRequest.PositionLevelName = profile.PositionLevel == null ? "" : profile.PositionLevel.Name;
+ leaveRequest.OrganizationName = profile.Oc ?? "";
+
+ // delet old
+ await _leaveRequestRepository.DeleteAsync(oldData);
+
+ // save to database
+ await _leaveRequestRepository.AddAsync(leaveRequest);
+
+ return Success(new { id = leaveRequest.Id });
+ }
+
///
/// LV2_002 - ข้อมูลที่ user ขอยื่นลา (USER)
///