From 305d2d9dc5b267cd9a24e5a6850fc8cad3ae2e94 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Thu, 11 Jan 2024 10:13:56 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=20defet=20=E0=B8=A5?= =?UTF-8?q?=E0=B8=87=E0=B9=80=E0=B8=A7=E0=B8=A5=E0=B8=B2=E0=B9=80=E0=B8=82?= =?UTF-8?q?=E0=B9=89=E0=B8=B2-=E0=B8=AD=E0=B8=AD=E0=B8=81=E0=B8=9B?= =?UTF-8?q?=E0=B8=8F=E0=B8=B4=E0=B8=9A=E0=B8=B1=E0=B8=95=E0=B8=B4=E0=B8=87?= =?UTF-8?q?=E0=B8=B2=E0=B8=99=20(=E0=B9=80=E0=B8=8A=E0=B9=87=E0=B8=84?= =?UTF-8?q?=E0=B9=80=E0=B8=AD=E0=B9=89=E0=B8=B2=E0=B8=97=E0=B9=8C=E0=B8=AD?= =?UTF-8?q?=E0=B8=AD=E0=B8=81=E0=B8=87=E0=B8=B2=E0=B8=99=E0=B9=84=E0=B8=A1?= =?UTF-8?q?=E0=B9=88=E0=B9=84=E0=B8=94=E0=B9=89)#220=20=E0=B8=81=E0=B8=B2?= =?UTF-8?q?=E0=B8=A3=E0=B8=A5=E0=B8=B2=20>>=20=E0=B8=9B=E0=B8=A3=E0=B8=B0?= =?UTF-8?q?=E0=B9=80=E0=B8=A0=E0=B8=97=E0=B8=A5=E0=B8=B2=20=E0=B8=A5?= =?UTF-8?q?=E0=B8=B2=E0=B8=9E=E0=B8=B1=E0=B8=81=E0=B8=9C=E0=B9=88=E0=B8=AD?= =?UTF-8?q?=E0=B8=99=20(=E0=B8=A5=E0=B8=B2=E0=B8=8B=E0=B9=89=E0=B8=B3)#361?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LeaveRequests/LeaveRequestRepository.cs | 12 ++++++++++++ .../Controllers/LeaveController.cs | 7 ++++++- .../Controllers/LeaveRequestController.cs | 15 +++++++++++++-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index 586f9a84..ac1df068 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -563,6 +563,18 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests return 0; } + public async Task CheckDuplicateLeave(Guid keycloakUserId, DateTime startDate, DateTime endDate) + { + 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 => x.LeaveStatus == "DELETE" && x.LeaveStatus == "REJECT") + .ToListAsync(); + + return data.Count > 0; + } + #endregion } } diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs index 3d814cf4..106d0aed 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveController.cs @@ -423,7 +423,7 @@ namespace BMA.EHR.Leave.Service.Controllers await _minIOService.UploadFileAsync(fileName, ms); } - var currentCheckInProcess = await _processUserTimeStampRepository.GetTimestampByDateAsync(Guid.Parse(UserId), currentDate); + var defaultRound = await _dutyTimeRepository.GetDefaultAsync(); if (defaultRound == null) @@ -490,7 +490,12 @@ namespace BMA.EHR.Leave.Service.Controllers } else { + + var checkout = await _userTimeStampRepository.GetByIdAsync(data.CheckInId.Value); + + var currentCheckInProcess = await _processUserTimeStampRepository.GetTimestampByDateAsync(Guid.Parse(UserId), checkout.CheckIn.Date); + var checkout_process = await _processUserTimeStampRepository.GetByIdAsync(currentCheckInProcess.Id); diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs index 0e3f4766..57268348 100644 --- a/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave.Service/Controllers/LeaveRequestController.cs @@ -114,6 +114,13 @@ namespace BMA.EHR.Leave.Service.Controllers public async Task> CreateLeaveRequestAsync([FromForm] CreateLeaveRequestDto req) { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); + + var isDuplicate = await _leaveRequestRepository.CheckDuplicateLeave(userId, req.LeaveStartDate.Date, req.LeaveEndDate.Date); + if (isDuplicate) + { + return Error("ไม่สามารถขอลาในช่วงเวลาเดียวกันได้"); + } + var thisYear = DateTime.Now.Year; var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId); @@ -327,11 +334,15 @@ namespace BMA.EHR.Leave.Service.Controllers return Error(GlobalMessages.DataNotFound); } - - var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); var thisYear = DateTime.Now.Year; + var isDuplicate = await _leaveRequestRepository.CheckDuplicateLeave(userId, req.LeaveStartDate.Date, req.LeaveEndDate.Date); + if (isDuplicate) + { + return Error("ไม่สามารถขอลาในช่วงเวลาเดียวกันได้"); + } + var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId); if (profile == null)