From 3c1182ff2651b025e0947a6914f14bdb8d7e06ca Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Thu, 24 Oct 2024 20:56:19 +0700 Subject: [PATCH] fix Leave Issue --- .../Leaves/LeaveRequests/LeaveRequestRepository.cs | 13 +++++++++++++ BMA.EHR.Leave/Controllers/LeaveRequestController.cs | 6 ++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index d253bc61..be1618a4 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -271,6 +271,19 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests return data.Sum(x => x.LeaveTotal); } + //public async Task GetSumApproveLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year) + //{ + // var data = await _dbContext.Set().AsQueryable().AsNoTracking() + // .Include(x => x.Type) + // .Where(x => x.KeycloakUserId == keycloakUserId) + // .Where(x => x.Type.Id == leaveTypeId) + // .Where(x => x.LeaveStartDate.Year == year) + // .Where(x => x.LeaveStatus == "APPROVE") + // .ToListAsync(); + + // return data.Sum(x => x.LeaveTotal); + //} + public async Task GetLeaveLastByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId) { var data = await _dbContext.Set().AsQueryable().AsNoTracking() diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs index 15299fbd..a700366f 100644 --- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs @@ -712,6 +712,8 @@ namespace BMA.EHR.Leave.Service.Controllers var totalDay = req.StartLeaveDate.DiffDay(req.EndLeaveDate.Date); var sumWeekend = _holidayRepository.GetWeekEndCount(req.StartLeaveDate.Date, req.EndLeaveDate.Date, category); + var sumApproveLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, req.Type, req.StartLeaveDate.Year); + var isLeave = false; switch (leaveType.Code.ToUpper().Trim()) @@ -728,7 +730,7 @@ namespace BMA.EHR.Leave.Service.Controllers isLeave = (totalDay - sumWorkDay - sumWeekend) <= 15; break; case "LV-005": - isLeave = (totalDay - sumWorkDay - sumWeekend) <= 10; + isLeave = (totalDay - sumWorkDay - sumWeekend - sumApproveLeave) <= 10; break; case "LV-006": isLeave = totalDay <= 120; @@ -1560,7 +1562,7 @@ namespace BMA.EHR.Leave.Service.Controllers approver = list.First().Name; } - var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(userId, rawData.Type.Id, thisYear); + var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(rawData.KeycloakUserId, rawData.Type.Id, thisYear); var sumLeave = rawData.LeaveStartDate.DiffDay(rawData.LeaveEndDate); var sumHoliday = await _holidayRepository.GetHolidayCountAsync(rawData.LeaveStartDate, rawData.LeaveEndDate, category);