using System; using System.Collections.Generic; using System.Text; using StuMgmLib.MyNameSpace; using System.Linq; using System.Data; using System.ComponentModel; using System.Collections; using System.Reflection; namespace StuMgmClient { class SystemData { static Dictionary allCourseInfo; static Dictionary allCourseStatus; static List allStreeDatas; internal static ErrCode InitSystemData() { ErrCode err; err = InitCourseInfo(); if (err != ErrCode.Success) return err; return ErrCode.Success; } static ErrCode InitCourseInfo() { ErrCode err; List courseInfo; err = SystemCtrl.GetCourseInfo(out courseInfo); if (err != ErrCode.Success) return err; //将List转为Dictionary allCourseInfo = courseInfo.ToDictionary(key => key.Id, value => value); return ErrCode.Success; } internal static ErrCode RefreshUserCourseInfo(UserCourseInfo info) { //将UserCourseInfo转为Dictionary allCourseStatus = new Dictionary(); int num = 0; short oldTem = 0; //切割字符串 string[] sArray = info.Status.Split(new char[2] { ':', ';' }); foreach (string i in sArray) { if (i.Equals("")) { break; } short tem = Convert.ToInt16(i); num++; if (num % 2 != 0) { allCourseStatus.Add(tem, CourseStatusEnum.NoStart); oldTem = tem; } else { allCourseStatus[oldTem] = (CourseStatusEnum)tem; } } return ErrCode.Success; } static void StreeList() { allStreeDatas = new List(); StreeDatas sd=null; foreach (var item in allCourseStatus) { sd = new StreeDatas(); CourseInfo infoTwo = allCourseInfo[item.Key];//找到状态对应的课程表信息 sd.SecondNode = infoTwo.Pid;//二级节点9 CourseInfo infoOne = allCourseInfo[infoTwo.Pid]; CourseInfo infoThree = allCourseInfo[infoOne.Pid]; sd.FirstNode = infoThree.Pid; sd.Id = infoTwo.Id; sd.Name = infoTwo.Name; sd.Pid = infoTwo.Pid; sd.Statu = (int)item.Value; sd.Content = infoTwo.Content; allStreeDatas.Add(sd); } } static DataTable ListToDb(List list) { DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Pid", typeof(int)); dt.Columns.Add("Content", typeof(string)); dt.Columns.Add("Statu", typeof(int)); dt.Columns.Add("FirstNode", typeof(int)); dt.Columns.Add("SecondNode", typeof(int)); for (int i = 0; i < list.Count; i++) { DataRow dr = dt.NewRow(); dr[0] = list[i].Id; dr[1] = list[i].Name; dr[2] = list[i].Pid; dr[3] = list[i].Content; dr[4] = list[i].Statu; dr[5] = list[i].FirstNode; dr[6] = list[i].SecondNode; dt.Rows.Add(dr); } return dt; } internal static DataTable StreeTable() { StreeList(); return ListToDb(allStreeDatas); } } }