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)); }