Ejemplo n.º 1
0
        private async Task LoadSubscriptions()
        {
            IsLoadingSubscriptions = true;

            try
            {
                var subscribed = await repository.GetSubscribedAsync();

                await Series.AddAllAsync(subscribed);
            }
            finally
            {
                IsLoadingSubscriptions = false;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Agent that runs a scheduled task
        /// </summary>
        /// <param name="task">
        /// The invoked task
        /// </param>
        /// <remarks>
        /// This method is called when a periodic or resource intensive task is invoked
        /// </remarks>
        protected async override void OnInvoke(ScheduledTask task)
        {
            //nasty hack... let's pretend this thread is the Dispatcher, haha :-P
            DispatcherHelper.Initialize();

            var repository = new TvDbSeriesRepository(new SeriesStorageManager(), new TvDb(new ConnectivityService()));
            await repository.GetSubscribedAsync(false);


            // If debugging is enabled, launch the agent again in one minute.
            #if DEBUG_AGENT
            ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(60));
            #endif

            // Call NotifyComplete to let the system know the agent is done working.
            NotifyComplete();
        }
Ejemplo n.º 3
0
        public async Task CreateOrUpdateRemindersAsync()
        {
            RemoveAllReminders();
            var subscribedSeries = await repository.GetSubscribedAsync(false);

            foreach (var series in subscribedSeries)
            {
                if (!series.RemindersEnabled)
                {
                    continue;
                }

                var nextEpisodes = series.Episodes.Where(e => e.FirstAired >= DateTime.Today).OrderBy(e => e.FirstAired).Take(2).ToList();


                if (nextEpisodes.Count == 0)
                {
                    continue;
                }

                var notificationTime = series.NotificationTime ?? DateTime.Today.AddHours(18);

                foreach (var episode in nextEpisodes)
                {
                    if (episode.FirstAired == null)
                    {
                        continue;
                    }

                    var notificationDate = episode.FirstAired.Value.Date + notificationTime.TimeOfDay;

                    var reminder = new Reminder(series.Id + episode.Id)
                    {
                        BeginTime = notificationDate,
                        Title     = series.Title,
                        Content   = string.Format("New {0} episode is up!", series.Title)
                    };

                    ScheduledActionService.Add(reminder);
                }
            }
        }