rendered paste body public PagerList<File> FindAll(string game, string category, string author, string brand, bool pursuit, bool approved, string keyword, SortFileBy sort, SortOrderBy order, int page, int limit)
{
DetachedCriteria query = DetachedCriteria.For(typeof(File));
AddQuery(query, game, category, author, brand, pursuit, approved, keyword);
int count = Count(game, category, author, brand, pursuit, approved, keyword);
if (page <= 0)
{
page = 1;
}
int start = (page * limit) - limit;
AddOrder(query, sort, order);
return new PagerList<File>(
_repository.FindAll(start, limit, query), page, limit, count
);
}
public void AddQuery(DetachedCriteria query, string game, string category, string author, string brand, bool pursuit, bool approved, string keyword)
{
if (game != null)
{
query.CreateCriteria("Game").Add(
Expression.Eq("UrlName", game)
);
}
if (category != null)
{
if (category.Contains(","))
{
category = category.Replace(",", " ");
}
query.CreateCriteria("Category").Add(
Expression.Eq("Name", category)
);
}
if (author != null)
{
if (author.Contains(","))
{
author = author.Replace(",", " ");
}
query.Add(
Expression.Eq("AuthorName", author)
);
}
if (brand != null)
{
if (brand.Contains(","))
{
brand = brand.Replace(",", " ");
}
query.CreateCriteria("CarFeature").CreateCriteria("Brand").Add(
Expression.Eq("Name", brand)
);
}
if (pursuit)
{
query.CreateCriteria("CarFeature").Add(
Expression.Eq("Pursuit", true)
);
}
query.Add(Expression.Eq("Approved", approved));
if (!string.IsNullOrEmpty(keyword))
{
query.Add(Expression.Like("Name", keyword, MatchMode.Anywhere));
}
}
public void AddOrder(DetachedCriteria query, SortFileBy sort, SortOrderBy order)
{
if (sort == SortFileBy.Updated)
{
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("DateUpdated"));
}
else
{
query.AddOrder(Order.Desc("DateUpdated"));
}
}
else if (sort == SortFileBy.Name)
{
if (order == SortOrderBy.Asc)
{
query.CreateCriteria("CarFeature").CreateCriteria("Brand").AddOrder(
Order.Asc("Name")
);
query.AddOrder(Order.Asc("Name"));
}
else
{
query.CreateCriteria("CarFeature").CreateCriteria("Brand").AddOrder(
Order.Desc("Name")
);
query.AddOrder(Order.Desc("Name"));
}
}
else if (sort == SortFileBy.Downloads)
{
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("Downloads"));
}
else
{
query.AddOrder(Order.Desc("Downloads"));
}
}
else if (sort == SortFileBy.DownloadsWeek)
{
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("DownloadsWeek"));
}
else
{
query.AddOrder(Order.Desc("DownloadsWeek"));
}
}
else if (sort == SortFileBy.Views)
{
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("Views"));
}
else
{
query.AddOrder(Order.Desc("Views"));
}
}
else if (sort == SortFileBy.ViewsWeek)
{
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("ViewsWeek"));
}
else
{
query.AddOrder(Order.Desc("ViewsWeek"));
}
}
else if (sort == SortFileBy.LastComment)
{
query.Add(Expression.GtProperty("LastComment", "DateCreated"));
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("LastComment"));
}
else
{
query.AddOrder(Order.Desc("LastComment"));
}
}
else if (sort == SortFileBy.Today)
{
DateTime date = DateTime.Now;
query.Add(Expression.Ge("DateCreated", date.AddDays(-1)));
query.Add(Expression.Le("DateCreated", date.AddDays(1)));
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("DateCreated"));
}
else
{
query.AddOrder(Order.Desc("DateCreated"));
}
}
else if (sort == SortFileBy.Yesterday)
{
DateTime date = DateTime.Now;
query.Add(Expression.Ge("DateCreated", date.AddDays(-2)));
query.Add(Expression.Le("DateCreated", date.AddDays(-1)));
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("DateCreated"));
}
else
{
query.AddOrder(Order.Desc("DateCreated"));
}
}
else if (sort == SortFileBy.Week)
{
DateTime date = DateTime.Now;
query.Add(Expression.Ge("DateCreated", date.AddDays(-8)));
query.Add(Expression.Le("DateCreated", date));
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("DateCreated"));
}
else
{
query.AddOrder(Order.Desc("DateCreated"));
}
}
else
{
if (order == SortOrderBy.Asc)
{
query.AddOrder(Order.Asc("DateCreated"));
}
else
{
query.AddOrder(Order.Desc("DateCreated"));
}
}
}