public IList <ScheduleItem> GetSchedule(int schoolYearId, int?teacherId, int?studentId, int?classId, DateTime from, DateTime to) { var dates = ((DemoCalendarDateService)ServiceLocator.CalendarDateService).GetDates(new DateQuery { FromDate = from, ToDate = to, SchoolYearId = schoolYearId, SchoolDaysOnly = true }); var periods = ServiceLocator.PeriodService.GetPeriods(schoolYearId); var classes = studentId.HasValue ? ServiceLocator.ClassService.GetStudentClasses(schoolYearId, studentId.Value, null) : new List <ClassDetails>(); if (teacherId.HasValue) { ServiceLocator.ClassService.GetTeacherClasses(schoolYearId, teacherId.Value, null); classes = classes.Where(x => x.PrimaryTeacherRef == teacherId).ToList(); } var classsPeriods = ClassPeriodStorage.GetAll().Where(x => x.Period.SchoolYearRef == schoolYearId).ToList(); var rooms = ((DemoRoomService)ServiceLocator.RoomService).GetRooms(); var scheduleTimeSlots = ScheduledTimeSlotStorage.GetAll(); var res = new List <ScheduleItem>(); foreach (var date in dates) { if (date.IsSchoolDay) { foreach (var period in periods) { var scheduleSlot = scheduleTimeSlots.FirstOrDefault(x => x.BellScheduleRef == date.BellScheduleRef && x.PeriodRef == period.Id); var clsIds = classsPeriods.Where(x => x.PeriodRef == period.Id).Select(x => x.ClassRef); var classesList = classes.Where(x => clsIds.Contains(x.Id)); foreach (var cls in classesList) { var room = rooms.FirstOrDefault(x => x.Id == cls.RoomRef); res.Add(CreateScheduleItem(date, period, scheduleSlot, cls, room)); } } } } return(res); }
public void Add(IList <ClassPeriod> classPeriods) { ClassPeriodStorage.Add(classPeriods); }