示例#1
0
        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);
        }
示例#2
0
 public void Add(IList <ClassPeriod> classPeriods)
 {
     ClassPeriodStorage.Add(classPeriods);
 }