From f2a0d1ca865c6ef88b45a68ef591be388c46fac4 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 22 Jan 2024 13:10:29 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84=E0=B8=82?= =?UTF-8?q?=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B9=80=E0=B8=8A=E0=B9=87=E0=B8=84?= =?UTF-8?q?=20duplicate=20=E0=B8=81=E0=B8=A3=E0=B8=93=E0=B8=B5=E0=B8=A5?= =?UTF-8?q?=E0=B8=B2=E0=B8=84=E0=B8=A3=E0=B8=B6=E0=B9=88=E0=B8=87=E0=B8=A7?= =?UTF-8?q?=E0=B8=B1=E0=B8=99=20=E0=B9=83=E0=B8=AB=E0=B9=89=E0=B8=95?= =?UTF-8?q?=E0=B8=A3=E0=B8=A7=E0=B8=88=E0=B8=AA=E0=B8=AD=E0=B8=9A=E0=B8=A7?= =?UTF-8?q?=E0=B9=88=E0=B8=B2=E0=B8=A1=E0=B8=B5=E0=B8=81=E0=B8=B2=E0=B8=A3?= =?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=E0=B8=8B=E0=B9=89=E0=B8=B3=E0=B8=81?= =?UTF-8?q?=E0=B8=B1=E0=B8=99=E0=B8=AB=E0=B8=A3=E0=B8=B7=E0=B8=AD=E0=B9=84?= =?UTF-8?q?=E0=B8=A1=E0=B9=88=20=E0=B8=96=E0=B9=89=E0=B8=B2=E0=B8=81?= =?UTF-8?q?=E0=B8=A3=E0=B8=93=E0=B8=B5=E0=B8=A5=E0=B8=B2=E0=B9=80=E0=B8=95?= =?UTF-8?q?=E0=B9=87=E0=B8=A1=E0=B8=A7=E0=B8=B1=E0=B8=99=20=E0=B9=80?= =?UTF-8?q?=E0=B8=8A=E0=B9=87=E0=B8=84=E0=B8=97=E0=B8=B8=E0=B8=81=E0=B8=81?= =?UTF-8?q?=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 }