Пример #1
0
        /// <summary>
        /// 根据角色id获取所有菜单按钮
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public List <MenuButtonTree> GetAllMenuButtonByRoleId(Guid Id)
        {
            var list = new List <MenuButtonTree>();
            var data = dal.GetAllMenuButtonByRoleId(Id);

            var distinctMenuData = data.GroupBy(d => d.MenuId).Select(d => new DistinctMenu
            {
                Id       = d.Key,
                Name     = d.Max(x => x.MenuName),
                ParentId = d.Max(x => x.ParentId)
            }).ToList();
            var topData = data.Where(d => d.ParentId == null);

            foreach (var item in topData)
            {
                string stateStr   = "closed";
                var    menuButton = new MenuButtonTree();
                var    attributes = new Attributess();
                menuButton.id         = item.MenuId;
                menuButton.state      = stateStr;
                menuButton.text       = item.MenuName;
                attributes.buttonid   = item.ButtonId;
                attributes.menuid     = item.MenuId;
                menuButton.attributes = attributes;
                menuButton.children   = RecursionMenuButton(data, distinctMenuData, item.MenuId, Id, stateStr);
                list.Add(menuButton);
            }
            return(list);
        }
Пример #2
0
        private List <MenuTree> RecursionMenuButton(List <MenuButtonList> data, List <DistinctMenu> menuData, Guid menuId, Guid roleId, string stateStr)
        {
            var list      = new List <MenuTree>();
            var childMenu = menuData.Where(d => d.ParentId == menuId);

            foreach (var menu in childMenu)
            {
                var buttonList = new List <ButtonTree>();
                var menuButton = new MenuTree();
                var attributes = new Attributess();
                menuButton.id         = menu.Id;
                menuButton.state      = stateStr;
                menuButton.text       = menu.Name;
                attributes.buttonid   = null;
                attributes.menuid     = menu.Id;
                menuButton.attributes = attributes;
                var buttonTree = data.Where(d => d.MenuId == menu.Id && d.ButtonId.HasValue);
                if (buttonTree.Any())
                {
                    foreach (var button in buttonTree)
                    {
                        var buttons         = new ButtonTree();
                        var buttonAttribute = new Attributess();
                        buttons.id               = roleId;
                        buttons.text             = button.ButtonName;
                        buttons.@checked         = button.Checked;
                        buttons.attributes       = buttonAttribute;
                        buttonAttribute.buttonid = button.ButtonId;
                        buttonAttribute.menuid   = button.MenuId;
                        buttonList.Add(buttons);
                    }
                }
                menuButton.children = buttonList;
                list.Add(menuButton);
            }
            return(list);
        }