using System.Linq; using Sieve.Services; using SieveUnitTests.Abstractions.Entity; using SieveUnitTests.Entities; namespace SieveUnitTests.Services { public class SieveCustomSortMethods : ISieveCustomSortMethods { public IQueryable Popularity(IQueryable source, bool useThenBy, bool desc) { var result = useThenBy ? ((IOrderedQueryable)source).ThenBy(p => p.LikeCount) : source.OrderBy(p => p.LikeCount) .ThenBy(p => p.CommentCount) .ThenBy(p => p.DateCreated); return result; } public IQueryable Popularity(IQueryable source, bool useThenBy, bool desc) { var result = useThenBy ? ((IOrderedQueryable)source).ThenBy(p => p.LikeCount) : source.OrderBy(p => p.LikeCount) .ThenBy(p => p.CommentCount) .ThenBy(p => p.DateCreated); return result; } public IQueryable Oldest(IQueryable source, bool useThenBy, bool desc) where T : IBaseEntity { var result = useThenBy ? ((IOrderedQueryable)source).ThenByDescending(p => p.DateCreated) : source.OrderByDescending(p => p.DateCreated); return result; } } }