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; }
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; }
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; }