SHARE
TWEET

Untitled

a guest Aug 12th, 2017 51 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     public interface IResultFilter<T>
  2.     {
  3.         IQueryable<T> Apply(IQueryable<T> qry);
  4.         IResultFilter<T> GetFilter(HttpRequestBase request);
  5.     }
  6.     public class AlbumFilter : IResultFilter<Album.Album>
  7.     {
  8.         public bool? HasImages { get; set; }
  9.         public ShortBy? SortBy { get; set; }
  10.         public bool? OrderByDesc { get; set; }
  11.  
  12.         public IQueryable<Album.Album> Apply(IQueryable<Album.Album> qry)
  13.         {
  14.             if (HasImages != null && HasImages == true)
  15.                 qry = qry.Where(x => x.Images.Count > 0);
  16.             if (SortBy != null)
  17.             {
  18.                 bool desc = (OrderByDesc == null || OrderByDesc == false) ? false : true;
  19.                 switch (SortBy)
  20.                 {
  21.                     case ShortBy.Created:
  22.                         qry = desc ? qry.OrderByDescending(x => x.Created) : qry.OrderBy(x => x.Created);
  23.                         break;
  24.                     case ShortBy.LastEdit:
  25.                         qry = desc ? qry.OrderByDescending(x => x.LastEdit) : qry.OrderBy(x => x.LastEdit);
  26.                         break;
  27.                     case ShortBy.Views:
  28.                         qry = desc ? qry.OrderByDescending(x => x.Views) : qry.OrderBy(x => x.Views);
  29.                         break;
  30.                     case ShortBy.Images:
  31.                         qry = desc ? qry.OrderByDescending(x => x.Images.Count) : qry.OrderBy(x => x.Images.Count);
  32.                         break;
  33.                 }
  34.             }
  35.             return qry;
  36.         }
  37.  
  38.         public IResultFilter<Album.Album> GetFilter(HttpRequestBase request)
  39.         {
  40.             return new AlbumFilter();
  41.         }
  42.  
  43.         public enum ShortBy
  44.         {
  45.             Created,
  46.             LastEdit,
  47.             Views,
  48.             Images
  49.         }
  50.     }
RAW Paste Data
Top