コード例 #1
0
        public IActionResult Timetable(string groupName = "Б8303а")
        {
            using (var db = new TimetableDBContext())
            {
                var list = (from tt in db.Lessons
                            join cr in db.Classrooms on tt.Classroom_Id equals cr.Id
                            join wd in db.Weekdays on tt.Weekdays_Id equals wd.Id
                            join lt in db.Lesson_Times on tt.Lesson_Time_Id equals lt.Id
                            join s in db.Subjects on tt.Subject_Id equals s.Id
                            join t in db.Teachers on tt.Teacher_Id equals t.Id
                            join g in db.Groups on tt.Group_Id equals g.Id
                            where g.Group_Name == groupName
                            orderby wd.Id
                            select new TimetableItem()
                {
                    Classroom = cr.Classroom_Name, Weekday = wd.Weekday_Name, StartTime = lt.Start_Time, EndTime = lt.End_Time,
                    Numb = lt.Numb, Subject = s.Subject_Name, Teacher = t.Teacher_Name, Parity = lt.Parity
                })
                           .ToList();
                var weekdaysRowSpan = new Dictionary <string, int>();
                for (int i = 0; i < list.Count; ++i)
                {
                    var item = list[i];
                    if (!weekdaysRowSpan.ContainsKey(item.Weekday))
                    {
                        weekdaysRowSpan[item.Weekday] = 1;
                    }
                    switch (item.Parity)
                    {
                    case 2:
                        weekdaysRowSpan[item.Weekday] += 1;
                        break;

                    case 1:
                    case 0:
                        weekdaysRowSpan[item.Weekday] += 2;
                        if (i + 1 < list.Count && list[i + 1].Weekday == item.Weekday && list[i + 1].StartTime == item.StartTime)
                        {
                            i++;
                        }
                        break;

                    default:
                        break;
                    }
                }

                ViewBag.Timetable       = list;
                ViewBag.WeekdaysRowSpan = weekdaysRowSpan;
            }
            return(View());
        }
コード例 #2
0
 public TimetableDataService()
 {
     this.db = new TimetableDBContext();
 }