public async Task <List <PageMenuDto> > GetMenuDtoByRole(int role) { List <PageMenuDto> result = new List <PageMenuDto>(); var menu = await GetMenuByRole(role); if (menu != null) { foreach (var itemMenu in menu) { PageMenuDto resultItemMenu = new PageMenuDto(); resultItemMenu.Icon = itemMenu.Icon; resultItemMenu.Id = itemMenu.Id; resultItemMenu.Role = itemMenu.Role; resultItemMenu.Title = itemMenu.Title; resultItemMenu.Url = itemMenu.Url; List <Children> resultChild = new List <Children>(); var child = await GetChildMenuByParent(itemMenu.Id); if (child != null) { foreach (var itemChild in child) { Children itemChildDto = new Children(); itemChildDto.Id = itemChild.Id; itemChildDto.Title = itemChild.Title; itemChildDto.Url = itemChild.Url; itemChildDto.PageMenuId = itemChild.PageMenuId; itemChildDto.Icon = itemChild.Icon; resultChild.Add(itemChildDto); } resultItemMenu.Children = resultChild; } result.Add(resultItemMenu); } } return(result); }
private string BuildMenuItem(PageMenuDto pageMenu, BuildMenuOption option = null) { var menuItem = ""; var page = AccessiblePagesForUser.FirstOrDefault(x => x.ID == pageMenu.PageID); if (page == null) { return(menuItem); } var listItemClass = LISTITEMCLASS; if (option != null && !option.SelectedListItemClass.IsNullOrEmpty() && option.CurrentControllerName == page.Controller) { listItemClass += SELECTEDLISTITEMCLASS; } if (page.Area.IsNullOrEmpty() && page.Controller.IsNullOrEmpty()) { menuItem += string.Format("<li{0}><a{1} href=\"{2}\">{3}</a>", listItemClass, HYPERLINKCLASS, page.Action, page.Title); } else { menuItem += string.Format("<li{0}><a{1} href=\"{2}\">{3}</a>", listItemClass, HYPERLINKCLASS, Url.Action(page.Action, page.Controller, new { area = page.Area }), page.Title); } if (PageMenus.Any(x => x.ParentID == pageMenu.ID && x.ID != pageMenu.ID)) { menuItem += string.Format("<ul{0}>", SUBLISTCLASS); var subMenuItems = PageMenus.Where(x => x.ParentID == pageMenu.ID && x.ID != pageMenu.ID); menuItem = subMenuItems.Aggregate(menuItem, (current, item) => current + BuildMenuItem(item, option)); menuItem += "</ul>"; } menuItem += "</li>"; return(menuItem); }