Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface IResultFilter<T>
- {
- IQueryable<T> Apply(IQueryable<T> qry);
- IResultFilter<T> GetFilter(HttpRequestBase request);
- }
- public class AlbumFilter : IResultFilter<Album.Album>
- {
- public bool? HasImages { get; set; }
- public ShortBy? SortBy { get; set; }
- public bool? OrderByDesc { get; set; }
- public IQueryable<Album.Album> Apply(IQueryable<Album.Album> qry)
- {
- if (HasImages != null && HasImages == true)
- qry = qry.Where(x => x.Images.Count > 0);
- if (SortBy != null)
- {
- bool desc = (OrderByDesc == null || OrderByDesc == false) ? false : true;
- switch (SortBy)
- {
- case ShortBy.Created:
- qry = desc ? qry.OrderByDescending(x => x.Created) : qry.OrderBy(x => x.Created);
- break;
- case ShortBy.LastEdit:
- qry = desc ? qry.OrderByDescending(x => x.LastEdit) : qry.OrderBy(x => x.LastEdit);
- break;
- case ShortBy.Views:
- qry = desc ? qry.OrderByDescending(x => x.Views) : qry.OrderBy(x => x.Views);
- break;
- case ShortBy.Images:
- qry = desc ? qry.OrderByDescending(x => x.Images.Count) : qry.OrderBy(x => x.Images.Count);
- break;
- }
- }
- return qry;
- }
- public IResultFilter<Album.Album> GetFilter(HttpRequestBase request)
- {
- return new AlbumFilter();
- }
- public enum ShortBy
- {
- Created,
- LastEdit,
- Views,
- Images
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement