Exemplo n.º 1
0
        //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);
        }
Exemplo n.º 2
0
        //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);
        }