void AddChildNode(List <PermissionDto> perms, PermissionNodeViewModel currentNode, RoleDto role) { var childList = perms.FindAll(t => t.Name.StartsWith(currentNode.Id + ".") && t.Name.Replace(currentNode.Id + ".", "").Contains(".") == false); foreach (var c in childList) { PermissionNodeViewModel pn = new PermissionNodeViewModel { Id = c.Name, Text = c.DisplayName }; pn.State.Checked = HasPermission(c, role); AddChildNode(perms, pn, role); currentNode.Nodes.Add(pn); } }
private List <PermissionNodeViewModel> GetPermissionTree(IReadOnlyList <Roles.Dto.PermissionDto> permissions, RoleDto role) { List <PermissionNodeViewModel> list = new List <PermissionNodeViewModel>(); List <PermissionDto> listAll = new List <PermissionDto>(); foreach (PermissionDto p in permissions) { listAll.Add(p); } var firstLevelList = listAll.FindAll(t => t.Name.Contains(".") == false); foreach (var p in firstLevelList) { PermissionNodeViewModel pn = new PermissionNodeViewModel { Id = p.Name, Text = p.DisplayName }; pn.State.Checked = HasPermission(p, role); AddChildNode(listAll, pn, role); list.Add(pn); } return(list); }