private List <MenuTree> RecursionMenuButton(List <RoleMenuButtonList> data, List <DistinctMenu> menuData, Guid menuId, Guid roleId) { 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 MenuButtonAttributes(); menuButton.Id = menu.Id; menuButton.Title = menu.Name; attributes.MenuButtonId = null; 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 MenuButtonAttributes(); buttons.Id = roleId; buttons.Title = button.ButtonName; buttons.Checked = button.Checked; buttons.Attributes = buttonAttribute; buttonAttribute.MenuButtonId = button.MenuButtonId; buttonList.Add(buttons); } } menuButton.Children = buttonList; list.Add(menuButton); } return(list); }
private List <Tree> GetAllMenuButtonByRoleIdSelect(List <RoleMenuButtonList> data, Guid id) { List <Tree> list = new List <Tree>(); 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) { var menuButton = new Tree(); var attributes = new MenuButtonAttributes(); menuButton.Id = item.MenuId; menuButton.Title = item.MenuName; attributes.MenuButtonId = null; menuButton.Attributes = attributes; menuButton.Spread = true; menuButton.Children = RecursionMenuButton(data, distinctMenuData, item.MenuId, id); list.Add(menuButton); } return(list); }