public CalendarRecord(CourseCalendar vRecord) { this.UID = vRecord.UID; this.Weekday = "" + vRecord.WeekDay; this.AbsenceName = vRecord.AbsenceName; this.Cancel = vRecord.Cancel; this.ClassID = K12.Data.Int.GetString(vRecord.ClassID); this.ClassName = vRecord.ClassName; this.ClassroomName = vRecord.ClassroomName; this.Comment = vRecord.Comment; this.StartDateTime = vRecord.StartDateTime; this.EndDateTime = vRecord.EndDateTime; this.ReplaceID = K12.Data.Int.GetString(vRecord.ReplaceID); this.ExchangeID = K12.Data.Int.GetString(vRecord.ExchangeID); this.Level = K12.Data.Int.GetString(vRecord.Level); this.Period = "" + vRecord.Period; this.Subject = vRecord.Subject; this.SubjectAlias = vRecord.SubjectAlias; this.TeacherID = K12.Data.Int.GetString(vRecord.TeacherID); this.TeacherName = vRecord.TeacherName; this.CourseID = K12.Data.Int.GetString(vRecord.CourseID); this.Lock = vRecord.Lock; this.ScheduleComment = vRecord.ScheduleComment; this.Delete = string.Empty; }
/// <summary> /// 轉換為課程行事曆 /// </summary> /// <param name="SchoolYearSemesterDates"></param> /// <returns></returns> public void CreateCourseCalendar(Dictionary<string,SchoolYearSemesterDateHelper> SchoolYearSemesterDates) { Stopwatch mStopwatch = new Stopwatch(); mStopwatch.Start(); Calendars = new List<CourseCalendar>(); List<string> IngoreHolidays = new List<string>(); if (SchoolYearSemesterDates.ContainsKey(SchoolYearSemester)) { SchoolYearSemesterDateHelper vSchoolYearSemesterDate = SchoolYearSemesterDates[SchoolYearSemester]; if (vSchoolYearSemesterDate.GradeYearDates.ContainsKey(ClassYear)) { //年級的學期開始日期及結束日期 DateTime dteStart = vSchoolYearSemesterDate.GradeYearDates[ClassYear].StartDate; DateTime dteEnd = vSchoolYearSemesterDate.GradeYearDates[ClassYear].EndDate; int StartWeekday = dteStart.GetWeekday(); DateTime dteStartWeekday = dteStart.StartOfWeek(DayOfWeek.Monday); int intWeekday = K12.Data.Int.Parse(Weekday); dteStartWeekday = intWeekday < StartWeekday ? dteStartWeekday = dteStartWeekday.AddDays(7).AddDays(intWeekday - 1) : dteStartWeekday = dteStartWeekday.AddDays(intWeekday - 1); while (dteStartWeekday <= dteEnd) { CourseCalendar Calendar = new CourseCalendar(); Calendar.Subject = Subject; Calendar.Level = K12.Data.Int.ParseAllowNull(SubjectLevel); Calendar.SubjectAlias = SubjectAlias; Calendar.TeacherName = TeacherName; Calendar.ClassName = ClassName; Calendar.ClassroomName = ClassroomName; Calendar.WeekDay = intWeekday; Calendar.Period = K12.Data.Int.Parse(Period); DateTime StartDateTime = new DateTime(); DateTime EndDateTime = new DateTime(); DateTime.TryParse(dteStartWeekday.ToShortDateString() + " " + StartTime, out StartDateTime); DateTime.TryParse(dteStartWeekday.ToShortDateString() + " " + EndTime, out EndDateTime); Calendar.StartDateTime = StartDateTime; Calendar.EndDateTime = EndDateTime; Calendar.Lock = Lock; Calendar.Comment = Comment; if (!vSchoolYearSemesterDate.Holidays.Contains(Calendar.StartDateTime.ToShortDateString())) Calendars.Add(Calendar); else IngoreHolidays.Add(Calendar.StartDateTime.ToShortDateString()); dteStartWeekday = dteStartWeekday.AddDays(7); } if (Calendars.Count>0) TransferComment = "此筆資料已產生" + Calendars.Count +"筆課程行事曆;開始日期為" + Calendars[0].StartDateTime.ToShortDateString() + "、結束日期為" + Calendars[Calendars.Count-1].StartDateTime.ToShortDateString(); if (IngoreHolidays.Count > 0) TransferComment += ";略過假日" + string.Join(",", IngoreHolidays.ToArray()); } else TransferComment = "此筆資料找不到學期設定中的年級,無法進行轉換。"; } else TransferComment = "此筆資料找不到學期設定中的學年度學期,無法進行轉換。"; mStopwatch.Stop(); Console.WriteLine(mStopwatch.Elapsed.TotalMilliseconds); }