All pastes #777434 Raw Edit

Someone

public text v1 · immutable
·published 2007-11-16 20:25 UTC
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"));
				}
			}
		}