แก้ไขการเช็ค duplicate กรณีลาครึ่งวัน ให้ตรวจสอบว่ามีการลาครึ่งวันซ้ำกันหรือไม่ ถ้ากรณีลาเต็มวัน เช็คทุกกรณี
This commit is contained in:
parent
47c1f7dac0
commit
f2a0d1ca86
2 changed files with 34 additions and 17 deletions
|
|
@ -344,7 +344,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
throw new Exception(GlobalMessages.DataNotFound);
|
||||
}
|
||||
|
||||
var isDuplicate = await CheckDuplicateLeave(rawData.KeycloakUserId, rawData.LeaveStartDate.Date, rawData.LeaveEndDate.Date);
|
||||
var isDuplicate = await CheckDuplicateLeave(rawData.KeycloakUserId, rawData.LeaveStartDate.Date, rawData.LeaveEndDate.Date, rawData.LeaveRange ?? "ALL");
|
||||
if (isDuplicate)
|
||||
{
|
||||
throw new Exception("ไม่สามารถขอลาในช่วงเวลาเดียวกันได้ เนื่องจากมีการขอลาในช่วงเวลาดังกล่าวแล้ว");
|
||||
|
|
@ -577,17 +577,34 @@ namespace BMA.EHR.Application.Repositories.Leaves.LeaveRequests
|
|||
return 0;
|
||||
}
|
||||
|
||||
public async Task<bool> CheckDuplicateLeave(Guid keycloakUserId, DateTime startDate, DateTime endDate)
|
||||
public async Task<bool> CheckDuplicateLeave(Guid keycloakUserId, DateTime startDate, DateTime endDate, string range)
|
||||
{
|
||||
var leaveStatus = new List<string>() { "NEW", "PENDING", "APPROVE" };
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.LeaveStartDate.Date == startDate.Date || x.LeaveEndDate.Date == endDate.Date)
|
||||
.Where(x => leaveStatus.Contains(x.LeaveStatus))
|
||||
.ToListAsync();
|
||||
if (range == "ALL")
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable()
|
||||
.Include(x => x.Type)
|
||||
//.Where(x => x.LeaveRange == "ALL")
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.LeaveStartDate.Date == startDate.Date || x.LeaveEndDate.Date == endDate.Date)
|
||||
.Where(x => leaveStatus.Contains(x.LeaveStatus))
|
||||
.ToListAsync();
|
||||
|
||||
return data.Count > 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var data = await _dbContext.Set<LeaveRequest>().AsQueryable()
|
||||
.Include(x => x.Type)
|
||||
.Where(x => x.LeaveRange == range)
|
||||
.Where(x => x.KeycloakUserId == keycloakUserId)
|
||||
.Where(x => x.LeaveStartDate.Date == startDate.Date || x.LeaveEndDate.Date == endDate.Date)
|
||||
.Where(x => leaveStatus.Contains(x.LeaveStatus))
|
||||
.ToListAsync();
|
||||
|
||||
return data.Count > 0;
|
||||
}
|
||||
|
||||
return data.Count > 0;
|
||||
}
|
||||
|
||||
public async Task DeleteLeaveDocumentAsync(Guid Id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue