public List <TreeExtensions.ITree <Posts> > GetThreadPosts(string threadId) { List <Posts> all = forumDbContext.Posts.Include(x => x.Parent).Where(p => p.ThreadId == threadId).ToList(); TreeExtensions.ITree <Posts> virtualRootNode = all.ToTree((parent, child) => child.ParentId == parent.PostId); List <TreeExtensions.ITree <Posts> > rootLevelPostsWithSubTree = virtualRootNode.Children.ToList(); //List<TreeExtensions.ITree<Posts>> flattenedListOfPostNodes = virtualRootNode.Children.Flatten(node => node.Children).ToList(); return(rootLevelPostsWithSubTree); }
/// <summary> /// Obtêm os clientes relacionados entre sí /// </summary> /// <returns>Retorna a lista de clientes e seus companheiros que vivem junto com todos os seus dados</returns> public TreeExtensions.ITree <Client> GetEntitiesTree() { var clients = _contextEntity.Client.AsNoTracking() .AsQueryable() .Include(x => x.Addresses) .Include(x => x.Phones) .ToList(); TreeExtensions.ITree <Client> virtualRootNode = clients.ToTree((parent, child) => child.PrincipalId == parent.Id); return(virtualRootNode); }
public static List <T> GetParents <T>(this TreeExtensions.ITree <T> node, List <T> parentNodes = null) where T : class { while (true) { parentNodes ??= new List <T>(); if (node?.Parent?.Data == null) { return(parentNodes); } parentNodes.Add(node.Parent.Data); node = node.Parent; } }
private async Task <IEnumerable <TreeExtensions.ITree <CategoryViewModel> > > LoadAll() { var result = new List <TreeExtensions.ITree <CategoryViewModel> >() { null }; var entities = await _dataAdminService.GetCategories(null, null).ConfigureAwait(false); var viewModels = AppRuntimeContext.Current.Adapt <List <CategoryViewModel> >(entities); TreeExtensions.ITree <CategoryViewModel> virtualRootNode = viewModels.ToTree((parent, child) => child.ParentId == parent.Id.ToString(), x => x.Name); result.AddRange(virtualRootNode.Children); return(result); }
public async Task <IEnumerable <HierarchicalCategory> > GetHierarchicalCategory(List <Guid> categoriesToBeExcluded) { List <Category> entities; if (categoriesToBeExcluded.IsNotNullOrEmpty()) { entities = _categoryRepository.FindAll(DomainObjectSpecifications.IdNotIn <Category>(categoriesToBeExcluded), x => x.Parent).ToList(); } else { entities = _categoryRepository.FindAll(x => x.Parent).ToList(); } TreeExtensions.ITree <Category> virtualRootNode = entities.ToTree((parent, child) => child.ParentId == parent.Id, x => x.Name); List <TreeExtensions.ITree <Category> > flattenedNodes = virtualRootNode.Children.Flatten(node => node.Children).ToList(); return(flattenedNodes.To <List <HierarchicalCategory> >()); }
private static CascaderNode Convert(TreeExtensions.ITree <Category> src) { var node = new CascaderNode() { Value = src.Data.Id.ToString(), Label = src.Data.Name }; if (src.Children?.Count > 0) { var children = new List <CascaderNode>(); foreach (var child in src.Children) { children.Add(Convert(child)); } node.Children = children; } return(node); }
private static CascaderNode Convert(TreeExtensions.ITree <CategoryDto> src, Guid current) { var node = new CascaderNode() { Value = src.Data.Id.ToString(), Label = src.Data.Name, Disabled = src.Data.Id == current || src.GetParents <CategoryDto>().Any(x => x.Id == current) }; if (src.Children?.Count > 0) { var children = new List <CascaderNode>(); foreach (var child in src.Children) { children.Add(Convert(child, current)); } node.Children = children; } return(node); }
public IEnumerable <UserDto> GetUsersByNameByTree([FromQuery] RequestUserByName model) { try { var all = _context.Users.AsNoTracking().Include(c => c.UserContact).Include(t => t.Tags).ToList(); TreeExtensions.ITree <User> virtualRootNode = all.ToTree((parent, child) => child.ManagerId == parent.Id); List <TreeExtensions.ITree <User> > rootLevelFoldersWithSubTree = virtualRootNode.Children.ToList(); List <TreeExtensions.ITree <User> > flattenedListOfFolderNodes = virtualRootNode.Children.Flatten(node => node.Children).ToList(); TreeExtensions.ITree <User> userNode = flattenedListOfFolderNodes.First(node => node.Data.UserContact.FirstName == model.FirstName || node.Data.UserContact.LastName == model.LastName); List <User> usr = new List <User>(); usr.Add(userNode.Data); usr.AddRange(GetParents(userNode)); //var users = _mapper.ProjectTo<UserDto>(usr.AsQueryable()); var users = _mapper.Map <List <UserDto> >(usr); return(users); } catch (Exception e) { _logger.LogError(e.Message); return(new List <UserDto>()); } }
private static List <CascaderNode> Convert(List <CategoryDto> src) { TreeExtensions.ITree <CategoryDto> virtualRootNode = src.ToTree((parent, child) => child.ParentId == parent.Id, x => x.Name); return(Enumerable.Select(virtualRootNode.Children, x => Convert(x)).ToList()); }