Na most jó a lapozás
This commit is contained in:
@@ -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();
|
|
||||||
|
retVal.Filtered = await filteredQuery.CountAsync();
|
||||||
var list = await query.Skip(dataTablesRequest.Start).Take(dataTablesRequest.Length).ToListAsync();
|
|
||||||
|
// 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)
|
||||||
|
|||||||
Reference in New Issue
Block a user