Na most jó a lapozás

This commit is contained in:
2026-03-09 11:32:12 +01:00
parent 53dc9b326a
commit 92acb42601
@@ -82,59 +82,67 @@ namespace WorkFlowCheck.BL.Services
return retVal;
}
public async Task<ApiResponseListDTO<List<CheckListHeaderDTO>>> GetFilteredCheckListHeaderAsync(DataTablesRequest dataTablesRequest)
public async Task<ApiResponseListDTO<List<CheckListHeaderDTO>>> GetFilteredCheckListHeaderAsync(DataTablesRequest req)
{
var retVal = new ApiResponseListDTO<List<CheckListHeaderDTO>>();
try
{
IQueryable<CheckListHeader> query = _dbContext.CheckListHeaders
.Include(i => i.CheckListRows)
.Include(i => i.User)
.Include(i => i.AcceptUser)
.AsNoTracking();
switch (dataTablesRequest.Mode)
var baseQuery = _dbContext.CheckListHeaders
.AsNoTracking()
.Where(x => !x.IsDeleted);
// MODE szűrés (csak WHERE, ORDER BY nélkül)
IQueryable<CheckListHeader> modeQuery = req.Mode switch
{
case 0:
query = query.Where(w => w.CheckStatus == CheckStatus.InProgress || w.CheckStatus == CheckStatus.Open).OrderByDescending(o => o.CreatedAt);
break;
0 => baseQuery.Where(w => w.CheckStatus == CheckStatus.InProgress || w.CheckStatus == CheckStatus.Open),
1 => baseQuery.Where(w => w.CheckStatus == CheckStatus.Sent),
2 => baseQuery.Where(w => w.CheckStatus == CheckStatus.Closed),
3 => baseQuery.Where(w => w.CheckStatus == CheckStatus.Signed),
_ => baseQuery
};
case 1:
query = query.Where(w => w.CheckStatus == CheckStatus.Sent).OrderByDescending(o => o.CreatedAt);
break;
// Total = mode szűrés után, keresés előtt
retVal.Total = await modeQuery.CountAsync();
case 2:
query = query.Where(w => w.CheckStatus == CheckStatus.Closed).OrderByDescending(o => o.CreatedAt);
break;
case 3:
query = query.Where(w => w.CheckStatus == CheckStatus.Signed).OrderByDescending(o => o.CreatedAt);
break;
// Search
var search = req.Search?.Value?.Trim();
IQueryable<CheckListHeader> filteredQuery = modeQuery;
default:
query = query.OrderByDescending(o => o.CreatedAt);
break;
}
retVal.Total = await query.CountAsync();
if (!string.IsNullOrWhiteSpace(dataTablesRequest.Search.Value))
if (!string.IsNullOrWhiteSpace(search))
{
query = query.Where(x =>
x.DocumentNumber.Contains(dataTablesRequest.Search.Value) ||
x.ShortName.Contains(dataTablesRequest.Search.Value) ||
x.Description.Contains(dataTablesRequest.Search.Value) ||
x.CreatedBy.Contains(dataTablesRequest.Search.Value) ||
(x.AcceptUser != null && x.AcceptUser.UserName.Contains(dataTablesRequest.Search.Value))
filteredQuery = filteredQuery.Where(x =>
x.DocumentNumber.Contains(search) ||
(x.ShortName != null && x.ShortName.Contains(search)) ||
(x.Description != null && x.Description.Contains(search)) ||
(x.CreatedBy != null && x.CreatedBy.Contains(search)) ||
(x.AcceptUser != null && x.AcceptUser.UserName.Contains(search))
);
}
retVal.Filtered = await query.CountAsync();
var list = await query.Skip(dataTablesRequest.Start).Take(dataTablesRequest.Length).ToListAsync();
retVal.Filtered = await filteredQuery.CountAsync();
// Ordering (itt már jöhet)
filteredQuery = filteredQuery.OrderByDescending(o => o.CreatedAt);
// Paging
var list = await filteredQuery
.Include(x => x.CheckListRows)
.Include(x => x.User)
.Include(x => x.AcceptUser)
.AsSplitQuery()
.Skip(req.Start)
.Take(req.Length)
.ToListAsync();
retVal.Data = _mapper.Map<List<CheckListHeaderDTO>>(list);
}
catch (Exception ex)
{
Log.Error(ex.Message);
Log.Error(ex, "GetFilteredCheckListHeaderAsync failed");
}
return retVal;
}
public async Task<List<CheckListHeaderDTO>> GetAllCheckListHeaderAsync(int mode = 0)