private void CalculateSchedule(ClassGroupSchedule classGroup, ScheduleBoard board) { foreach (ClassRoomSchedule classRoom in classGroup.ClassRooms) { //foreach (CourseSubjectSchedule courseSubject in classGroup.TrainingProgram.CourseSubjects) foreach (ClassCourseSchedule course in classRoom.Courses) { StoneCastle.Scheduler.Models.TimetableModel tt = classRoom.Timetable; this.CalculateTimetable(tt, course, board); } Logger.Debug($"Calculated class: {classRoom.Name}"); } }
private void CalculateClassGroupSchedule(ClassGroupSchedule cg) { if (cg == null) { Logger.Error($"Null exception: cg"); throw new ArgumentNullException("cg"); } TrainingProgramSchedule trainingProgram = cg.TrainingProgram; if (trainingProgram == null) { Logger.Error($"Class-group does not containt Training Program."); throw new InvalidOperationException($"ClassGroup {cg.Id} does not containt training program."); } trainingProgram.Timetable = this.timetableService.GetProgramTimetable(trainingProgram.Id); List <Course> css = this.UnitOfWork.CourseRepository.GetCourseSubjectByTrainingProgram(trainingProgram.Id).ToList(); var mapper = config.CreateMapper(); List <CourseSchedule> courseSubjects = mapper.Map <List <Course>, List <CourseSchedule> >(css); trainingProgram.CourseSubjects = courseSubjects; int shiftPerDay = trainingProgram.Timetable.ShiftPerDay; int slotPerShift = trainingProgram.Timetable.SlotPerShift; foreach (ClassRoomSchedule cr in cg.ClassRooms) { StoneCastle.Scheduler.Models.TimetableModel tt = this.timetableService.GetWorkingTimeTable(shiftPerDay, slotPerShift); tt = tt.Join(trainingProgram.Timetable); cr.Timetable = tt; // Get Courses List <ClassCourse> courses = this.UnitOfWork.ClassCourseRepository.GetCoursesByClassRoom(cr.Id).ToList(); List <ClassCourseSchedule> courseSchedules = mapper.Map <List <ClassCourse>, List <ClassCourseSchedule> >(courses); cr.Courses = courseSchedules; } }