fix
All checks were successful
Build & Deploy Leave Service / build (push) Successful in 1m50s

This commit is contained in:
Suphonchai Phoonsawat 2026-05-06 18:53:53 +07:00
parent 6d0921a76a
commit 4161fcc1cf
5 changed files with 62 additions and 4 deletions

View file

@ -1888,6 +1888,37 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
return 0; return 0;
} }
public async Task<double> GetSumApproveLeaveTotalByTypeAndRangeForUserByProfile(Guid profileId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
{
var data = await _dbContext.Set<LeaveRequest>().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<int> GetSumApproveLeaveCountByTypeAndRangeForUserByProfile(Guid profileId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
{
var data = await _dbContext.Set<LeaveRequest>().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<int> GetSumApproveLeaveCountByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate) public async Task<int> GetSumApproveLeaveCountByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
{ {
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking() var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()

View file

@ -96,6 +96,9 @@ namespace BMA.EHR.Domain.Common
protected string? Prefix => User.GetPrefix(); protected string? Prefix => User.GetPrefix();
protected string? FullNameFromClaim => User.GetName(); protected string? FullNameFromClaim => User.GetName();
protected string? FirstName => User.GetFirstName();
protected string? LastName => User.GetLastName();
#endregion #endregion
#endregion #endregion

View file

@ -26,5 +26,7 @@ namespace BMA.EHR.Domain.Extensions
public static Guid? GetProfileId(this ClaimsPrincipal user) => user.GetGuidClaim(BmaClaimTypes.ProfileId); 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? GetPrefix(this ClaimsPrincipal user) => user.GetClaimValue(BmaClaimTypes.Prefix);
public static string? GetName(this ClaimsPrincipal user) => user.GetClaimValue(BmaClaimTypes.Name); 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);
} }
} }

View file

@ -378,6 +378,15 @@ namespace BMA.EHR.Leave.Service.Controllers
try try
{ {
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); 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 getPermission = await _permission.GetPermissionAPIAsync("UPDATE", "SYS_LEAVE_HISTORY");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission); var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
@ -389,7 +398,6 @@ namespace BMA.EHR.Leave.Service.Controllers
if (leaveBeginning == null) if (leaveBeginning == null)
return Error("ไม่พบข้อมูลที่ต้องการแก้ไข", StatusCodes.Status404NotFound); return Error("ไม่พบข้อมูลที่ต้องการแก้ไข", StatusCodes.Status404NotFound);
var profile = await _userProfileRepository.GetProfileByProfileIdAsync(req.ProfileId, AccessToken); var profile = await _userProfileRepository.GetProfileByProfileIdAsync(req.ProfileId, AccessToken);
if (profile == null) if (profile == null)
{ {
@ -399,10 +407,11 @@ namespace BMA.EHR.Leave.Service.Controllers
var startFiscalDate = new DateTime(DateTime.Now.Year - 1, 10, 1); var startFiscalDate = new DateTime(DateTime.Now.Year - 1, 10, 1);
var endFiscalDate = new DateTime(DateTime.Now.Year, 9, 30); var endFiscalDate = new DateTime(DateTime.Now.Year, 9, 30);
if (req.LeaveDaysUsed is null || req.LeaveCount is null) if (req.LeaveDaysUsed is null || req.LeaveCount is null)
{ {
var systemLeaveDays = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser2(profile.Keycloak ?? Guid.Empty, req.LeaveTypeId, startFiscalDate, endFiscalDate); var systemLeaveDays = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUserByProfile(req.ProfileId, req.LeaveTypeId, startFiscalDate, endFiscalDate);
var systemLeaveCount = await _leaveRequestRepository.GetSumApproveLeaveCountByTypeAndRangeForUser2(profile.Keycloak ?? Guid.Empty, req.LeaveTypeId, startFiscalDate, endFiscalDate); var systemLeaveCount = await _leaveRequestRepository.GetSumApproveLeaveCountByTypeAndRangeForUserByProfile(req.ProfileId, req.LeaveTypeId, startFiscalDate, endFiscalDate);
leaveBeginning.LeaveDaysUsed = req.BeginningLeaveDays + systemLeaveDays; leaveBeginning.LeaveDaysUsed = req.BeginningLeaveDays + systemLeaveDays;
leaveBeginning.LeaveCount = req.BeginningLeaveCount + systemLeaveCount; leaveBeginning.LeaveCount = req.BeginningLeaveCount + systemLeaveCount;
@ -464,6 +473,17 @@ namespace BMA.EHR.Leave.Service.Controllers
try try
{ {
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId); 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 getPermission = await _permission.GetPermissionAPIAsync("CREATE", "SYS_LEAVE_HISTORY");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission); var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200") if (jsonData["status"]?.ToString() != "200")

View file

@ -3815,7 +3815,9 @@ namespace BMA.EHR.Leave.Service.Controllers
"NORMAL", "NORMAL",
CheckOutDescription = d.CheckOutRemark ?? "", CheckOutDescription = d.CheckOutRemark ?? "",
IsLocationCheckIn = d.IsLocationCheckIn, IsLocationCheckIn = d.IsLocationCheckIn,
IsLocationCheckOut = d.IsLocationCheckOut IsLocationCheckOut = d.IsLocationCheckOut,
CheckInLocationName = d.CheckInLocationName ?? "",
CheckOutLocationName = d.CheckOutLocationName ?? ""
}; };
return Success(result); return Success(result);