27 lines
942 B
C#
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());
|
|
}
|
|
} |