/// <summary> /// obtém as raízes de uma HierarchicalList /// </summary> /// <param name="lista">HierarchicalList - lista hierárquica a se obterem as raizes</param> /// <returns>HierarchicalList - lista apenas com as raízes</returns> private TFWHierarchicalList _getRoots(TFWHierarchicalList lista) { //return lista.GetRoot(); var orfaos = lista.Where(x => !lista.Select(i => i.Id).Contains(x.IdPai ?? 0)).ToList(); return(new TFWHierarchicalList(orfaos)); }
/// <summary> /// obtém todos os nós de projeto em forma de um TFWHierarchicalList /// deixando pré selecionada a opção que vier como parâmetro em caso de edição da form /// </summary> /// <param name="valor">int? - valor que já estava selecionado ou salvo no Model</param> /// <returns>TFWHierarchicalList - lista para usar em um combo com simulação de hierarquia no estilo</returns> public static TFWHierarchicalList GetNodes(int?valor = null) { TPAContext db = new TPAContext(); TFWHierarchicalList lstUsuario = new TFWHierarchicalList(); TFWHierarchicalList lst = new TFWHierarchicalList(); List <int> idsNodesUsuario = new List <int>(); var usu = HttpContext.Current.User.Identity.Name; var usuLogado = db.Usuarios.Where(u => u.Login == usu).FirstOrDefault(); if (usuLogado != null) { var nodes = usuLogado.NosDoUsuario.ToList(); if (nodes != null && nodes.Any()) { foreach (var n in nodes) { lstUsuario.Add(n.Id, n.Pai != null ? n.Pai.Id : new Nullable <int>(), n.Nome); } } } idsNodesUsuario.AddRange(lstUsuario.Select(s => s.Id).ToList()); foreach (var node in db.ProjectNodes.ToList()) { if (idsNodesUsuario.Contains(node.Id)) { lst.Add(node.Id, node.Pai_Id != null ? node.Pai_Id : new Nullable <int>(), node.Nome); } else { lst.Add(node.Id, node.Pai != null ? node.Pai.Id : new Nullable <int>(), node.Nome, false); } } return(lst); }
private void CarregaProjetos(int?valor = null) { TFWHierarchicalList lstUsuario = new TFWHierarchicalList(); TFWHierarchicalList lst = new TFWHierarchicalList(); List <int> idsNodesUsuario = new List <int>(); var usu = this.User.Identity.Name; var usuLogado = db.Usuarios.Where(u => u.Login == usu).FirstOrDefault(); if (usuLogado != null) { var nodes = usuLogado.NosDoUsuario.ToList(); if (nodes != null && nodes.Any()) { foreach (var n in nodes) { lstUsuario.Add(n.Id, n.Pai != null ? n.Pai.Id : new Nullable <int>(), n.Nome); } } } idsNodesUsuario.AddRange(lstUsuario.Select(s => s.Id).ToList()); foreach (var node in db.ProjectNodes.ToList()) { if (idsNodesUsuario.Contains(node.Id)) { lst.Add(node.Id, node.Pai_Id != null ? node.Pai_Id : new Nullable <int>(), node.Nome); } else { lst.Add(node.Id, node.Pai != null ? node.Pai.Id : new Nullable <int>(), node.Nome, false); } } ViewBag.Nodes = lst; }