Logic การคำนวนวันลา แบบร่าง และ นะหว่างพิจาณา #1567
This commit is contained in:
parent
bb329f86de
commit
d58c7dc07e
4 changed files with 84 additions and 11 deletions
|
|
@ -354,7 +354,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
var rawData = _dbContext.Set<LeaveRequest>().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStatus != "DRAFT")
|
||||
.OrderByDescending(x => x.CreatedAt)
|
||||
.OrderByDescending(x => (x.DateSendLeave ?? x.CreatedAt))
|
||||
.AsQueryable();
|
||||
|
||||
if (year != 0)
|
||||
|
|
@ -380,7 +380,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
var rawData = _dbContext.Set<LeaveRequest>().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStatus != "DRAFT")
|
||||
.OrderByDescending(x => x.CreatedAt)
|
||||
.OrderByDescending(x => (x.DateSendLeave ?? x.CreatedAt))
|
||||
.AsQueryable();
|
||||
// fix issue : 1830
|
||||
if (year != 0)
|
||||
|
|
@ -447,7 +447,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
.Include(x => x.Type)
|
||||
.Where(x => keycloakIdList.Contains(x.KeycloakUserId))
|
||||
.Where(x => x.LeaveStatus != "DRAFT")
|
||||
.OrderByDescending(x => x.CreatedAt)
|
||||
.OrderByDescending(x =>(x.DateSendLeave ?? x.CreatedAt))
|
||||
.AsQueryable();
|
||||
|
||||
if (year != 0)
|
||||
|
|
@ -574,12 +574,12 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
//.Where(x => x.LeaveStartDate.Date < beforeDate.Date)
|
||||
.Where(x => x.CreatedAt < beforeDate)
|
||||
.Where(x => (x.DateSendLeave ?? x.CreatedAt) < beforeDate)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.Type.Id == leaveTypeId)
|
||||
.Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING")
|
||||
//.Where(x => x.LeaveStatus != "REJECT" && x.LeaveStatus != "DELETE")
|
||||
.OrderByDescending(x => x.CreatedAt)
|
||||
.OrderByDescending(x => (x.DateSendLeave ?? x.CreatedAt))
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
return data;
|
||||
|
|
@ -1877,7 +1877,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
.Include(x => x.Type)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.Type.Id == leaveTypeId)
|
||||
.Where(x => x.CreatedAt.Date >= startDate && x.CreatedAt < endDate)
|
||||
.Where(x => (x.DateSendLeave ?? x.CreatedAt).Date >= startDate && (x.DateSendLeave ??x.CreatedAt).Date < endDate)
|
||||
//.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
|
||||
.Where(x => x.LeaveStatus == "APPROVE" || x.LeaveStatus == "DELETING")
|
||||
.ToListAsync();
|
||||
|
|
@ -1888,6 +1888,57 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// วันลาที่สร้างแบบร่างยังไม่ได้ยื่น
|
||||
/// </summary>
|
||||
/// <param name="keycloakUserId"></param>
|
||||
/// <param name="leaveTypeId"></param>
|
||||
/// <param name="startDate"></param>
|
||||
/// <param name="endDate"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<double> GetSumDraftLeaveTotalByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.Type.Id == leaveTypeId)
|
||||
.Where(x => (x.DateSendLeave ?? x.CreatedAt).Date >= startDate
|
||||
&& (x.DateSendLeave ?? x.CreatedAt).Date < endDate)
|
||||
//.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
|
||||
.Where(x => x.LeaveStatus == "DRAFT")
|
||||
.ToListAsync();
|
||||
|
||||
if (data.Count > 0)
|
||||
return data.Sum(x => x.LeaveTotal);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// วันลาที่ยื่นแล้วรอพิจารณา
|
||||
/// </summary>
|
||||
/// <param name="keycloakUserId"></param>
|
||||
/// <param name="leaveTypeId"></param>
|
||||
/// <param name="startDate"></param>
|
||||
/// <param name="endDate"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<double> GetSumNewLeaveTotalByTypeAndRangeForUser2(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.Type.Id == leaveTypeId)
|
||||
.Where(x => (x.DateSendLeave ?? x.CreatedAt).Date >= startDate && (x.DateSendLeave ??x.CreatedAt).Date < endDate)
|
||||
//.Where(x => x.LeaveStartDate.Date >= startDate.Date && x.LeaveStartDate.Date <= endDate.Date)
|
||||
.Where(x => x.LeaveStatus == "NEW")
|
||||
.ToListAsync();
|
||||
|
||||
if (data.Count > 0)
|
||||
return data.Sum(x => x.LeaveTotal);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
public async Task<int> GetCountApproveLeaveByTypeAndRangeForUser(Guid keycloakUserId, Guid leaveTypeId, DateTime startDate, DateTime endDate)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
|
|
|
|||
|
|
@ -855,10 +855,10 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
{
|
||||
var userId = UserId == null ? Guid.Empty : Guid.Parse(UserId);
|
||||
|
||||
var thisYear = DateTime.Now.Year;
|
||||
var thisYear = DateTime.Now.Year - 1;
|
||||
var toDay = DateTime.Now.Date;
|
||||
var startFiscalDate = new DateTime(DateTime.Now.Year, 10, 1);
|
||||
var endFiscalDate = new DateTime(DateTime.Now.Year + 1, 9, 30);
|
||||
var startFiscalDate = new DateTime(DateTime.Now.Year - 1, 10, 1);
|
||||
var endFiscalDate = new DateTime(DateTime.Now.Year, 9, 30);
|
||||
|
||||
if (toDay >= startFiscalDate && toDay <= endFiscalDate)
|
||||
thisYear = thisYear + 1;
|
||||
|
|
@ -925,6 +925,9 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
var leaveLast = await _leaveRequestRepository.GetLeaveLastByTypeForUserAsync(userId, req.Type);
|
||||
|
||||
var leaveDraftSummary = await _leaveRequestRepository.GetSumDraftLeaveTotalByTypeAndRangeForUser2(userId, req.Type, startFiscalDate, endFiscalDate);
|
||||
var leaveWaitingSummary = await _leaveRequestRepository.GetSumNewLeaveTotalByTypeAndRangeForUser2(userId, req.Type, startFiscalDate, endFiscalDate);
|
||||
|
||||
var result = new GetUserLeaveProfileResultDto
|
||||
{
|
||||
DateSendLeave = DateTime.Now.Date,
|
||||
|
|
@ -960,7 +963,10 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
CurrentDistrict = profile.CurrentDistrict ?? "",
|
||||
CurrentProvince = profile.CurrentProvince ?? "",
|
||||
CurrentZipCode = profile.CurrentZipCode ?? "",
|
||||
GovAge = govAge
|
||||
GovAge = govAge,
|
||||
|
||||
LeaveDraftSummary = leaveDraftSummary,
|
||||
LeaveWaitingSummary = leaveWaitingSummary
|
||||
};
|
||||
|
||||
return Success(result);
|
||||
|
|
@ -2824,7 +2830,13 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
var startFiscalYear = new DateTime(rawData.LeaveStartDate.Year - 1, 10, 1);
|
||||
var endFiscalYear = rawData.CreatedAt;
|
||||
var endFiscalYear2 = new DateTime(rawData.LeaveStartDate.Year, 9, 30);
|
||||
var leaveSummary = await _leaveRequestRepository.GetSumApproveLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear);
|
||||
|
||||
// วันลาแบบร่างและที่ยื่นลาไปแล้ว
|
||||
var leaveDraftSummary = await _leaveRequestRepository.GetSumDraftLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear2);
|
||||
var leaveWaitingSummary = await _leaveRequestRepository.GetSumNewLeaveTotalByTypeAndRangeForUser2(rawData.KeycloakUserId, rawData.Type.Id, startFiscalYear, endFiscalYear2);
|
||||
|
||||
//var leaveSummary = leaveData == null ? 0.0 : leaveData.LeaveDaysUsed;
|
||||
if (leaveData != null)
|
||||
leaveSummary += leaveData.BeginningLeaveDays;
|
||||
|
|
@ -2938,7 +2950,10 @@ namespace BMA.EHR.Leave.Service.Controllers
|
|||
|
||||
LeaveLimit = rawData.Type.Limit + extendLeave,
|
||||
LeaveSummary = leaveSummary,
|
||||
LeaveRemain = (rawData.Type.Limit + extendLeave) - leaveSummary
|
||||
LeaveRemain = (rawData.Type.Limit + extendLeave) - leaveSummary,
|
||||
|
||||
LeaveDraftSummary = leaveDraftSummary,
|
||||
LeaveWaitingSummary = leaveWaitingSummary
|
||||
};
|
||||
|
||||
if (rawData.LeaveDocument != null && rawData.LeaveDocument.Count > 0)
|
||||
|
|
|
|||
|
|
@ -147,6 +147,10 @@ namespace BMA.EHR.Leave.Service.DTOs.LeaveRequest
|
|||
public List<GetLeaveApproverDto> Approvers { get; set; } = new();
|
||||
|
||||
public Guid? KeycloakUserId { get; set; } = Guid.Empty;
|
||||
|
||||
|
||||
public double LeaveDraftSummary { get; set; } = 0;
|
||||
public double LeaveWaitingSummary { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class GetLeaveApproverDto
|
||||
|
|
|
|||
|
|
@ -53,5 +53,8 @@
|
|||
public string? CurrentZipCode { get; set; }
|
||||
|
||||
public int GovAge { get; set; } = 0;
|
||||
|
||||
public double LeaveDraftSummary { get; set; } = 0;
|
||||
public double LeaveWaitingSummary { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue