Пример #1
0
        public static List<CategorySummary> GetCategoryAncestry(IDnaDataReaderCreator readerCreator, int categoryId)
        {
            List<CategorySummary> categorySummaries = new List<CategorySummary>();

            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getancestry"))
            {
                reader.AddParameter("catID", categoryId);
                reader.Execute();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        CategorySummary newCategorySummary = new CategorySummary();
                        newCategorySummary.NodeID = reader.GetInt32NullAsZero("AncestorID");
                        newCategorySummary.Type = reader.GetInt32NullAsZero("Type");
                        newCategorySummary.Name = reader.GetStringNullAsEmpty("DisplayName");
                        newCategorySummary.TreeLevel = reader.GetInt32NullAsZero("TreeLevel");
                        newCategorySummary.StrippedName = StringUtils.StrippedName(reader.GetStringNullAsEmpty("DisplayName"));                        
                        if (reader.DoesFieldExist("RedirectNodeID") && !reader.IsDBNull("RedirectNodeID"))
                        {
                            newCategorySummary.RedirectNodeID = reader.GetInt32NullAsZero("RedirectNodeID");
                        }
                        categorySummaries.Add(newCategorySummary);
                    }
                }
            }

            // the returned instance may have 0 items in the case of the root categories, but this is OK
            return categorySummaries;
        }
Пример #2
0
 public static CategorySummary CreateChildCategories()
 {
     CategorySummary returnValue = new CategorySummary()
     {
         AliasCount = 1,
         ArticleCount = 1,
         Name = "Name",
         NodeCount = 1,
         NodeID = 1,
         SortOrder = 1,
         StrippedName = "",
         SubNodes = new List<CategorySummarySubnode>()
         {
             new CategorySummarySubnode() 
             {
                  ID = 1,
                  Type = 1,
                  Value = "value"
             }
         },
         Type = 1
     };
     return returnValue;
 }
Пример #3
0
        public static List<CategorySummary> GetChildCategories(IDnaDataReaderCreator readerCreator, int nodeID)
        {
            List<CategorySummary> childCategories = new List<CategorySummary>();
            using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("getsubjectsincategory"))
            {
                reader.AddParameter("nodeID", nodeID);
                reader.Execute();
                if (reader.HasRows)
                {                    
                    while (reader.Read())
                    {
                        CategorySummary newCategorySummary = new CategorySummary();
                        newCategorySummary.NodeID = reader.GetInt32NullAsZero("NodeID");
                        newCategorySummary.Type = reader.GetInt32NullAsZero("Type");
                        newCategorySummary.NodeCount = reader.GetInt32NullAsZero("NodeMembers");
                        newCategorySummary.ArticleCount = reader.GetInt32NullAsZero("ArticleMembers");
                        newCategorySummary.AliasCount = reader.GetInt32NullAsZero("NodeAliasMembers");
                        newCategorySummary.Name = reader.GetStringNullAsEmpty("DisplayName");
                        newCategorySummary.StrippedName = StringUtils.StrippedName(reader.GetStringNullAsEmpty("DisplayName"));
                        newCategorySummary.RedirectNodeID = reader.GetInt32NullAsZero("RedirectNodeID");
                        newCategorySummary.TreeLevel = reader.GetInt32NullAsZero("TreeLevel");

                        // Is this item a subnode?
                        bool isThisASubnode = (reader.DoesFieldExist("SubName") && !reader.IsDBNull("SubName"));
                        if (!isThisASubnode)                       
                        {
                            childCategories.Add(newCategorySummary);
                        }
                        else //isThisASubnode = true
                        {
                            // is there already a parent?
                            int parentNodeID = reader.GetInt32NullAsZero("NodeID");
                            CategorySummary parentCategorySummary = (from i in childCategories
                                                                     where i.NodeID == parentNodeID
                                                                     select i).FirstOrDefault();

                            // if there's no parent, then create one
                            if (parentCategorySummary == null)
                            {
                                parentCategorySummary = newCategorySummary;
                                childCategories.Add(parentCategorySummary);   
                            }

                            // ensure the parent exists before adding children
                            if (parentCategorySummary.SubNodes == null)
                            {
                                parentCategorySummary.SubNodes = new List<CategorySummarySubnode>();
                            }

                            //create and add the subnode
                            CategorySummarySubnode newSubnode = new CategorySummarySubnode();
                            newSubnode.ID = reader.GetInt32NullAsZero("SubNodeID");
                            newSubnode.Type = reader.GetInt32NullAsZero("SubNodeType");
                            newSubnode.Value = reader.GetStringNullAsEmpty("SubName");
                            parentCategorySummary.SubNodes.Add(newSubnode);
                        }
 
                    }
                }
            }
            // the returned instance may have 0 items, but this is OK
            return childCategories;
        }