//const int CategoriesPostsLength = 3; private async Task <CategoriesViewModel> Init(string categoryKind) { Models.CategoriesViewModel model = new Models.CategoriesViewModel(); var categoryModels = new List <IndexModel>(); model.Footer = await GetFooter(null); using (Profiler.StepStatic("Get Category Posts")) { //var uncachedTopFeaturePostKeys = new List<string>(); var categories = await GetCategoryList(categoryKind); if (categoryKind == "ministries") { categories = categories.Where(m => ((Ministry)m).ParentMinistryKey == null).OrderByDescending(m => m.Name == "Office of the Premier"); } foreach (var category in categories) { //TODO: Choose post type based on 'type' supplied to controller. //List<Post> posts = new List<Post>(); //IndexModel.AddTopPostKeyToLoad(category, uncachedTopFeaturePostKeys); //IndexModel.AddFeaturePostKeyToLoad(category, uncachedTopFeaturePostKeys); //var keys = posts.Select(e => e.Key).Where(e => e != null).ToList(); //posts.AddRange(await category.Default.TakeLastAsync(3 - keys.Count(), 0, keys)); var releaseCount = 1; if (categoryKind == "sectors") { releaseCount = 3; } var latestNews = await Repository.GetLatestPostsAsync(category, releaseCount, null, GetIndexFilter(category)); var categoryModel = new IndexModel(category, latestNews); categoryModels.Add(categoryModel); /*await PostModel.CreateAsync(await category.DefaultProperty.TakeLastAsync(CategoriesPostsLength)); * foreach (var post in last) * { * if (posts.Count == CategoriesPostsLength) * break; * * if (posts.Any(e => e != null && e.Key == post.Key)) * continue; * * posts.Add(post); * }*/ //categoryPosts.Add(category, last.Take(CategoriesPostsLength)); } await LoadAsync(model, categoryModels); model.Categories = categoryModels; } return(model); }
private async Task <CategoriesViewModel> Init() { Models.CategoriesViewModel model = new Models.CategoriesViewModel(); await LoadAsync(model); model.Footer = await GetFooter(null); return(model); }