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);
                }
            }