Download decision rejection reasons are no longer static messages

New: Better messaging on manual search when release is rejected
This commit is contained in:
Mark McDowall
2014-10-26 22:51:50 -07:00
parent e82b29e346
commit 95d67ef9f4
41 changed files with 265 additions and 378 deletions
@@ -16,36 +16,28 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
_episodeService = episodeService;
}
public string RejectionReason
{
get
{
return "Episode doesn't match";
}
}
public RejectionType Type { get { return RejectionType.Permanent; } }
public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
return true;
return Decision.Accept();
}
var dailySearchSpec = searchCriteria as DailyEpisodeSearchCriteria;
if (dailySearchSpec == null) return true;
if (dailySearchSpec == null) return Decision.Accept();
var episode = _episodeService.GetEpisode(dailySearchSpec.Series.Id, dailySearchSpec.AirDate.ToString(Episode.AIR_DATE_FORMAT));
if (!remoteEpisode.ParsedEpisodeInfo.IsDaily || remoteEpisode.ParsedEpisodeInfo.AirDate != episode.AirDate)
{
_logger.Debug("Episode AirDate does not match searched episode number, skipping.");
return false;
return Decision.Reject("Episode does not match");
}
return true;
return Decision.Accept();
}
}
}
@@ -15,31 +15,25 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
_logger = logger;
}
public string RejectionReason
{
get
{
return "Episode wasn't requested";
}
}
public RejectionType Type { get { return RejectionType.Permanent; } }
public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
return true;
return Decision.Accept();
}
var criteriaEpisodes = searchCriteria.Episodes.Select(v => v.Id).ToList();
var remoteEpisodes = remoteEpisode.Episodes.Select(v => v.Id).ToList();
if (!criteriaEpisodes.Intersect(remoteEpisodes).Any())
{
_logger.Debug("Release rejected since the episode wasn't requested: {0}", remoteEpisode.ParsedEpisodeInfo);
return false;
return Decision.Reject("Episode wasn't requested");
}
return true;
return Decision.Accept();
}
}
}
@@ -13,33 +13,25 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
_logger = logger;
}
public string RejectionReason
{
get
{
return "Episode doesn't match";
}
}
public RejectionType Type { get { return RejectionType.Permanent; } }
public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
return true;
return Decision.Accept();
}
var singleEpisodeSpec = searchCriteria as SeasonSearchCriteria;
if (singleEpisodeSpec == null) return true;
if (singleEpisodeSpec == null) return Decision.Accept();
if (singleEpisodeSpec.SeasonNumber != remoteEpisode.ParsedEpisodeInfo.SeasonNumber)
{
_logger.Debug("Season number does not match searched season number, skipping.");
return false;
return Decision.Reject("Wrong season");
}
return true;
return Decision.Accept();
}
}
}
@@ -13,21 +13,13 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
_logger = logger;
}
public string RejectionReason
{
get
{
return "Wrong series";
}
}
public RejectionType Type { get { return RejectionType.Permanent; } }
public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
return true;
return Decision.Accept();
}
_logger.Debug("Checking if series matches searched series");
@@ -35,10 +27,10 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
if (remoteEpisode.Series.Id != searchCriteria.Series.Id)
{
_logger.Debug("Series {0} does not match {1}", remoteEpisode.Series, searchCriteria.Series);
return false;
return Decision.Reject("Wrong series");
}
return true;
return Decision.Accept();
}
}
}
@@ -14,39 +14,31 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
_logger = logger;
}
public string RejectionReason
{
get
{
return "Episode doesn't match";
}
}
public RejectionType Type { get { return RejectionType.Permanent; } }
public bool IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
public Decision IsSatisfiedBy(RemoteEpisode remoteEpisode, SearchCriteriaBase searchCriteria)
{
if (searchCriteria == null)
{
return true;
return Decision.Accept();
}
var singleEpisodeSpec = searchCriteria as SingleEpisodeSearchCriteria;
if (singleEpisodeSpec == null) return true;
if (singleEpisodeSpec == null) return Decision.Accept();
if (singleEpisodeSpec.SeasonNumber != remoteEpisode.ParsedEpisodeInfo.SeasonNumber)
{
_logger.Debug("Season number does not match searched season number, skipping.");
return false;
return Decision.Reject("Wrong season");
}
if (!remoteEpisode.ParsedEpisodeInfo.EpisodeNumbers.Contains(singleEpisodeSpec.EpisodeNumber))
{
_logger.Debug("Episode number does not match searched episode number, skipping.");
return false;
return Decision.Reject("Wrong episode");
}
return true;
return Decision.Accept();
}
}
}