//Arrange courses by day public List <TimeTable> ArrangeCoursesByDay(List <List <CourseGroup> > coursesByGroup) { List <TimeTable> TimeTables = new List <TimeTable>(); List <List <CourseGroup> > TtCourses = new List <List <CourseGroup> >(); TtCourses = FindTT(coursesByGroup); //Set "week courses" to timeTables foreach (var tt in TtCourses) { TimeTable Tt = new TimeTable(); foreach (var cg in tt) { foreach (var c in cg.coursesInGroup) { switch (c.Day) { case ("א"): Tt.Sunday.Add(c); break; case ("ב"): Tt.Monday.Add(c); break; case ("ג"): Tt.Tuesday.Add(c); break; case ("ד"): Tt.Wednesday.Add(c); break; case ("ה"): Tt.Thursday.Add(c); break; case ("ו"): Tt.Friday.Add(c); break; } } } Tt.Sunday.Sort(); Tt.Monday.Sort(); Tt.Tuesday.Sort(); Tt.Wednesday.Sort(); Tt.Thursday.Sort(); Tt.Friday.Sort(); TimeTables.Add(Tt); } return(TimeTables); }
//Create full timeTable including empty hours from 8:00 to 23:00 public List <TimeTable> MakeTimeTable(List <TimeTable> timeTables) { List <TimeTable> AllTimeTables = new List <TimeTable>(); for (int i = 0; i < timeTables.Count(); i++) { //List<List<SummerSemester>> tTable = new List<List<SummerSemester>>(); TimeTable tTable = new TimeTable(); Day daya = new Day(); Day dayb = new Day(); Day dayc = new Day(); Day dayd = new Day(); Day daye = new Day(); Day dayf = new Day(); daya.Courses.Add(CreateDays("יום ראשון")); dayb.Courses.Add(CreateDays("יום שני")); dayc.Courses.Add(CreateDays("יום שלישי")); dayd.Courses.Add(CreateDays("יום רביעי")); daye.Courses.Add(CreateDays("יום חמישי")); dayf.Courses.Add(CreateDays("יום שישי")); var sTimea = new TimeSpan(8, 0, 0); var sTimeb = new TimeSpan(8, 0, 0); var sTimec = new TimeSpan(8, 0, 0); var sTimed = new TimeSpan(8, 0, 0); var sTimee = new TimeSpan(8, 0, 0); var sTimef = new TimeSpan(8, 0, 0); bool first = true; int sumStart = 0, sumEnd = 0; int countStart = 0, countEnd = 0; foreach (var c in timeTables[i].Sunday.Courses) { //Average of start and end hours if (timeTables[i].Sunday.Courses.Last() == c) { sumEnd += (int)c.EndHour.Value.Hours; countEnd++; } if (first) { sumStart += (int)c.StartHour.Value.Hours; countStart++; first = false; } if (c.StartHour > sTimea) { CoursesDetails blankLess = CreateDays(""); blankLess.NumConLessons = (int)(((TimeSpan)(c.StartHour)).TotalHours - sTimea.TotalHours); daya.Courses.Add(blankLess); sTimea = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } daya.Courses.Add(c); sTimea = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } first = true; foreach (var c in timeTables[i].Monday.Courses) { if (timeTables[i].Monday.Courses.Last() == c) { sumEnd += (int)c.EndHour.Value.Hours; countEnd++; } if (first) { sumStart += (int)c.StartHour.Value.Hours; countStart++; first = false; } if (c.StartHour > sTimeb) { CoursesDetails blankLess = CreateDays(""); blankLess.NumConLessons = (int)(((TimeSpan)(c.StartHour)).TotalHours - sTimeb.TotalHours); dayb.Courses.Add(blankLess); sTimeb = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } dayb.Courses.Add(c); sTimeb = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } first = true; foreach (var c in timeTables[i].Tuesday.Courses) { if (timeTables[i].Tuesday.Courses.Last() == c) { sumEnd += (int)c.EndHour.Value.Hours; countEnd++; } if (first) { sumStart += (int)c.StartHour.Value.Hours; countStart++; first = false; } if (c.StartHour > sTimec) { CoursesDetails blankLess = CreateDays(""); blankLess.NumConLessons = (int)(((TimeSpan)(c.StartHour)).TotalHours - sTimec.TotalHours); dayc.Courses.Add(blankLess); sTimec = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } dayc.Courses.Add(c); sTimec = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } first = true; foreach (var c in timeTables[i].Wednesday.Courses) { if (timeTables[i].Wednesday.Courses.Last() == c) { sumEnd += (int)c.EndHour.Value.Hours; countEnd++; } if (first) { sumStart += (int)c.StartHour.Value.Hours; countStart++; first = false; } if (c.StartHour > sTimed) { CoursesDetails blankLess = CreateDays(""); blankLess.NumConLessons = (int)(((TimeSpan)(c.StartHour)).TotalHours - sTimed.TotalHours); dayd.Courses.Add(blankLess); sTimed = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } dayd.Courses.Add(c); sTimed = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } first = true; foreach (var c in timeTables[i].Thursday.Courses) { if (timeTables[i].Thursday.Courses.Last() == c) { sumEnd += (int)c.EndHour.Value.Hours; countEnd++; } if (first) { sumStart += (int)c.StartHour.Value.Hours; countStart++; first = false; } if (c.StartHour > sTimee) { CoursesDetails blankLess = CreateDays(""); blankLess.NumConLessons = (int)(((TimeSpan)(c.StartHour)).TotalHours - sTimee.TotalHours); daye.Courses.Add(blankLess); sTimee = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } daye.Courses.Add(c); sTimee = (TimeSpan)(c.EndHour + +new TimeSpan(0, 10, 0)); } first = true; foreach (var c in timeTables[i].Friday.Courses) { if (timeTables[i].Friday.Courses.Last() == c) { sumEnd += (int)c.EndHour.Value.Hours; countEnd++; } if (first) { sumStart += (int)c.StartHour.Value.Hours; countStart++; first = false; } if (c.StartHour > sTimef) { CoursesDetails blankLess = CreateDays(""); blankLess.NumConLessons = (int)(((TimeSpan)(c.StartHour)).TotalHours - sTimef.TotalHours); dayf.Courses.Add(blankLess); sTimef = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } dayf.Courses.Add(c); sTimef = (TimeSpan)(c.EndHour + new TimeSpan(0, 10, 0)); } tTable.StartHourAvg = sumStart / countStart; tTable.EndHourAvg = sumEnd / countEnd; FillDay(daya, sTimea); FillDay(dayb, sTimeb); FillDay(dayc, sTimec); FillDay(dayd, sTimed); FillDay(daye, sTimee); FillDay(dayf, sTimef); tTable.Sunday = daya; tTable.Monday = dayb; tTable.Tuesday = dayc; tTable.Wednesday = dayd; tTable.Thursday = daye; tTable.Friday = dayf; AllTimeTables.Add(tTable); } return(AllTimeTables); }