/// <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);
        }
Esempio n. 2
0
        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;
            }
        }