From 4161fcc1cfab2094d0eb03b9a2bb9be274325da0 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Wed, 6 May 2026 18:53:53 +0700 Subject: [PATCH] fix --- .../LeaveRequests/LeaveRequestRepository.cs | 31 +++++++++++++++++++ BMA.EHR.Domain/Common/BaseController.cs | 3 ++ .../Extensions/ClaimsPrincipalExtensions.cs | 2 ++ .../Controllers/LeaveBeginningController.cs | 26 ++++++++++++++-- BMA.EHR.Leave/Controllers/LeaveController.cs | 4 ++- 5 files changed, 62 insertions(+), 4 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index cb78382e..8cb9b715 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -1888,6 +1888,37 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests return 0; } + public async Task GetSumApproveLeaveTotalByTypeAndRangeForUserByProfile(Guid profileId, Guid leaveTypeId, DateTime startDate, DateTime endDate) + { + var data = await _dbContext.Set().AsQueryable().AsNoTracking() + .Include(x => x.Type) + .Where(x => x.ProfileId == profileId) + .Where(x => x.Type.Id == leaveTypeId) + .Where(x => ((x.DateSendLeave ?? x.CreatedAt) >= startDate && (x.DateSendLeave ??x.CreatedAt) <= endDate)) + //.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date) + .Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING") + .ToListAsync(); + + if (data.Count > 0) + return data.Sum(x => x.LeaveTotal); + else + return 0; + } + + public async Task GetSumApproveLeaveCountByTypeAndRangeForUserByProfile(Guid profileId, Guid leaveTypeId, DateTime startDate, DateTime endDate) + { + var data = await _dbContext.Set().AsQueryable().AsNoTracking() + .Include(x => x.Type) + .Where(x => x.ProfileId == profileId) + .Where(x => x.Type.Id == leaveTypeId) + .Where(x => ((x.DateSendLeave ?? x.CreatedAt) >= startDate && (x.DateSendLeave ??x.CreatedAt) <= endDate)) + //.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date) + .Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING") + .ToListAsync(); + + return data.Count; + } + public async Task GetSumApproveLeaveCountByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate) { var data = await _dbContext.Set().AsQueryable().AsNoTracking() diff --git a/BMA.EHR.Domain/Common/BaseController.cs b/BMA.EHR.Domain/Common/BaseController.cs index 26f71bf5..0b382d95 100644 --- a/BMA.EHR.Domain/Common/BaseController.cs +++ b/BMA.EHR.Domain/Common/BaseController.cs @@ -95,6 +95,9 @@ namespace BMA.EHR.Domain.Common protected Guid? ProfileId => User.GetProfileId(); protected string? Prefix => User.GetPrefix(); protected string? FullNameFromClaim => User.GetName(); + + protected string? FirstName => User.GetFirstName(); + protected string? LastName => User.GetLastName(); #endregion diff --git a/BMA.EHR.Domain/Extensions/ClaimsPrincipalExtensions.cs b/BMA.EHR.Domain/Extensions/ClaimsPrincipalExtensions.cs index 26a7c189..cc44f8a1 100644 --- a/BMA.EHR.Domain/Extensions/ClaimsPrincipalExtensions.cs +++ b/BMA.EHR.Domain/Extensions/ClaimsPrincipalExtensions.cs @@ -26,5 +26,7 @@ namespace BMA.EHR.Domain.Extensions public static Guid? GetProfileId(this ClaimsPrincipal user) => user.GetGuidClaim(BmaClaimTypes.ProfileId); public static string? GetPrefix(this ClaimsPrincipal user) => user.GetClaimValue(BmaClaimTypes.Prefix); public static string? GetName(this ClaimsPrincipal user) => user.GetClaimValue(BmaClaimTypes.Name); + public static string? GetFirstName(this ClaimsPrincipal user) => user.GetClaimValue(BmaClaimTypes.GivenName); + public static string? GetLastName(this ClaimsPrincipal user) => user.GetClaimValue(BmaClaimTypes.FamilyName); } } diff --git a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs index a71ef428..2aa4988f 100644 --- a/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveBeginningController.cs @@ -378,6 +378,15 @@ namespace BMA.EHR.Leave.Service.Controllers try { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); + // var profileId = ProfileId ?? Guid.Empty; + // var prefix = Prefix ?? ""; + // var firstName = FirstName ?? ""; + // var lastName = LastName ?? ""; + // var rootDnaId = OrgRootDnaId ?? Guid.Empty; + // var child1DnaId = OrgChild1DnaId ?? Guid.Empty; + // var child2DnaId = OrgChild2DnaId ?? Guid.Empty; + // var child3DnaId = OrgChild3DnaId ?? Guid.Empty; + // var child4DnaId = OrgChild4DnaId ?? Guid.Empty; var getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_HISTORY"); var jsonData = JsonConvert.DeserializeObject(getPermission); @@ -389,7 +398,6 @@ namespace BMA.EHR.Leave.Service.Controllers if (leaveBeginning == null) return Error("ไม่พบข้อมูลที่ต้องการแก้ไข", StatusCodes.Status404NotFound); - var profile = await _userProfileRepository.GetProfileByProfileIdAsync(req.ProfileId, AccessToken); if (profile == null) { @@ -399,10 +407,11 @@ namespace BMA.EHR.Leave.Service.Controllers var startFiscalDate = new DateTime(DateTime.Now.Year - 1, 10, 1); var endFiscalDate = new DateTime(DateTime.Now.Year, 9, 30); + if (req.LeaveDaysUsed is null || req.LeaveCount is null) { - var systemLeaveDays = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser2(profile.Keycloak ?? Guid.Empty, req.LeaveTypeId, startFiscalDate, endFiscalDate); - var systemLeaveCount = await _leaveRequestRepository.GetSumApproveLeaveCountByTypeAndRangeForUser2(profile.Keycloak ?? Guid.Empty, req.LeaveTypeId, startFiscalDate, endFiscalDate); + var systemLeaveDays = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUserByProfile(req.ProfileId, req.LeaveTypeId, startFiscalDate, endFiscalDate); + var systemLeaveCount = await _leaveRequestRepository.GetSumApproveLeaveCountByTypeAndRangeForUserByProfile(req.ProfileId, req.LeaveTypeId, startFiscalDate, endFiscalDate); leaveBeginning.LeaveDaysUsed = req.BeginningLeaveDays + systemLeaveDays; leaveBeginning.LeaveCount = req.BeginningLeaveCount + systemLeaveCount; @@ -464,6 +473,17 @@ namespace BMA.EHR.Leave.Service.Controllers try { var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); + + // var profileId = ProfileId ?? Guid.Empty; + // var prefix = Prefix ?? ""; + // var firstName = FirstName ?? ""; + // var lastName = LastName ?? ""; + // var rootDnaId = OrgRootDnaId ?? Guid.Empty; + // var child1DnaId = OrgChild1DnaId ?? Guid.Empty; + // var child2DnaId = OrgChild2DnaId ?? Guid.Empty; + // var child3DnaId = OrgChild3DnaId ?? Guid.Empty; + // var child4DnaId = OrgChild4DnaId ?? Guid.Empty; + var getPermission = await _permission.GetPermissionAPIAsync("CREATE", "SYS_LEAVE_HISTORY"); var jsonData = JsonConvert.DeserializeObject(getPermission); if (jsonData["status"]?.ToString() != "200") diff --git a/BMA.EHR.Leave/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index f2c3f30e..11914436 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -3815,7 +3815,9 @@ namespace BMA.EHR.Leave.Service.Controllers "NORMAL", CheckOutDescription = d.CheckOutRemark ?? "", IsLocationCheckIn = d.IsLocationCheckIn, - IsLocationCheckOut = d.IsLocationCheckOut + IsLocationCheckOut = d.IsLocationCheckOut, + CheckInLocationName = d.CheckInLocationName ?? "", + CheckOutLocationName = d.CheckOutLocationName ?? "" }; return Success(result);