Files
monorepo/LCU.API.Internal.Dispatcher/LCU.Api.Internal.DispatcherLib/Extensions/Queryables/SortableFieldsQueryable.cs
T
2026-03-24 15:26:03 -05:00

27 lines
942 B
C#

using System.Text;
using System.Linq;
using System.Linq.Dynamic.Core;
using LCU.Library.Internal.DispatcherModels.Models;
using LCU.Library.Internal.DispatcherModels.Entities;
namespace LCU.Api.Internal.DispatcherLib.Extensions.Queryables;
public static class SortableFieldsQueryable
{
public static IQueryable<Job> OrderBySortableFields(this IQueryable<Job> queryable, Filter filter)
{
if (filter?.SortableFields == null || !filter.SortableFields.Any())
{
return queryable;
}
var orderBy = new StringBuilder();
foreach (var field in filter.SortableFields.OrderBy(sortableField => sortableField.Position))
{
var addedComma = orderBy.ToString() == "" ? "" : " ,";
var desc = field.IsDescending ? " desc" : "";
orderBy.Append($"{addedComma}{field.Field}{desc}");
}
return queryable.OrderBy(orderBy.ToString());
}
}