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