public virtual ActionResult GetMoods(string moodName, MoodOrder moodOrder = MoodOrder.Rating, int page = 1) { var model = _moodsService.GetMoods(moodName, moodOrder, page, MoodsPageSize); return Json(model, JsonRequestBehavior.AllowGet); }
public IEnumerable<Mood> GetMoods(string moodName, MoodOrder moodOrder, int page, int pageSize) { var query = _moodRepository.All; if (!string.IsNullOrEmpty(moodName)) { query = query.Where(x => x.Name.Contains(moodName)); } IOrderedQueryable<Mood> ordered; switch (moodOrder) { case MoodOrder.Rating: ordered = query.OrderByDescending(o => o.Weight); break; case MoodOrder.New: ordered = query.OrderByDescending(o => o.Created); break; case MoodOrder.Popular: ordered = query.OrderByDescending(o => o.MoodToImages.Count); break; case MoodOrder.Random: ordered = query.OrderBy(o => Guid.NewGuid()); page = 1; break; default: throw new InvalidEnumArgumentException("Invalid enum value for MoodOrder"); } return ordered .TakePage(page, pageSize) .ToList(); }