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()); }
public TimetableDataService() { this.db = new TimetableDBContext(); }