using NzbDrone.Api.Episodes; using NzbDrone.Core.Datastore; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Tv; using NzbDrone.SignalR; namespace NzbDrone.Api.Wanted { public class MissingModule : EpisodeModuleWithSignalR { public MissingModule(IEpisodeService episodeService, ISeriesService seriesService, IQualityUpgradableSpecification qualityUpgradableSpecification, IBroadcastSignalRMessage signalRBroadcaster) : base(episodeService, seriesService, qualityUpgradableSpecification, signalRBroadcaster, "wanted/missing_episodes") { GetResourcePaged = GetMissingEpisodes; } private PagingResource GetMissingEpisodes(PagingResource pagingResource) { var pagingSpec = pagingResource.MapToPagingSpec("airDateUtc", SortDirection.Descending); if (pagingResource.FilterKey == "monitored" && pagingResource.FilterValue == "false") { pagingSpec.FilterExpression = v => v.Monitored == false || v.Series.Monitored == false; } else { pagingSpec.FilterExpression = v => v.Monitored == true && v.Series.Monitored == true; } var resource = ApplyToPage(_episodeService.EpisodesWithoutFiles, pagingSpec, v => MapToResource(v, true, false)); return resource; } } }