public ScheduleDayViewModel(int weekNumber, DateTimeOffset date, IEnumerable <ScheduleEntry> entries, WellknownData schedule) { ILocalizationService locService = Application.Current.GetService <ILocalizationService>(); LocalDate = date; LocalDateDisplay = locService.Format("ScheduleTableDayDisplayFormat", date); WeekNumber = weekNumber; DayOfWeek = date.DayOfWeek == System.DayOfWeek.Sunday ? 7 : (int)date.DayOfWeek; DayOfWeekDisplay = locService.GetString($"ScheduleTableDayOfWeek{DayOfWeek}Header"); IsToday = date == DateTimeOffset.Now.GetLocalDate(); Entries = entries.OrderBy(x => x.StartSession).Select(x => new ScheduleEntryViewModel(x, date, schedule)).ToList(); Initialized = true; ConsolidatedEntries = new List <ScheduleConsolidationViewModel>(); for (int i = 0; i < Entries.Count; i++) { ScheduleEntryViewModel currentEntry = Entries[i]; ScheduleConsolidationViewModel consolidation = new ScheduleConsolidationViewModel(currentEntry); for (int j = i; j < Entries.Count; j++) { ScheduleEntryViewModel potentialConflict = Entries[j]; if (potentialConflict.StartSession > currentEntry.EndSession) { break; } else { consolidation.Conflicts.Add(potentialConflict); } } if (consolidation.ConflictCount > 1) { consolidation.ConflictCountDisplay = locService.Format("ScheduleTableConflictDescriptionFormat", consolidation.ConflictCount - 1); } ConsolidatedEntries.Add(consolidation); i += consolidation.ConflictCount; } }
public ScheduleConsolidationViewModel(ScheduleEntryViewModel displayEntry) { DisplayEntry = displayEntry; ConflictCountDisplay = null; Conflicts = new List <ScheduleEntryViewModel>(); }