diff --git a/BMA.EHR.Domain/Extensions/DateTimeExtension.cs b/BMA.EHR.Domain/Extensions/DateTimeExtension.cs index 18f03079..27ebc5a8 100644 --- a/BMA.EHR.Domain/Extensions/DateTimeExtension.cs +++ b/BMA.EHR.Domain/Extensions/DateTimeExtension.cs @@ -408,6 +408,22 @@ namespace BMA.EHR.Domain.Extensions public int days { get; set; } } + // แปลงจาก DayOfWeek เป็นภาษาไทย + public static string GetThaiDayOfWeek(this DateTime date) + { + return date.DayOfWeek switch + { + DayOfWeek.Sunday => "อาทิตย์", + DayOfWeek.Monday => "จันทร์", + DayOfWeek.Tuesday => "อังคาร", + DayOfWeek.Wednesday => "พุธ", + DayOfWeek.Thursday => "พฤหัสบดี", + DayOfWeek.Friday => "ศุกร์", + DayOfWeek.Saturday => "เสาร์", + _ => "ไม่ทราบ" + }; + } + #endregion #endregion diff --git a/BMA.EHR.Leave/Controllers/LeaveReportController.cs b/BMA.EHR.Leave/Controllers/LeaveReportController.cs index 0fa71312..33198b05 100644 --- a/BMA.EHR.Leave/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveReportController.cs @@ -71,6 +71,12 @@ namespace BMA.EHR.Leave.Service.Controllers _httpContextAccessor = httpContextAccessor; _permission = permission; } + private class LoopDate + { + public DateTime date { get; set; } + + public bool isHoliday { get; set; } + } #endregion @@ -1150,12 +1156,25 @@ namespace BMA.EHR.Leave.Service.Controllers var weekend = _holidayRepository.GetWeekEnd(req.StartDate.Date, req.EndDate.Date); var excludeDates = holidays.Union(weekend).ToList(); - var dateList = new List(); - + var dateList = new List(); for (DateTime i = req.StartDate.Date; i <= req.EndDate.Date; i = i.AddDays(1)) { - // if (!excludeDates.Contains(i)) - dateList.Add(i); + if (!excludeDates.Contains(i)) + { + dateList.Add(new LoopDate + { + date = i, + isHoliday = true, + }); + } + else + { + dateList.Add(new LoopDate + { + date = i, + isHoliday = true, + }); + } } var employees = new List(); @@ -1174,7 +1193,7 @@ namespace BMA.EHR.Leave.Service.Controllers { var keycloakUserId = p.Keycloak ?? Guid.Empty; - var timeStamps = await _processUserTimeStampRepository.GetTimestampByDateAsync(keycloakUserId, dd); + var timeStamps = await _processUserTimeStampRepository.GetTimestampByDateAsync(keycloakUserId, dd.date); var fullName = $"{p.Prefix}{p.FirstName} {p.LastName}"; // _userProfileRepository.GetUserFullName(keycloakUserId, AccessToken); @@ -1191,7 +1210,7 @@ namespace BMA.EHR.Leave.Service.Controllers var duty = userRound ?? defaultRound; // check วันลาของแต่ละคน - var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(keycloakUserId, dd); + var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(keycloakUserId, dd.date); var remarkStr = string.Empty; if (leaveReq != null) @@ -1217,8 +1236,14 @@ namespace BMA.EHR.Leave.Service.Controllers { if (timeStamps == null) { - if (dd <= DateTime.Now.Date) + if (dd.date <= DateTime.Now.Date) + { remarkStr = "ขาดราชการ"; + if (dd.isHoliday == true) + { + remarkStr = "วันหยุด"; + } + } else remarkStr = ""; } else @@ -1266,10 +1291,11 @@ namespace BMA.EHR.Leave.Service.Controllers $"{timeStamps.CheckOut.Value.ToString("HH:mm")} น." : "", remark = remarkStr, - checkInDate = timeStamps == null ? dd.Date.ToThaiFullDate2().ToThaiNumber() : timeStamps.CheckIn.Date.ToThaiFullDate2().ToThaiNumber(), - checkedOutDate = timeStamps == null ? dd.Date.ToThaiFullDate2().ToThaiNumber() : + date = timeStamps == null ? dd.date.Date : timeStamps.CheckIn.Date, + checkInDate = timeStamps == null ? dd.date.Date.ToThaiFullDate2() : timeStamps.CheckIn.Date.ToThaiFullDate2(), + checkedOutDate = timeStamps == null ? dd.date.Date.ToThaiFullDate2() : timeStamps.CheckOut != null ? - timeStamps.CheckOut.Value.ToThaiFullDate2().ToThaiNumber() : + timeStamps.CheckOut.Value.ToThaiFullDate2() : "", }; @@ -1307,10 +1333,10 @@ namespace BMA.EHR.Leave.Service.Controllers } } - var enddate = req.EndDate.Date == req.StartDate.Date ? "" : $" - {req.EndDate.Date.ToThaiShortDate().ToThaiNumber()}"; + var enddate = req.EndDate.Date == req.StartDate.Date ? "" : $" - {req.EndDate.Date.ToThaiShortDate()}"; var item = new { - dateTimeStamp = $"ณ วันที่ {req.StartDate.Date.ToThaiShortDate().ToThaiNumber()}{enddate}", + dateTimeStamp = $"ณ วัน{req.StartDate.Date.GetThaiDayOfWeek()} ที่ {req.StartDate.Date.ToThaiShortDate()}{enddate}", organizationName = profile?.FirstOrDefault()?.Oc ?? "", officerTotal = profile.Count, workTotal = workTotal, @@ -1320,9 +1346,9 @@ namespace BMA.EHR.Leave.Service.Controllers wfhTotal = wfhTotal, seminarTotal = seminarTotal, studyTotal = studyTotal, - employees = employees + employees = employees.OrderBy(x => x.date).ToList() }; - + //วันที่ออก var result = new { template = "TimeStamp",