1using NLog;
2using NzbDrone.Core.IndexerSearch.Definitions;
3using NzbDrone.Core.Parser.Model;
4
5namespace NzbDrone.Core.DecisionEngine.Specifications.Search
6{
7 public class SeriesSpecification : IDownloadDecisionEngineSpecification
8 {
9 private readonly Logger _logger;
10
11 public SeriesSpecification(Logger logger)
12 {
13 _logger = logger;
14 }
15
16 public SpecificationPriority Priority => SpecificationPriority.Default;
17 public RejectionType Type => RejectionType.Permanent;
18
19 public DownloadSpecDecision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
20 {
21 if (searchCriteria == null)
22 {
23 return DownloadSpecDecision.Accept();
24 }
25
26 _logger.Debug("Checking if series matches searched series");
27
28 if (remoteEpisode.Series.Id != searchCriteria.Series.Id)
29 {
30 _logger.Debug("Series {0} does not match {1}", remoteEpisode.Series, searchCriteria.Series);
31 return DownloadSpecDecision.Reject(DownloadRejectionReason.WrongSeries, "Wrong series");
32 }
33
34 return DownloadSpecDecision.Accept();
35 }
36 }
37}
38