From a7b8c2786cde37ef753e4bae34502859d0b9af59 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Fri, 25 Apr 2025 10:44:01 +0700 Subject: [PATCH] =?UTF-8?q?fix=20:=20Add=20=E0=B8=A7=E0=B8=B1=E0=B8=99?= =?UTF-8?q?=E0=B8=A5=E0=B8=B2=E0=B9=83=E0=B8=8A=E0=B9=89=E0=B9=84=E0=B8=9B?= =?UTF-8?q?=20=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1=E0=B9=80?= =?UTF-8?q?=E0=B8=95=E0=B8=B4=E0=B8=A1=E0=B9=84=E0=B8=9B=E0=B9=83=E0=B8=99?= =?UTF-8?q?=20func=20=E0=B8=AB=E0=B8=B2=E0=B8=A7=E0=B8=B1=E0=B8=99?= =?UTF-8?q?=E0=B8=97=E0=B8=B5=E0=B9=88=E0=B8=A1=E0=B8=B5=E0=B8=81=E0=B8=B2?= =?UTF-8?q?=E0=B8=A3=20approve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LeaveRequests/LeaveRequestRepository.cs | 43 ++++++++++++++++++- .../Repositories/UserProfileRepository.cs | 4 +- .../Controllers/LeaveRequestController.cs | 5 --- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index 9b18fbf5..e92c9627 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -109,7 +109,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests { throw; } - + } public override async Task AddAsync(LeaveRequest entity) @@ -966,6 +966,31 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests public async Task> GetSumApproveLeaveAsync(int year) { + // Get จาก LeaveBeginning + var beginning = await _dbContext.Set().AsNoTracking() + .Include(x => x.LeaveType) + .Where(x => x.LeaveYear == year) + + .ToListAsync(); + + var beginningData = new List(); + + foreach (var b in beginning) + { + var pf = await _userProfileRepository.GetProfileByProfileIdAsync(b.ProfileId, AccessToken); + if (pf != null) + { + beginningData.Add(new GetSumApproveLeaveByTypeDto + { + KeycloakUserId = pf.Keycloak == null ? Guid.Empty : pf.Keycloak.Value, + LeaveTypeId = b.LeaveTypeId, + LeaveTypeCode = b.LeaveType!.Code, + SumLeaveDay = b.LeaveDaysUsed + }); + } + } + + // fix issue : #729 var startFiscalDate = new DateTime(year - 1, 10, 1); var endFiscalDate = new DateTime(year, 9, 30); @@ -977,6 +1002,8 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests .Where(x => x.LeaveStatus == "APPROVE") .ToListAsync(); + + var res = (from d in data group d by new { d.KeycloakUserId, LeaveTypeId = d.Type.Id, LeaveTypeCode = d.Type.Code } into grp select new GetSumApproveLeaveByTypeDto @@ -988,7 +1015,19 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests }) .ToList(); - return res; + + var resUnion = (from d in res.Union(beginningData) + group d by new { d.KeycloakUserId, d.LeaveTypeId, d.LeaveTypeCode } into grp + select new GetSumApproveLeaveByTypeDto + { + KeycloakUserId = grp.Key.KeycloakUserId, + LeaveTypeId = grp.Key.LeaveTypeId, + LeaveTypeCode = grp.Key.LeaveTypeCode, + SumLeaveDay = grp.Sum(x => x.SumLeaveDay) + }) + .ToList(); + + return resUnion; } public async Task> GetSumRejectLeaveAsync(int year) diff --git a/BMA.EHR.Application/Repositories/UserProfileRepository.cs b/BMA.EHR.Application/Repositories/UserProfileRepository.cs index 483859ec..1fc3e4fd 100644 --- a/BMA.EHR.Application/Repositories/UserProfileRepository.cs +++ b/BMA.EHR.Application/Repositories/UserProfileRepository.cs @@ -182,11 +182,11 @@ namespace BMA.EHR.Application.Repositories } } - public async Task GetProfileByProfileIdAsync(Guid keycloakId, string? accessToken) + public async Task GetProfileByProfileIdAsync(Guid profileId, string? accessToken) { try { - var apiPath = $"{_configuration["API"]}/org/dotnet/profile/{keycloakId}"; + var apiPath = $"{_configuration["API"]}/org/dotnet/profile/{profileId}"; var apiKey = _configuration["API_KEY"]; var apiResult = await GetExternalAPIAsync(apiPath, accessToken ?? "", apiKey); diff --git a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs index 40fd5471..591b257e 100644 --- a/BMA.EHR.Leave/Controllers/LeaveRequestController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveRequestController.cs @@ -12,17 +12,12 @@ using BMA.EHR.Infrastructure.Persistence; using BMA.EHR.Leave.Service.DTOs.LeaveRequest; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using Org.BouncyCastle.Asn1.Pkcs; -using Sentry; using Swashbuckle.AspNetCore.Annotations; using System.Net.Http.Headers; using System.Security.Claims; -using System.Security.Policy; -using System.Text.Json.Nodes; namespace BMA.EHR.Leave.Service.Controllers {