public ActionResult Index(PagerParameters pagerParameters)
        {
            if (AllowedHierarchyTypes == null)
            {
                return(new HttpUnauthorizedResult(TerritoriesUtilities.Default401HierarchyMessage));
            }

            var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters);

            HierarchyAdminIndexViewModel model;

            if (AllowedHierarchyTypes.Any())
            {
                var typeNames = AllowedHierarchyTypes.Select(ctd => ctd.Name).ToArray();

                var hierarchies = _territoriesService
                                  .GetHierarchiesQuery(typeNames)
                                  .Slice(pager.GetStartIndex(), pager.PageSize);

                var pagerShape = _shapeFactory
                                 .Pager(pager)
                                 .TotalItemCount(_territoriesService.GetHierarchiesQuery(typeNames).Count());

                var entries = hierarchies
                              .Select(CreateEntry)
                              .ToList();

                model = new HierarchyAdminIndexViewModel {
                    HierarchyEntries      = entries,
                    AllowedHierarchyTypes = AllowedHierarchyTypes.ToList(),
                    Pager = pagerShape
                };
            }
            else
            {
                //No ContentType has been defined that contains the TerritoryHierarchyPart
                var pagerShape = _shapeFactory
                                 .Pager(pager)
                                 .TotalItemCount(0);

                model = new HierarchyAdminIndexViewModel {
                    HierarchyEntries      = new List <HierarchyIndexEntry>(),
                    AllowedHierarchyTypes = AllowedHierarchyTypes.ToList(),
                    Pager = pagerShape
                };
                //For now we handle this by simply pointing out that the user should create types
                AddModelError("", T("There are no Hierarchy types that the user is allowed to manage."));
            }

            return(View(model));
        }
        public void ParameterlessGetHierarchiesQueryReturnsAllLatestVersions()
        {
            var created = AddSampleHierarchiesData();
            //verify draft vs published

            var gotten = _territoriesService.GetHierarchiesQuery().List();

            Assert.That(gotten.Count() == created.Count());
            Assert.That(gotten
                        .Select(pa => pa.ContentItem)
                        .Where(ci => ci.IsPublished())
                        .Count(), Is.EqualTo(2));
            Assert.That(gotten
                        .Select(pa => pa.ContentItem)
                        .Where(ci => !ci.IsPublished())
                        .Count(), Is.EqualTo(2));
        }