diff --git a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs index 59fad799..5d2f76e2 100644 --- a/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/LeaveRequests/LeaveRequestRepository.cs @@ -1218,6 +1218,22 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests return 0.0; } + public async Task GetSumApproveLeaveByTypeAndRangeForUser(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate) + { + 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.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date) + .Where(x => x.LeaveStatus == "APPROVE") + .ToListAsync(); + + if (data.Count > 0) + return data.Sum(x => x.LeaveTotal); + else + return 0; + } + public async Task GetSumApproveLeaveByRangeForUser(Guid keycloakUserId, DateTime startDate, DateTime endDate) { var data = await _dbContext.Set().AsQueryable().AsNoTracking() @@ -1347,7 +1363,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests return res; } - public async Task GetSumApproveLeaveByTypeAndRangeForUser(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate) + public async Task GetSumApproveLeaveTotalByTypeAndRangeForUser(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate) { var data = await _dbContext.Set().AsQueryable().AsNoTracking() .Include(x => x.Type) diff --git a/BMA.EHR.Leave/Controllers/LeaveReportController.cs b/BMA.EHR.Leave/Controllers/LeaveReportController.cs index d4bd7fa0..0aa63e9d 100644 --- a/BMA.EHR.Leave/Controllers/LeaveReportController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveReportController.cs @@ -160,9 +160,15 @@ namespace BMA.EHR.Leave.Service.Controllers //} //var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveByTypeForUserAsync(data.KeycloakUserId, data.Type.Id, data.LeaveStartDate.Year); + //GetSumApproveLeaveByRangeForUser + + var startFiscalYear = new DateTime(data.LeaveStartDate.Year - 1, 10, 1); + var endFiscalYear = data.CreatedAt.Date.AddDays(-1); // นับจากวันที่ยื่นลา var leaveData = await _leaveBeginningRepository.GetByYearAndTypeIdForUserAsync(data.LeaveStartDate.Year, data.Type.Id, data.KeycloakUserId); - var sumLeave = leaveData == null ? 0 : leaveData.LeaveDaysUsed; + //var sumLeave = leaveData == null ? 0 : leaveData.LeaveDaysUsed; + + var sumLeave = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser(data.KeycloakUserId, data.Type.Id, startFiscalYear, endFiscalYear); return new { @@ -784,17 +790,20 @@ namespace BMA.EHR.Leave.Service.Controllers reportName = $"leave_cancel_form", data = new { - leaveWrote = data.CancelLeaveWrote ?? "", - dateSendLeave = data.CreatedAt.Date.ToThaiShortDate(), + leaveWrote = data.CancelLeaveWrote!.ToThaiNumber() ?? "", + dateSendLeave = data.CreatedAt.Date.ToThaiShortDate().ToThaiNumber(), leaveTypeName = data.Type.Name, fullname = fullName, - positionName = profile!.Position == null ? "-" : profile!.Position, - positionLeaveName = profile!.PositionLeaveName == null ? "-" : profile!.PositionLeaveName, + positionName = profile!.Position == null ? "-" : profile!.Position.ToThaiNumber(), + positionLeaveName = profile!.PositionLeaveName == null ? "-" : profile!.PositionLeaveName.ToThaiNumber(), organizationName = profile!.Oc ?? "", - leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate(), - leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate(), - dear = data.Dear, - leaveTotal = data.LeaveTotal + leaveDateStart = data.LeaveStartDate.Date.ToThaiShortDate().ToThaiNumber(), + leaveDateEnd = data.LeaveEndDate.Date.ToThaiShortDate().ToThaiNumber(), + dear = data.CommanderPosition == null ? data.Dear : data.CommanderPosition.ToThaiNumber(), + leaveTotal = data.LeaveTotal.ToString().ToThaiNumber(), + profileType = data.ProfileType, + leaveReasonDelete = data.LeaveCancelComment == null ? "" : data.LeaveCancelComment!.ToThaiNumber(), + leaveDetail = data.LeaveDetail.ToThaiNumber(), } };