From 34da86653fe16864c3cca759cfe47b82f8358af7 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 22 Jan 2024 12:09:36 +0700 Subject: [PATCH 1/4] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B8=A3?= =?UTF-8?q?=E0=B8=B2=E0=B8=A2=E0=B8=87=E0=B8=B2=E0=B8=99=E0=B8=81=E0=B8=B2?= =?UTF-8?q?=E0=B8=A3=E0=B9=81=E0=B8=AA=E0=B8=94=E0=B8=87=E0=B8=A7=E0=B8=B1?= =?UTF-8?q?=E0=B8=99=E0=B8=A5=E0=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LeaveRequests/LeaveRequestRepository.cs | 11 + .../Controllers/LeaveReportController.cs | 203 ++++++++++++++---- .../Controllers/LeaveRequestController.cs | 57 ++++- .../DTOs/Reports/GetLeaveDetailReportDto.cs | 2 +- 4 files changed, 224 insertions(+), 49 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index e79e309f..9cca6fc0 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -602,6 +602,17 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests } } + public async Task GetLeavePeriodAsync(Guid keycloakUserId, DateTime date) + { + var data = await _dbContext.Set().AsQueryable() + .Include(x => x.Type) + .Where(x => x.KeycloakUserId == keycloakUserId) + .Where(x => x.LeaveStatus == "APPROVE") + .Where(x => x.LeaveStartDate.Date >= date.Date && x.LeaveEndDate <= date.Date) + .FirstOrDefaultAsync(); + return data; + } + #endregion } } diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs index 78d7f7c9..5f910816 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs @@ -3,6 +3,7 @@ using BMA.EHR.Application.Repositories; using BMA.EHR.Application.Repositories.Commands; using BMA.EHR.Application.Repositories.Leaves.LeaveRequests; using BMA.EHR.Application.Repositories.Leaves.TimeAttendants; +using BMA.EHR.Application.Repositories.MetaData; using BMA.EHR.Domain.Common; using BMA.EHR.Domain.Extensions; using BMA.EHR.Domain.Models.Leave.Requests; @@ -12,6 +13,7 @@ using BMA.EHR.Infrastructure.Persistence; using BMA.EHR.Leave.Service.DTOs.Reports; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Org.BouncyCastle.Utilities; using Swashbuckle.AspNetCore.Annotations; namespace BMA.EHR.Leave.Service.Controllers @@ -32,6 +34,8 @@ namespace BMA.EHR.Leave.Service.Controllers private readonly ProcessUserTimeStampRepository _processUserTimeStampRepository; private readonly DutyTimeRepository _dutyTimeRepository; private readonly UserDutyTimeRepository _userDutyTimeRepository; + private readonly HolidayRepository _holidayRepository; + private readonly UserCalendarRepository _userCalendarRepository; #endregion @@ -43,7 +47,9 @@ namespace BMA.EHR.Leave.Service.Controllers LeaveTypeRepository leaveTypeRepository, ProcessUserTimeStampRepository processUserTimeStampRepository, DutyTimeRepository dutyTimeRepository, - UserDutyTimeRepository userDutyTimeRepository) + UserDutyTimeRepository userDutyTimeRepository, + HolidayRepository holidayRepository, + UserCalendarRepository userCalendarRepository) { _leaveRequestRepository = leaveRequestRepository; _userProfileRepository = userProfileRepository; @@ -52,6 +58,8 @@ namespace BMA.EHR.Leave.Service.Controllers _processUserTimeStampRepository = processUserTimeStampRepository; _dutyTimeRepository = dutyTimeRepository; _userDutyTimeRepository = userDutyTimeRepository; + _holidayRepository = holidayRepository; + _userCalendarRepository = userCalendarRepository; } #endregion @@ -1096,54 +1104,155 @@ namespace BMA.EHR.Leave.Service.Controllers var profile = await _userProfileRepository.GetProfileWithKeycloak(); var date = req.StartDate.Date; + var holidays = await _holidayRepository.GetHolidayAsync(req.StartDate.Date, req.EndDate.Date); + var weekend = _holidayRepository.GetWeekEnd(req.StartDate.Date, req.EndDate.Date); + var excludeDates = holidays.Union(weekend).ToList(); + + 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); + } + var employees = new List(); var count = 1; + + var restTotal = 0; + var sickTotal = 0; + var lateTotal = 0; + var wfhTotal = 0; + var studyTotal = 0; + + + foreach (var p in profile) { - var timeStamps = await _processUserTimeStampRepository.GetTimestampByDateAsync(p.KeycloakId ?? Guid.Empty, date); - - var fullName = _userProfileRepository.GetUserFullName(p.KeycloakId ?? Guid.Empty); - - - var defaultRound = await _dutyTimeRepository.GetDefaultAsync(); - if (defaultRound == null) + foreach (var dd in dateList) { - return Error("ไม่พบรอบการลงเวลา Default", StatusCodes.Status404NotFound); + var keycloakUserId = p.KeycloakId ?? Guid.Empty; + + var timeStamps = await _processUserTimeStampRepository.GetTimestampByDateAsync(keycloakUserId, dd); + + var fullName = _userProfileRepository.GetUserFullName(keycloakUserId); + + + var defaultRound = await _dutyTimeRepository.GetDefaultAsync(); + if (defaultRound == null) + { + return Error("ไม่พบรอบการลงเวลา Default", StatusCodes.Status404NotFound); + } + + //var userRound = await _dutyTimeRepository.GetByIdAsync(profile.DutyTimeId ?? Guid.Empty); + var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id); + var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; + var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); + + var duty = userRound ?? defaultRound; + + // check วันลาของแต่ละคน + var leaveReq = await _leaveRequestRepository.GetLeavePeriodAsync(keycloakUserId, dd); + var remarkStr = string.Empty; + + if (leaveReq != null) + { + switch (leaveReq.Type.Code.ToUpper()) + { + case "LV-001": + case "LV-002": + case "LV-005": + remarkStr += leaveReq.Type.Name; + var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper(); + if (leaveRange == "MORNING") + remarkStr += "ครึ่งวันเช้า"; + else if (leaveRange == "AFTERNOON") + remarkStr += "ครึ่งวันบ่าย"; + break; + default: + remarkStr += leaveReq.Type.Name; + break; + } + } + else + { + if (timeStamps == null) + { + remarkStr = "ขาดราชการ"; + } + else + { + // check status ของการลงเวลา + if (timeStamps.CheckOutStatus == "ABSENT") + remarkStr = "ขาดราชการ"; + else if (timeStamps.CheckInStatus == "ABSENT") + remarkStr = "ขาดราชการ"; + else if (timeStamps.CheckInStatus == "LATE") + { + remarkStr = "สาย"; + lateTotal += 1; + } + else + remarkStr = ""; + } + } + + var emp = new + { + no = count, + fullName = fullName, + dutyTimeName = $"{duty.StartTimeMorning} - {duty.EndTimeAfternoon} น.", + checkInLocation = timeStamps == null ? "" : timeStamps.CheckInPOI, + checkInTime = timeStamps == null ? "" : $"{timeStamps.CheckIn.ToString("HH:mm")} น.", + + checkOutLocation = timeStamps == null ? "" : timeStamps.CheckOutPOI ?? "", + checkOutTime = timeStamps == null ? "" : + timeStamps.CheckOut != null ? + $"{timeStamps.CheckOut.Value.ToString("HH:mm")} น." : + "", + + //remark = timeStamps == null ? "ขาดราชการ" : "", + remark = remarkStr, + + checkInDate = timeStamps == null ? "" : timeStamps.CheckIn.Date.ToThaiFullDate2().ToThaiNumber(), + checkedOutDate = timeStamps == null ? "" : + timeStamps.CheckOut != null ? + timeStamps.CheckOut.Value.ToThaiFullDate2().ToThaiNumber() : + "", + }; + + if (timeStamps != null) + { + if (timeStamps.IsLocationCheckIn) + wfhTotal += 1; + else + { + if (leaveReq != null) + { + switch (leaveReq.Type.Code.ToUpper()) + { + case "LV-001": + case "LV-002": + sickTotal += 1; + break; + case "LV-005": + restTotal += 1; + break; + case "LV-008": + studyTotal += 1; + break; + } + + } + } + } + + + employees.Add(emp); + count++; + } - //var userRound = await _dutyTimeRepository.GetByIdAsync(profile.DutyTimeId ?? Guid.Empty); - var effectiveDate = await _userDutyTimeRepository.GetLastEffectRound(p.Id); - var roundId = effectiveDate != null ? effectiveDate.DutyTimeId : Guid.Empty; - var userRound = await _dutyTimeRepository.GetByIdAsync(roundId); - - var duty = userRound ?? defaultRound; - - var emp = new - { - no = count, - fullName = fullName, - dutyTimeName = $"{duty.StartTimeMorning} - {duty.EndTimeAfternoon} น.", - checkInLocation = timeStamps == null ? "" : timeStamps.CheckInPOI, - checkInTime = timeStamps == null ? "" : $"{timeStamps.CheckIn.ToString("HH:mm")} น.", - - checkOutLocation = timeStamps == null ? "" : timeStamps.CheckOutPOI ?? "", - checkOutTime = timeStamps == null ? "" : - timeStamps.CheckOut != null ? - $"{timeStamps.CheckOut.Value.ToString("HH:mm")} น." : - "", - - remark = timeStamps == null ? "ขาดราชการ" : "", - - checkInDate = timeStamps == null ? "" : timeStamps.CheckIn.Date.ToThaiFullDate2().ToThaiNumber(), - checkedOutDate = timeStamps == null ? "" : - timeStamps.CheckOut != null ? - timeStamps.CheckOut.Value.ToThaiFullDate2().ToThaiNumber() : - "", - }; - - employees.Add(emp); - count++; - } var item = new @@ -1151,11 +1260,11 @@ namespace BMA.EHR.Leave.Service.Controllers DateTimeStamp = date.Date.ToThaiFullDate(), officerTotal = profile.Count, workTotal = (count - 1), - restTotal = 0, - sickTotal = 0, - lateTotal = 0, - wfhTotal = 0, - studyTotal = 0, + restTotal = restTotal, + sickTotal = sickTotal, + lateTotal = lateTotal, + wfhTotal = wfhTotal, + studyTotal = studyTotal, employees = employees }; diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 1b1ec9b6..4183f590 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -707,7 +707,62 @@ namespace BMA.EHR.Leave.Service.Controllers isLeave = govAge >= 365; break; case "LV-010": - var maxEnd = new DateTime(req.StartLeaveDate.Year + 2, req.StartLeaveDate.Month, req.StartLeaveDate.Day - 1); + int yy, mm, dd; + yy = req.StartLeaveDate.Year + 2; + if (req.StartLeaveDate.Day == 1) + { + if (req.StartLeaveDate.Month == 1) + { + mm = 12; + dd = 31; + } + else + { + mm = req.StartLeaveDate.Month - 1; + switch (mm) + { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + { + dd = 31; + break; + } + case 2: + { + if (DateTime.IsLeapYear(yy)) + { + dd = 29; + } + else + dd = 28; + break; + } + case 4: + case 6: + case 9: + case 11: + { + dd = 30; + break; + } + default: + dd = 1; + break; + } + } + } + else + { + mm = req.StartLeaveDate.Month; + dd = req.StartLeaveDate.Day - 1; + } + + var maxEnd = new DateTime(yy, mm, dd); isLeave = req.EndLeaveDate.Date <= maxEnd; break; case "LV-011": diff --git a/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs b/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs index 08c67851..4a12851a 100644 --- a/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs @@ -4,7 +4,7 @@ namespace BMA.EHR.Leave.Service.DTOs.Reports { public DateTime StartDate { get; set; } = DateTime.MinValue; - //public DateTime EndDate { get; set; } = DateTime.MinValue; + public DateTime EndDate { get; set; } = DateTime.MinValue; } } \ No newline at end of file From 47c1f7dac061e2b3e3456920ea5ff9b635939fcc Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 22 Jan 2024 13:00:45 +0700 Subject: [PATCH 2/4] =?UTF-8?q?fix=20=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88?= =?UTF-8?q?=E0=B8=A1=E0=B9=80=E0=B8=95=E0=B8=B4=E0=B8=A1=E0=B8=A3=E0=B8=B2?= =?UTF-8?q?=E0=B8=A2=E0=B8=87=E0=B8=B2=E0=B8=99=E0=B9=81=E0=B8=AA=E0=B8=94?= =?UTF-8?q?=E0=B8=87=E0=B8=A7=E0=B8=B1=E0=B8=99=E0=B8=A5=E0=B8=87=E0=B9=80?= =?UTF-8?q?=E0=B8=A7=E0=B8=A5=E0=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/LeaveReportController.cs | 60 +++++++++++++++---- .../DTOs/Reports/GetLeaveDetailReportDto.cs | 1 + 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs index 5f910816..64ff7344 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs @@ -1,3 +1,5 @@ +using System.Data.Common; +using System.Globalization; using System.IO.Pipelines; using BMA.EHR.Application.Repositories; using BMA.EHR.Application.Repositories.Commands; @@ -27,6 +29,8 @@ namespace BMA.EHR.Leave.Service.Controllers public class LeaveReportController : BaseController { #region " Fields " + + private static CultureInfo _culture = new CultureInfo("th-TH"); private readonly LeaveRequestRepository _leaveRequestRepository; private readonly UserProfileRepository _userProfileRepository; private readonly CommandRepository _commandRepository; @@ -1178,22 +1182,40 @@ namespace BMA.EHR.Leave.Service.Controllers { if (timeStamps == null) { - remarkStr = "ขาดราชการ"; + if (dd <= DateTime.Now.Date) + remarkStr = "ขาดราชการ"; + else remarkStr = ""; } else { // check status ของการลงเวลา - if (timeStamps.CheckOutStatus == "ABSENT") - remarkStr = "ขาดราชการ"; - else if (timeStamps.CheckInStatus == "ABSENT") - remarkStr = "ขาดราชการ"; - else if (timeStamps.CheckInStatus == "LATE") + if (timeStamps.CheckOut != null) { - remarkStr = "สาย"; - lateTotal += 1; + if (timeStamps.CheckOutStatus == "ABSENT") + remarkStr = "ขาดราชการ"; + else if (timeStamps.CheckInStatus == "ABSENT") + remarkStr = "ขาดราชการ"; + else if (timeStamps.CheckInStatus == "LATE") + { + remarkStr = "สาย"; + lateTotal += 1; + } + else + remarkStr = ""; } else - remarkStr = ""; + { + if (timeStamps.CheckInStatus == "ABSENT") + remarkStr = "ขาดราชการ"; + else if (timeStamps.CheckInStatus == "LATE") + { + remarkStr = "สาย"; + lateTotal += 1; + } + else + remarkStr = ""; + } + } } @@ -1214,8 +1236,8 @@ namespace BMA.EHR.Leave.Service.Controllers //remark = timeStamps == null ? "ขาดราชการ" : "", remark = remarkStr, - checkInDate = timeStamps == null ? "" : timeStamps.CheckIn.Date.ToThaiFullDate2().ToThaiNumber(), - checkedOutDate = timeStamps == null ? "" : + checkInDate = timeStamps == null ? dd.Date.ToThaiFullDate2().ToThaiNumber() : timeStamps.CheckIn.Date.ToThaiFullDate2().ToThaiNumber(), + checkedOutDate = timeStamps == null ? dd.Date.ToThaiFullDate2().ToThaiNumber() : timeStamps.CheckOut != null ? timeStamps.CheckOut.Value.ToThaiFullDate2().ToThaiNumber() : "", @@ -1255,9 +1277,23 @@ namespace BMA.EHR.Leave.Service.Controllers } + var dateStamp = ""; + switch (req.Type.ToUpper()) + { + case "MONTH": + { + var dd = req.StartDate.Date; + dateStamp = $"เดือน {dd.ToString("MMMM", _culture.DateTimeFormat)} พ.ศ. {dd.Year.ToThaiYear()}".ToThaiNumber(); + break; + } + default: + dateStamp = req.StartDate.Date.ToThaiFullDate().ToThaiNumber(); + break; + } + var item = new { - DateTimeStamp = date.Date.ToThaiFullDate(), + DateTimeStamp = dateStamp, officerTotal = profile.Count, workTotal = (count - 1), restTotal = restTotal, diff --git a/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs b/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs index 4a12851a..bc18bb5b 100644 --- a/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs +++ b/BMA.EHR.Leave.Service/DTOs/Reports/GetLeaveDetailReportDto.cs @@ -6,5 +6,6 @@ namespace BMA.EHR.Leave.Service.DTOs.Reports public DateTime EndDate { get; set; } = DateTime.MinValue; + public string Type { get; set; } = string.Empty; } } \ No newline at end of file From f2a0d1ca865c6ef88b45a68ef591be388c46fac4 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 22 Jan 2024 13:10:29 +0700 Subject: [PATCH 3/4] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84?= =?UTF-8?q?=E0=B8=82=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B9=80=E0=B8=8A=E0=B9=87?= =?UTF-8?q?=E0=B8=84=20duplicate=20=E0=B8=81=E0=B8=A3=E0=B8=93=E0=B8=B5?= =?UTF-8?q?=E0=B8=A5=E0=B8=B2=E0=B8=84=E0=B8=A3=E0=B8=B6=E0=B9=88=E0=B8=87?= =?UTF-8?q?=E0=B8=A7=E0=B8=B1=E0=B8=99=20=E0=B9=83=E0=B8=AB=E0=B9=89?= =?UTF-8?q?=E0=B8=95=E0=B8=A3=E0=B8=A7=E0=B8=88=E0=B8=AA=E0=B8=AD=E0=B8=9A?= =?UTF-8?q?=E0=B8=A7=E0=B9=88=E0=B8=B2=E0=B8=A1=E0=B8=B5=E0=B8=81=E0=B8=B2?= =?UTF-8?q?=E0=B8=A3=E0=B8=A5=E0=B8=B2=E0=B8=84=E0=B8=A3=E0=B8=B6=E0=B9=88?= =?UTF-8?q?=E0=B8=87=E0=B8=A7=E0=B8=B1=E0=B8=99=E0=B8=8B=E0=B9=89=E0=B8=B3?= =?UTF-8?q?=E0=B8=81=E0=B8=B1=E0=B8=99=E0=B8=AB=E0=B8=A3=E0=B8=B7=E0=B8=AD?= =?UTF-8?q?=E0=B9=84=E0=B8=A1=E0=B9=88=20=E0=B8=96=E0=B9=89=E0=B8=B2?= =?UTF-8?q?=E0=B8=81=E0=B8=A3=E0=B8=93=E0=B8=B5=E0=B8=A5=E0=B8=B2=E0=B9=80?= =?UTF-8?q?=E0=B8=95=E0=B9=87=E0=B8=A1=E0=B8=A7=E0=B8=B1=E0=B8=99=20?= =?UTF-8?q?=E0=B9=80=E0=B8=8A=E0=B9=87=E0=B8=84=E0=B8=97=E0=B8=B8=E0=B8=81?= =?UTF-8?q?=E0=B8=81=E0=B8=A3=E0=B8=93=E0=B8=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LeaveRequests/LeaveRequestRepository.cs | 35 ++++++++++++++----- .../Controllers/LeaveRequestController.cs | 16 ++++----- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index 9cca6fc0..938e0c1e 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -344,7 +344,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests throw new Exception(GlobalMessages.DataNotFound); } - var isDuplicate = await CheckDuplicateLeave(rawData.KeycloakUserId, rawData.LeaveStartDate.Date, rawData.LeaveEndDate.Date); + var isDuplicate = await CheckDuplicateLeave(rawData.KeycloakUserId, rawData.LeaveStartDate.Date, rawData.LeaveEndDate.Date, rawData.LeaveRange ?? "ALL"); if (isDuplicate) { throw new Exception("ไม่สามารถขอลาในช่วงเวลาเดียวกันได้ เนื่องจากมีการขอลาในช่วงเวลาดังกล่าวแล้ว"); @@ -577,17 +577,34 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests return 0; } - public async Task CheckDuplicateLeave(Guid keycloakUserId, DateTime startDate, DateTime endDate) + public async Task CheckDuplicateLeave(Guid keycloakUserId, DateTime startDate, DateTime endDate, string range) { var leaveStatus = new List() { "NEW", "PENDING", "APPROVE" }; - var data = await _dbContext.Set().AsQueryable() - .Include(x => x.Type) - .Where(x => x.KeycloakUserId == keycloakUserId) - .Where(x => x.LeaveStartDate.Date == startDate.Date || x.LeaveEndDate.Date == endDate.Date) - .Where(x => leaveStatus.Contains(x.LeaveStatus)) - .ToListAsync(); + if (range == "ALL") + { + var data = await _dbContext.Set().AsQueryable() + .Include(x => x.Type) + //.Where(x => x.LeaveRange == "ALL") + .Where(x => x.KeycloakUserId == keycloakUserId) + .Where(x => x.LeaveStartDate.Date == startDate.Date || x.LeaveEndDate.Date == endDate.Date) + .Where(x => leaveStatus.Contains(x.LeaveStatus)) + .ToListAsync(); + + return data.Count > 0; + } + else + { + var data = await _dbContext.Set().AsQueryable() + .Include(x => x.Type) + .Where(x => x.LeaveRange == range) + .Where(x => x.KeycloakUserId == keycloakUserId) + .Where(x => x.LeaveStartDate.Date == startDate.Date || x.LeaveEndDate.Date == endDate.Date) + .Where(x => leaveStatus.Contains(x.LeaveStatus)) + .ToListAsync(); + + return data.Count > 0; + } - return data.Count > 0; } public async Task DeleteLeaveDocumentAsync(Guid Id) diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 4183f590..ad46b175 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -1617,15 +1617,15 @@ namespace BMA.EHR.Leave.Service.Controllers } - [HttpGet("holiday/test")] - public async Task> GetHolidayTestAsync() - { - var start = new DateTime(2024, 1, 1); - var end = new DateTime(2024, 1, 3); - var count = await _holidayRepository.GetHolidayCountAsync(start, end); + // [HttpGet("holiday/test")] + // public async Task> GetHolidayTestAsync() + // { + // var start = new DateTime(2024, 1, 1); + // var end = new DateTime(2024, 1, 3); + // var count = await _holidayRepository.GetHolidayCountAsync(start, end); - return Success(new { holiday = count }); - } + // return Success(new { holiday = count }); + // } #endregion } From 9de3ad7ca07dcc3dcf80cc79d90c7c048b243c22 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 22 Jan 2024 14:18:29 +0700 Subject: [PATCH 4/4] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84?= =?UTF-8?q?=E0=B8=82=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B9=80=E0=B8=A3=E0=B8=B5?= =?UTF-8?q?=E0=B8=A2=E0=B8=87=20=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=87?= =?UTF-8?q?=E0=B8=B2=E0=B8=99=E0=B9=81=E0=B8=AA=E0=B8=94=E0=B8=87=E0=B9=80?= =?UTF-8?q?=E0=B8=A7=E0=B8=A5=E0=B8=B2=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=A7?= =?UTF-8?q?=E0=B8=B1=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs index 64ff7344..52deacd1 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveReportController.cs @@ -1130,11 +1130,11 @@ namespace BMA.EHR.Leave.Service.Controllers var studyTotal = 0; - - foreach (var p in profile) + foreach (var dd in dateList) { - foreach (var dd in dateList) + foreach (var p in profile) { + var keycloakUserId = p.KeycloakId ?? Guid.Empty; var timeStamps = await _processUserTimeStampRepository.GetTimestampByDateAsync(keycloakUserId, dd);