public ScheduleViewModel(Schedule schedule, WellknownData wellknown) { Weeks = schedule.Weeks.OrderBy(x => x.WeekNumber).Select(x => new ScheduleWeekViewModel(x, wellknown)).ToList(); if (Weeks.Count > 1) { for (int i = 0; i < Weeks.Count - 1; i++) { int insertCount = Weeks[i + 1].WeekNumber - Weeks[i].WeekNumber - 1; for (int j = 0; j < insertCount; j++) { ScheduleWeekViewModel emptyWeek = new ScheduleWeekViewModel(new ScheduleWeek(Weeks[i].WeekNumber + j + 1), wellknown); Weeks.Insert(i + j + 1, emptyWeek); } i += insertCount; } } int daysSinceTermStart = (int)(DateTimeOffset.Now.Date - wellknown.TermStartDate).TotalDays; int weekNumber = daysSinceTermStart / 7; if (weekNumber < 0 || weekNumber >= Weeks.Count) { Today = new List <ScheduleEntryViewModel>(); } else { int todayDayOfWeek = (int)DateTimeOffset.Now.DayOfWeek; todayDayOfWeek = todayDayOfWeek == 0 ? 7 : todayDayOfWeek; ScheduleDayViewModel day = Weeks[weekNumber].Days[todayDayOfWeek - 1]; Today = day.Entries.Where(x => x.LocalEndTime > DateTimeOffset.Now).ToList() ?? new List <ScheduleEntryViewModel>(); } }
private void AddWeek(object parameter) { var week = _weekService.NewWeek(GetMaxStartDate()); var viewModel = new WeekViewModel(_weekService, _hourCodeProvider, week); Weeks.Insert(0, viewModel); CurrentWeek = viewModel; }