public async Task <ActionResult <Domaintest> > GetDomain(int id) { object domain = (from x in _context.Domains.Where(x => x.DomainId == id) select new { Id = x.DomainId, Name = x.DomainName, Type = x.DomainTypeId, Parent = x.Parentt, Path = x.Level.ToString(), HighLevel = x.HighLevel }).FirstOrDefault(); //var type = domain.GetType(); //var strNode = (string) type.GetProperty("Path").GetValue(domain, null); dynamic dyn = domain; int myId = dyn.Id; string strName = dyn.Name; int iType = dyn.Type; string strParent = dyn.Parent; string strNode = dyn.Path; //int hLevel = dyn.HighLevel; SqlHierarchyId node = SqlHierarchyId.Parse(dyn.Path); int hLevel = (int)node.GetLevel(); Domaintest result = new Domaintest(myId, strName, iType, strParent, strNode, hLevel); return(result); }
public async Task <ActionResult <List <Domaintest> > > GetDescendants(string name) { object mainDomain = (from x in _context.Domains.Where(x => x.DomainName == name) select new { Id = x.DomainId, Name = x.DomainName, Type = x.DomainTypeId, Parent = x.Parentt, Path = x.Level.ToString(), HighLevel = x.HighLevel }).FirstOrDefault(); dynamic mainDyn = mainDomain; int hL = mainDyn.HighLevel; SqlHierarchyId mainNode = SqlHierarchyId.Parse(mainDyn.Path); object domain = (from x in _context.Domains.Where(x => x.HighLevel > hL) select new { Id = x.DomainId, Name = x.DomainName, Type = x.DomainTypeId, Parent = x.Parentt, Path = x.Level.ToString(), HighLevel = x.HighLevel }).ToList(); //var type = domain.GetType(); //var strNode = (string) type.GetProperty("Path").GetValue(domain, null); List <Domaintest> resultList = new List <Domaintest>(); dynamic listDyn = domain; foreach (var dyn in listDyn) { int myId = dyn.Id; string strName = dyn.Name; int iType = dyn.Type; string strParent = dyn.Parent; string strNode = dyn.Path; int hLevel = dyn.HighLevel; SqlHierarchyId node = SqlHierarchyId.Parse(dyn.Path); Domaintest result = new Domaintest(myId, strName, iType, strParent, strNode, hLevel); if (node.IsDescendantOf(mainNode)) { resultList.Add(result); } } return(resultList); }
public async Task <ActionResult <Domain> > PostDomain(Domaintest domain) { Domain toInsert = new Domain(); toInsert.DomainName = domain.DomainName; toInsert.DomainTypeId = domain.DomainTypeId; toInsert.Parentt = domain.Parentt; toInsert.HighLevel = domain.HighLevel; //if (domain.Parentt == "N/A") //{ // SqlString level = new SqlString ( "/1/" ); // toInsert.Level = SqlHierarchyId.Parse("/1/"); //}else //{ // //SqlString level = new SqlString("/1/2/"); // toInsert.Level = SqlHierarchyId.Parse("/1/3/"); //} SqlHierarchyId id1 = SqlHierarchyId.Parse(domain.Path); using (var stream = new MemoryStream()) { using (var writer = new BinaryWriter(stream)) { id1.Write(writer); toInsert.Level = stream.ToArray(); } } _context.Domains.Add(toInsert); try { await _context.SaveChangesAsync(); } catch (Exception ex) { } return(CreatedAtAction("GetDomain", new { id = toInsert.DomainId }, toInsert)); }
public async Task <ActionResult <List <Domaintest> > > GetDomains() { object domain = (from x in _context.Domains select new { Id = x.DomainId, Name = x.DomainName, Type = x.DomainTypeId, Parent = x.Parentt, Path = x.Level.ToString(), HighLevel = x.HighLevel }).ToList(); //var type = domain.GetType(); //var strNode = (string) type.GetProperty("Path").GetValue(domain, null); List <Domaintest> resultList = new List <Domaintest>(); dynamic myDyn = domain; foreach (var dyn in myDyn) { int myId = dyn.Id; string strName = dyn.Name; int iType = dyn.Type; string strParent = dyn.Parent; string strNode = dyn.Path; int hLevel = dyn.HighLevel; SqlHierarchyId node = SqlHierarchyId.Parse(dyn.Path); Domaintest result = new Domaintest(myId, strName, iType, strParent, strNode, hLevel); resultList.Add(result); } return(resultList); }