public override bool Fill() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetYearSubject")); try { Utility.StartTime("GetYearSubject"); progress.ReportMessage("取得學年科目成績資料…"); List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize); int offset = 1; foreach (List <string> eachPackage in packages) { if (MainProgress.Cancellation) { return(false); //這個部份要看的必須是 MainProgress。 } DSXmlHelper response = QueryScore.GetSchoolYearSubjectScore(true, Parameters.SchoolYear, eachPackage.ToArray()); foreach (XmlElement eachStudent in response.GetElements("SchoolYearSubjectScore")) { DSXmlHelper hlpScore = new DSXmlHelper(eachStudent); string studentId = hlpScore.GetText("RefStudentId"); string scoreId = hlpScore.GetText("@ID"); if (Students.ContainsKey(studentId)) { Student student = Students[studentId]; student.YearSubjects.ScoreRecordIdentity = scoreId; string scoresPath = "ScoreInfo/SchoolYearSubjectScore/Subject"; foreach (XmlElement eachScore in eachStudent.SelectNodes(scoresPath)) { YearSubjectScore objScore = new YearSubjectScore(eachScore); if (!student.YearSubjects.AddSubject(objScore)) { LogDuplicateSubject(progress, student, objScore); } } } } progress.ReportProgress((int)(((float)offset / packages.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("GetYearSubject"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }
public override bool Fill() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetSemsMoral")); try { Utility.StartTime("GetSemsMoral"); progress.ReportMessage("取得學期德行成績資料…"); List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize); int offset = 1; foreach (List <string> eachPackage in packages) { if (MainProgress.Cancellation) { return(false); //這個部份要看的必須是 MainProgress。 } DSXmlHelper response = QueryScore.GetSemesterEntryScoreBySemester(true, Parameters.SchoolYear, Parameters.Semester, QueryScore.EntryGroup.行為, eachPackage.ToArray()); foreach (XmlElement eachStudent in response.GetElements("SemesterEntryScore")) { DSXmlHelper hlpScore = new DSXmlHelper(eachStudent); string studentId = hlpScore.GetText("RefStudentId"); string scoreId = hlpScore.GetText("@ID"); if (Students.ContainsKey(studentId)) { Student student = Students[studentId]; student.SemsMoral = new SemesterEntry("德行", eachStudent); } } progress.ReportProgress((int)(((float)offset / packages.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("GetSemsMoral"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }
public override bool Fill() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetStudentData")); try { Utility.StartTime("GetStudentData"); progress.ReportMessage("取得學生資料…"); int offset = 1; foreach (string eachYear in Parameters.TargetGradeYears) { if (MainProgress.Cancellation) //這個部份必須要看的是 MainProgress。 { return(false); } DSXmlHelper response = QueryStudent.GetAbstractList(eachYear); foreach (XmlElement eachStudent in response.GetElements("Student")) { Students.AddStudent(new RankStudent(eachStudent)); } progress.ReportProgress((int)(((float)offset / Parameters.TargetGradeYears.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("GetStudentData"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }
public override bool Update() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("SetYearSubject")); try { Utility.StartTime("SetYearSubject"); progress.ReportMessage("更新學年科目成績排名資料…"); List <List <Student> > packages = Utility.SplitUpdatePackage(Students, PackageSize); int offset = 1; foreach (List <Student> eachPackage in packages) { if (MainProgress.Cancellation) { return(false); //這個部份要看的必須是 MainProgress。 } DSXmlCreator request = new DSXmlCreator(false); bool updateRequired = false; request.CreateStartElement("Request"); foreach (Student eachStudent in eachPackage) { //代表沒有排名。 if (eachStudent.YearSubjects.Count <= 0) { continue; } updateRequired = true; request.CreateStartElement("SchoolYearSubjectRating"); //學期成績記錄的編號。 request.CreateElement("ScoreId", eachStudent.YearSubjects.ScoreRecordIdentity); RatingScope scopeClass = new RatingScope("ClassRating"); RatingScope scopeDept = new RatingScope("DeptRating"); RatingScope scopeYear = new RatingScope("YearRating"); foreach (YearSubjectScore eachScore in eachStudent.YearSubjects.Values) { foreach (ResultPlace eachPlace in eachScore.RatingResults.Values) { if (eachPlace.Scope.ScopeType == ScopeType.Class) { scopeClass.CreateRatingItem(eachScore, eachPlace); } else if (eachPlace.Scope.ScopeType == ScopeType.Dept) { scopeDept.CreateRatingItem(eachScore, eachPlace); } else if (eachPlace.Scope.ScopeType == ScopeType.GradeYear) { scopeYear.CreateRatingItem(eachScore, eachPlace); } } } scopeClass.FinalizeCreate(); scopeDept.FinalizeCreate(); scopeYear.FinalizeCreate(); request.CreateSubtree(scopeClass.GetResult()); request.CreateSubtree(scopeDept.GetResult()); request.CreateSubtree(scopeYear.GetResult()); request.CreateEndElement(); } request.CreateEndElement(); if (updateRequired) { EditRating.UpdateSchoolYearSubjectRating(request.GetResultAsDSXmlHelper()); } progress.ReportProgress((int)(((float)offset / packages.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("SetYearSubject"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }