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);
        }
Beispiel #2
0
        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);
        }