using System; using System.Linq; using NLog; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers; namespace NzbDrone.Core.Jobs { public class RecentBacklogSearchJob : IJob { private readonly EpisodeProvider _episodeProvider; private readonly EpisodeSearchJob _episodeSearchJob; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public RecentBacklogSearchJob(EpisodeProvider episodeProvider, EpisodeSearchJob episodeSearchJob) { _episodeProvider = episodeProvider; _episodeSearchJob = episodeSearchJob; } public string Name { get { return "Recent Backlog Search"; } } public int DefaultInterval { get { return 1440; } } public void Start(ProgressNotification notification, int targetId, int secondaryTargetId) { //Get episodes that are considered missing and aired in the last 30 days var missingEpisodes = _episodeProvider.EpisodesWithoutFiles(true).Where(e => e.AirDate >= DateTime.Today.AddDays(-30)); Logger.Debug("Processing missing episodes from the last 30 days"); //Process the list of remaining episodes, 1 by 1 foreach (var episode in missingEpisodes) { _episodeSearchJob.Start(notification, episode.EpisodeId, 0); } } } }