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; 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>>(); var retVal = new ApiResponseListDTO<List<CheckListHeaderDTO>>();
try try
{ {
IQueryable<CheckListHeader> query = _dbContext.CheckListHeaders var baseQuery = _dbContext.CheckListHeaders
.Include(i => i.CheckListRows) .AsNoTracking()
.Include(i => i.User) .Where(x => !x.IsDeleted);
.Include(i => i.AcceptUser)
.AsNoTracking(); // MODE szűrés (csak WHERE, ORDER BY nélkül)
switch (dataTablesRequest.Mode)
IQueryable<CheckListHeader> modeQuery = req.Mode switch
{ {
case 0: 0 => baseQuery.Where(w => w.CheckStatus == CheckStatus.InProgress || w.CheckStatus == CheckStatus.Open),
query = query.Where(w => w.CheckStatus == CheckStatus.InProgress || w.CheckStatus == CheckStatus.Open).OrderByDescending(o => o.CreatedAt); 1 => baseQuery.Where(w => w.CheckStatus == CheckStatus.Sent),
break; 2 => baseQuery.Where(w => w.CheckStatus == CheckStatus.Closed),
3 => baseQuery.Where(w => w.CheckStatus == CheckStatus.Signed),
_ => baseQuery
};
case 1: // Total = mode szűrés után, keresés előtt
query = query.Where(w => w.CheckStatus == CheckStatus.Sent).OrderByDescending(o => o.CreatedAt); retVal.Total = await modeQuery.CountAsync();
break;
case 2: // Search
query = query.Where(w => w.CheckStatus == CheckStatus.Closed).OrderByDescending(o => o.CreatedAt); var search = req.Search?.Value?.Trim();
break; IQueryable<CheckListHeader> filteredQuery = modeQuery;
case 3:
query = query.Where(w => w.CheckStatus == CheckStatus.Signed).OrderByDescending(o => o.CreatedAt);
break;
default: if (!string.IsNullOrWhiteSpace(search))
query = query.OrderByDescending(o => o.CreatedAt);
break;
}
retVal.Total = await query.CountAsync();
if (!string.IsNullOrWhiteSpace(dataTablesRequest.Search.Value))
{ {
query = query.Where(x => filteredQuery = filteredQuery.Where(x =>
x.DocumentNumber.Contains(dataTablesRequest.Search.Value) || x.DocumentNumber.Contains(search) ||
x.ShortName.Contains(dataTablesRequest.Search.Value) || (x.ShortName != null && x.ShortName.Contains(search)) ||
x.Description.Contains(dataTablesRequest.Search.Value) || (x.Description != null && x.Description.Contains(search)) ||
x.CreatedBy.Contains(dataTablesRequest.Search.Value) || (x.CreatedBy != null && x.CreatedBy.Contains(search)) ||
(x.AcceptUser != null && x.AcceptUser.UserName.Contains(dataTablesRequest.Search.Value)) (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); retVal.Data = _mapper.Map<List<CheckListHeaderDTO>>(list);
} }
catch (Exception ex) catch (Exception ex)
{ {
Log.Error(ex.Message); Log.Error(ex, "GetFilteredCheckListHeaderAsync failed");
} }
return retVal; return retVal;
} }
public async Task<List<CheckListHeaderDTO>> GetAllCheckListHeaderAsync(int mode = 0) public async Task<List<CheckListHeaderDTO>> GetAllCheckListHeaderAsync(int mode = 0)