fix : Optimize Leave API
This commit is contained in:
parent
12733ea779
commit
b3fb153bbf
2 changed files with 109 additions and 9 deletions
|
|
@ -514,6 +514,93 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
await _appDbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<List<GetSumApproveLeaveByTypeDto>> GetSumSendLeaveAsync(int year)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStartDate.Year == year)
|
||||
.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
|
||||
{
|
||||
KeycloakUserId = grp.Key.KeycloakUserId,
|
||||
LeaveTypeId = grp.Key.LeaveTypeId,
|
||||
LeaveTypeCode = grp.Key.LeaveTypeCode,
|
||||
SumLeaveDay = grp.Sum(x => x.LeaveTotal)
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public async Task<List<GetSumApproveLeaveByTypeDto>> GetSumApproveLeaveAsync(int year)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStartDate.Year == year)
|
||||
.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
|
||||
{
|
||||
KeycloakUserId = grp.Key.KeycloakUserId,
|
||||
LeaveTypeId = grp.Key.LeaveTypeId,
|
||||
LeaveTypeCode = grp.Key.LeaveTypeCode,
|
||||
SumLeaveDay = grp.Sum(x => x.LeaveTotal)
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public async Task<List<GetSumApproveLeaveByTypeDto>> GetSumRejectLeaveAsync(int year)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStartDate.Year == year)
|
||||
.Where(x => x.LeaveStatus == "REJECT")
|
||||
.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
|
||||
{
|
||||
KeycloakUserId = grp.Key.KeycloakUserId,
|
||||
LeaveTypeId = grp.Key.LeaveTypeId,
|
||||
LeaveTypeCode = grp.Key.LeaveTypeCode,
|
||||
SumLeaveDay = grp.Sum(x => x.LeaveTotal)
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public async Task<List<GetSumApproveLeaveByTypeDto>> GetSumDeleteLeaveAsync(int year)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable().AsNoTracking()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveStartDate.Year == year)
|
||||
.Where(x => x.LeaveStatus == "DELETE")
|
||||
.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
|
||||
{
|
||||
KeycloakUserId = grp.Key.KeycloakUserId,
|
||||
LeaveTypeId = grp.Key.LeaveTypeId,
|
||||
LeaveTypeCode = grp.Key.LeaveTypeCode,
|
||||
SumLeaveDay = grp.Sum(x => x.LeaveTotal)
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public async Task<double> GetSumSendLeaveByTypeForUserAsync(Guid keycloakUserId, Guid leaveTypeId, int year)
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue