using BuddyFinance.Common.Extensions; using System.Collections.Generic; using System.Linq; namespace BuddyFinance.WebApi.Models.DataTables { public abstract class Results { private static IEnumerable Order(IEnumerable results, Request request) where T : Integration.Models.Administration.ActivityLog { if (request.order == null) return results; var columnIndex = request.order[0].column; var sortDirection = request.order[0].dir; var columnName = request.columns[columnIndex].data?.AsPropertyName(); if (columnName == null) return results; var prop = typeof(T).GetProperty(columnName); return sortDirection == "asc" ? results.OrderBy(prop.GetValue) : results.OrderByDescending(prop.GetValue); } public static IList PageResults(IEnumerable results, Request request) where T : Integration.Models.Administration.ActivityLog { var skip = request.start; var pageSize = request.length; var orderedResults = Order(results, request); return pageSize > 0 ? orderedResults.Skip(skip).Take(pageSize).ToList() : orderedResults.ToList(); } } }