private void recursiveParentSearch(IEnumerable <IPublishedContent> parents, string[] parentAliases, string[] childAliases) { foreach (IPublishedContent node in parents) { foreach (var alias in parentAliases) { if (node.ContentType.Alias.Equals(alias)) { if (IsNodeTreesValid(node.GetKey())) { var documentType = contentTypeService.GetContentType(node.DocumentTypeId); NodeTreeModel nodeModel = new NodeTreeModel(node.Id, node.GetKey(), node.Name, node.Url, documentType.Icon, false); nodeModel.childs = recursiveChildSearch(node, parentAliases, childAliases); if (childAliases.Contains(node.DocumentTypeAlias)) { nodeModel.isAllowed = true; } nodes.Add(nodeModel); } } } if (node.Children.Count() > 0) { recursiveParentSearch(node.Children, parentAliases, childAliases); } } }
private List <NodeTreeModel> recursiveChildSearch(IPublishedContent parent, string[] parentAliases, string[] childAliases) { List <NodeTreeModel> List = new List <NodeTreeModel>(); foreach (var child in parent.Children) { var documentType = contentTypeService.GetContentType(child.DocumentTypeId); bool isParent = false; NodeTreeModel nodeModel = new NodeTreeModel(child.Id, child.GetKey(), child.Name, child.Url, documentType.Icon, false); foreach (var alias in parentAliases) { if (child.ContentType.Alias.Equals(alias)) { isParent = true; } } foreach (var alias in childAliases) { if (child.ContentType.Alias.Equals(alias)) { nodeModel.isAllowed = true; } } if (child.Children.Count() > 0) { nodeModel.childs = recursiveChildSearch(child, parentAliases, childAliases); } if (nodeModel.isAllowed || (nodeModel.childs.Count > 0 && !isParent)) { List.Add(nodeModel); } } return(List); }
private List <NodeTreeModel> recursiveTrees(IEnumerable <IPublishedContent> nodes) { List <NodeTreeModel> nodeList = new List <NodeTreeModel>(); foreach (IPublishedContent child in nodes) { var documentType = contentTypeService.GetContentType(child.DocumentTypeId); NodeTreeModel nodeModel = new NodeTreeModel(child.Id, child.GetKey(), child.Name, child.Url, documentType.Icon, true); nodeList.Add(nodeModel); if (child.Children.Count() > 0) { nodeModel.childs = recursiveTrees(child.Children); } } return(nodeList); }