public async Task <IEnumerable <Tag> > GetAllTagsAsync(TagSortKind sort) { var query = _refsContext.Tags.Include("Statistics").AsNoTracking(); query = QueryUtil.AppendQueryForTagSort(query, sort); var storedTags = await query.ToArrayAsync(); return(storedTags); }
public async Task <ActionResult> NarrowIndex(TagSortKind sort = TagSortKind.RefListCountDescending) { var tags = await _tagHandler.GetAllTagsAsync(sort); var vm = new IndexPageViewModel() { Tags = Mapper.Map <ICollection <TagViewModel> >(tags), }; return(JsonNet(vm, JsonRequestBehavior.AllowGet)); }
public static IQueryable <Tag> AppendQueryForTagSort(IQueryable <Tag> query, TagSortKind sort) { switch (sort) { case TagSortKind.RefListCountDescending: query = query.OrderByDescending(t => t.Statistics.RefListCount).ThenBy(t => t.Name); break; case TagSortKind.FavoriteCountDescending: query = query.OrderByDescending(t => t.Statistics.FavoriteCount).ThenBy(t => t.Name); break; case TagSortKind.NameAscending: query = query.OrderBy(t => t.Name); break; } return(query); }