/// <summary> /// Build SubjectBrowseOutput object from collection of Categories. /// </summary> /// <remarks> /// The FetchCategories stored procedure returns Category results in a specific order, e.g. /// Level 1: .A - Art /// Level 2: .A.1 - Animation / Multimedia Software /// Level 3: CC.31 - Animation Software (Use) /// Level 3: CC.3111 - 3d Studio (Animation Software) /// Level 3: CC.3122 - Flash (Animation Software) /// Level 2: .A.10 - Graphics Software /// Level 3: CC.34 - Drawing / Painting Software (Use) /// Level 3: CC.34 - Graphics Software (Use) /// Level 1: .ACE - Adult and Continuing Education /// Level 2: .ACE.2 - Job Preparation /// Level 3: HC.1 - Career Planning /// ... etc. /// This code expects the results to be in this sequence. /// </remarks> /// <param name="categories">Categories collection.</param> /// <returns>Populated SubjectBrowseOutput object.</returns> private static SubjectBrowseOutput BuildSubjectBrowseOutput(List <Category> categories) { SubjectBrowseOutput subjectBrowseOutput = new SubjectBrowseOutput(); List <Level1> level1s = new List <Level1>(); List <Level2> level2s = new List <Level2>(); List <CategoryInfo> level3s = new List <CategoryInfo>(); Level1 currentLevel1 = null; Level2 currentLevel2 = null; CategoryInfo currentLevel3; foreach (Category category in categories) { switch (category.Level) { case 1: currentLevel1 = BuildLevel1(category); level1s.Add(currentLevel1); // clear the level 2's so we don't have the // previous level 1 level 2's in there level2s.Clear(); break; case 2: currentLevel2 = BuildLevel2(category); if (currentLevel1.Level2 != null) { level2s = currentLevel1.Level2.ToList(); } level2s.Add(currentLevel2); currentLevel1.Level2 = level2s.ToArray(); // clear the level 3's so we don't have the // previous level 2 level 3's in there level3s.Clear(); break; case 3: currentLevel3 = BuildCategoryInfo(category); if (currentLevel2.Level3 != null) { level3s = currentLevel2.Level3.ToList(); } level3s.Add(currentLevel3); currentLevel2.Level3 = level3s.ToArray(); break; default: break; } } subjectBrowseOutput.Level1 = level1s.ToArray(); return(subjectBrowseOutput); }
private void PopulateData(SubjectBrowseInput request) { ServiceInterface client = new ServiceInterfaceClient("CourseSearchService"); try { SubjectBrowseOutput response = client.GetCategories(request); foreach (Level1 level1 in response.Level1) { // start Level 1 string level1Text = CreateLevelText(level1.LDCS.LDCSCode, level1.LDCS.LDCSDesc, level1.LDCS.Searchable.ToString(), level1.CourseCounts); TreeNode level1TreeNode = new TreeNode(level1Text); level1TreeNode.SelectAction = TreeNodeSelectAction.None; if (level1.Level2 != null) { foreach (Level2 level2 in level1.Level2) { // start Level 2 string level2Text = CreateLevelText(level2.LDCS.LDCSCode, level2.LDCS.LDCSDesc, level2.LDCS.Searchable.ToString(), level2.CourseCounts); TreeNode level2TreeNode = new TreeNode(level2Text); level2TreeNode.SelectAction = TreeNodeSelectAction.None; if (level2.Level3 != null) { foreach (CategoryInfo level3 in level2.Level3) { string level3Text = CreateLevelText(level3.LDCS.LDCSCode, level3.LDCS.LDCSDesc, level3.LDCS.Searchable.ToString(), level3.CourseCounts); TreeNode level3TreeNode = new TreeNode(level3Text); level3TreeNode.NavigateUrl = "~\\CourseSearch.aspx?ldcscategorycodes=" + level3.LDCS.LDCSCode + "&APIKey=" + request.APIKey + "&action=search&recordsperpage=10"; // add the level 3 node to the level 2 node level2TreeNode.ChildNodes.Add(level3TreeNode); } } // add level 2 node to the level 1 node level1TreeNode.ChildNodes.Add(level2TreeNode); } } // add the level 1 node TreeView1.Nodes.Add(level1TreeNode); } TreeView1.DataBind(); } catch (Exception ex) { ResultsOverviewLabel.Text = ex.Message + "/n/n" + ex.StackTrace; } }
/// <summary> /// On clicking GetCategories button, calls CourseSearchService GetCategories() method wtih test data. /// </summary> private void btnGetCategories_Click(object sender, EventArgs e) { txtResult.Text = "Processing ..."; ServiceInterface client = new ServiceInterfaceClient("CourseSearch"); SubjectBrowseInput request = new SubjectBrowseInput(); StringBuilder sb = new StringBuilder(); try { SubjectBrowseOutput response = client.GetCategories(request); foreach (Level1 level1 in response.Level1) { sb.Append("Level 1:" + level1.LDCS.LDCSCode + "; " + level1.LDCS.LDCSDesc + "; " + level1.LDCS.Searchable.ToString() + "; " + level1.CourseCounts + "\n"); if (level1.Level2 != null) { foreach (Level2 level2 in level1.Level2) { sb.Append("Level 2:" + level2.LDCS.LDCSCode + "; " + level2.LDCS.LDCSDesc + "; " + level2.LDCS.Searchable.ToString() + "; " + level2.CourseCounts + "\n"); if (level2.Level3 != null) { foreach (CategoryInfo level3 in level2.Level3) { sb.Append("Level 3:" + level3.LDCS.LDCSCode + "; " + level3.LDCS.LDCSDesc + "; " + level3.LDCS.Searchable.ToString() + "; " + level3.CourseCounts + "\n"); } } } } sb.Append("\n"); } txtResult.Text = sb.ToString(); } catch (Exception ex) { txtResult.Text = sb.ToString() + "\n\n" + ex.Message; } }