public CompanyStructured.Common.Models.Node GetRoot() { CompanyStructuredSample.Repository.Node node = ctx.Node.Where(r => r.ParentId == null).FirstOrDefault(); CompanyStructured.Common.Models.Node comnode = new CompanyStructured.Common.Models.Node { Id = node.Id, name = node.Name, parentId = node.ParentId }; return(comnode); }
//public NodeByParentName GetNodeWithParentName(int id) //{ // CompanyStructured.Common.Models.Node n = Getnode(id); // NodeByParentName nodebyparentname = new NodeByParentName // { // Id = n.Id, // Name = n.name, // DirectParentId = n.parentId, // DirectParentName = n.parentId is null? string.Empty : nodes.Where(r => r.Id == n.parentId).Select(nn => nn.name).FirstOrDefault() // }; // return nodebyparentname; //} public CompanyStructured.Common.Models.Node Getnode(int nodeid) { nodes = new List <Common.Models.Node>(); CompanyStructuredSample.Repository.Node findednode = ctx.Node.Where(r => r.Id == nodeid).Single(); CompanyStructured.Common.Models.Node n = new CompanyStructured.Common.Models.Node { Id = findednode.Id, name = findednode.Name, parentId = findednode.ParentId }; if (n.parentId is null) { return(GetRoot()); } return(n); }
//It's supposed if changed the parentid of given node the parent of their children dont changed public bool Change_the_parent_node_of_a_given_node(parentchange pc) { CompanyStructuredSample.Repository.Node given_node = ctx.Node.SingleOrDefault(nc => nc.Id == pc.id); given_node.ParentId = pc.newparentid; ctx.Node.Attach(given_node); ctx.Entry(given_node).State = System.Data.Entity.EntityState.Modified; try { ctx.SaveChanges(); return(true); } catch { return(false); } //IEnumerable<CompanyStructured.Common.Models.Node> nodes = Get_all_children(n); ////it's needed to change parent of the given node either //nodes.ToList().Add(n); //nodes.ToList().ForEach(x => x.parentId = newparent.Id); //using (var ctx = new CompanyStructuredContext()) //{ // foreach (var item in nodes) // { // CompanyStructuredSample.Repository.Node itemmap = new CompanyStructuredSample.Repository.Node // { // Id = n.Id, // Name = n.name, // ParentId = n.parentId // }; // ctx.Node.Attach(itemmap); // ctx.Entry(itemmap).State = System.Data.Entity.EntityState.Modified; // } // try // { // ctx.SaveChanges(); // return true; // } // catch // { // return false; // } //} }
public CompanyStructuredSample.Repository.Node GetParent(int id) { CompanyStructured.Common.Models.Node n = Getnode(id); CompanyStructured.Common.Models.Node parent; if (n.parentId is null) { parent = GetRoot(); } else { int index = (int)n.parentId; parent = Getnode(index); } CompanyStructuredSample.Repository.Node rparent = new CompanyStructuredSample.Repository.Node { Id = parent.Id, Name = parent.name, ParentId = parent.parentId }; return(rparent); }