Fixed ItemSorting

This commit is contained in:
JPVenson 2024-11-11 06:21:43 +00:00
parent fb48d0790f
commit c6e67edd86

View File

@ -228,12 +228,14 @@ public sealed class BaseItemRepository(
.Include(e => e.Images) .Include(e => e.Images)
.Include(e => e.LockedFields); .Include(e => e.LockedFields);
dbQuery = TranslateQuery(dbQuery, context, filter); dbQuery = TranslateQuery(dbQuery, context, filter);
// .DistinctBy(e => e.Id); // .DistinctBy(e => e.Id);
if (filter.EnableTotalRecordCount) if (filter.EnableTotalRecordCount)
{ {
result.TotalRecordCount = dbQuery.Count(); result.TotalRecordCount = dbQuery.Count();
} }
dbQuery = ApplyOrder(dbQuery, filter);
if (filter.Limit.HasValue || filter.StartIndex.HasValue) if (filter.Limit.HasValue || filter.StartIndex.HasValue)
{ {
var offset = filter.StartIndex ?? 0; var offset = filter.StartIndex ?? 0;
@ -267,6 +269,7 @@ public sealed class BaseItemRepository(
.Include(e => e.Images) .Include(e => e.Images)
.Include(e => e.LockedFields); .Include(e => e.LockedFields);
dbQuery = TranslateQuery(dbQuery, context, filter); dbQuery = TranslateQuery(dbQuery, context, filter);
dbQuery = ApplyOrder(dbQuery, filter);
if (filter.Limit.HasValue || filter.StartIndex.HasValue) if (filter.Limit.HasValue || filter.StartIndex.HasValue)
{ {
var offset = filter.StartIndex ?? 0; var offset = filter.StartIndex ?? 0;
@ -2110,19 +2113,35 @@ public sealed class BaseItemRepository(
return query; return query;
} }
foreach (var item in orderBy) IOrderedQueryable<BaseItemEntity>? orderedQuery = null;
var firstOrdering = orderBy.FirstOrDefault();
if (firstOrdering != default)
{
var expression = MapOrderByField(firstOrdering.OrderBy, filter);
if (firstOrdering.SortOrder == SortOrder.Ascending)
{
orderedQuery = query.OrderBy(expression);
}
else
{
orderedQuery = query.OrderByDescending(expression);
}
}
foreach (var item in orderBy.Skip(1))
{ {
var expression = MapOrderByField(item.OrderBy, filter); var expression = MapOrderByField(item.OrderBy, filter);
if (item.SortOrder == SortOrder.Ascending) if (item.SortOrder == SortOrder.Ascending)
{ {
query = query.OrderBy(expression); orderedQuery = orderedQuery!.ThenBy(expression);
} }
else else
{ {
query = query.OrderByDescending(expression); orderedQuery = orderedQuery!.ThenByDescending(expression);
} }
} }
return query; return orderedQuery ?? query;
} }
} }