private static async Task <IEnumerable <TileNotificationContentAndData> > GenerateTileNotificationContentsAsync(AccountDataItem account) { DateTime today = DateTime.Today; var scheduleTileData = await ScheduleTileDataHelper.LoadAsync(account, today, DAYS_INCLUDING_TODAY); return(GenerateTileNotificationContents(scheduleTileData)); }
private async System.Threading.Tasks.Task InitializeDataAsync() { List <object> items = null; _now = DateTime.Now; bool hasAccount = false; bool hasSemester = false; List <ViewItemSchedule> schedulesToday = new List <ViewItemSchedule>(); try { await System.Threading.Tasks.Task.Run(async delegate { var account = await AccountsManager.GetLastLogin(); if (account != null) { _localAccountId = account.LocalAccountId; hasAccount = true; const int DAYS_INCLUDING_TODAY = 7; var scheduleTileData = await ScheduleTileDataHelper.LoadAsync(account, _now.Date, DAYS_INCLUDING_TODAY); if (scheduleTileData.HasSemester) { hasSemester = true; items = new List <object>(); foreach (var dayData in scheduleTileData.GetDataForAllDays()) { if (dayData.Holidays.Any()) { // If we already displayed these holidays, skip subsequent duplicate days if (items.Count >= dayData.Holidays.Length && items.TakeLast(dayData.Holidays.Length).SequenceEqual(dayData.Holidays)) { // Skip } else { // If not today if (!dayData.IsToday) { // We add the date header only for non-today items.Add(dayData.Date); } items.AddRange(dayData.Holidays); } } else if (dayData.Schedules.Any()) { // If not today if (!dayData.IsToday) { // If there's currently no items if (items.Count == 0) { // Add the text saying no class today! items.Add(PowerPlannerResources.GetString("String_NoClassToday")); } // We add the date header only for non-today items.Add(dayData.Date); } // If today if (dayData.IsToday) { foreach (var s in dayData.Schedules) { if (s.EndTime.TimeOfDay > _now.TimeOfDay) { items.Add(s); schedulesToday.Add(s); } } if (items.Count == 0) { items.Add(PowerPlannerResources.GetString("String_NoMoreClasses")); } } else { items.AddRange(dayData.Schedules); } } } } } }); if (items == null || items.Count == 0) { if (hasSemester) { items = new List <object>() { PowerPlannerResources.GetString("String_NoClassesThisWeek") }; } else if (hasAccount) { items = new List <object>() { PowerPlannerResources.GetString("String_NoSemester") }; } else { items = new List <object>() { PowerPlannerResources.GetString("String_NoAccount") }; } } _items = items; } catch (Exception ex) { TelemetryExtension.Current?.TrackException(ex); } // Schedule next try { DateTime nextChangeTime = _now.Date.AddDays(1); if (schedulesToday.Count > 0) { nextChangeTime = _now.Date.Add(schedulesToday.First().EndTime.TimeOfDay); } AlarmManagerHelper.Schedule( context: _context, receiverType: typeof(UpdateWidgetScheduleReceiver), wakeTime: nextChangeTime); } catch (Exception ex) { TelemetryExtension.Current?.TrackException(ex); } }