Example #1
0
        public ActionResult NavigationSide()
        {
            var rootId     = 0;
            var categories = CacheHelper.Categories.ToList();

            var categoryTree = categories.OrderBy(x => x.Parent).ThenBy(x => x.Ordering).ToList().GenerateTree(x => x.ID, x => x.Parent, rootId);

            var contentPages = CacheHelper.ContentPages.Where(x => x.Published).OrderBy(x => x.Ordering);

            var model = new NavigationSideModel()
            {
                CategoryTree = categoryTree,
                ContentPages = contentPages
            };

            return(View("_NavigationSide", model));
        }
        public ActionResult NavigationSide()
        {
            var rootId     = 0;
            var categories = CacheHelper.Categories.ToList();

            var categoryTree = categories.OrderBy(x => x.Parent).ThenBy(x => x.Ordering).ToList().GenerateTree(x => x.ID, x => x.Parent, rootId);

            // Save content page user access roles
            var contentPages = CacheHelper.ContentPages.Where(x => x.Published).OrderBy(x => x.Ordering).ToList();

            foreach (var contentPage in contentPages)
            {
                var contentPageRoles = _contentPageRoleService.Query(x => x.ContentPageID == contentPage.ID).Select();
                contentPage.ContentPageRoles = contentPageRoles.ToList();
            }

            // Get content pages that current user is authorised to access
            var userRoleIds = new List <string>();

            if (User != null && User.Identity.IsAuthenticated)
            {
                var userId        = User.Identity.GetUserId();
                var userRoleNames = UserManager.GetRoles(userId).ToList();
                foreach (var userRoleName in userRoleNames)
                {
                    userRoleIds.Add(RoleManager.FindByName(userRoleName).Id);
                }
                contentPages = contentPages.Where(x => (x.ContentPageRoles.Count < 1) || x.ContentPageRoles.Any(sm => userRoleIds.Contains(sm.AspNetRoleID))).ToList();
            }
            else
            {
                contentPages = contentPages.Where(x => (x.ContentPageRoles.Count < 1)).ToList();
            }

            var model = new NavigationSideModel()
            {
                CategoryTree = categoryTree,
                ContentPages = contentPages
            };


            return(View("_NavigationSide", model));
        }