示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }
示例#4
0
        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);
        }