//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);
        }
Esempio n. 2
0
        private async Task <CategoriesViewModel> Init()
        {
            Models.CategoriesViewModel model = new Models.CategoriesViewModel();
            await LoadAsync(model);

            model.Footer = await GetFooter(null);

            return(model);
        }