using NLog; using NzbDrone.Core.CustomFormats; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Download; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; namespace NzbDrone.Core.MediaFiles.MovieImport.Specifications { public class UpgradeSpecification : IImportDecisionEngineSpecification { private readonly Logger _logger; public UpgradeSpecification(ICustomFormatCalculationService customFormatCalculationService, Logger logger) { _logger = logger; } public Decision IsSatisfiedBy(LocalMovie localMovie, DownloadClientItem downloadClientItem) { var qualityComparer = new QualityModelComparer(localMovie.Movie.Profile); if (localMovie.Movie.MovieFileId > 0) { var movieFile = localMovie.Movie.MovieFile; if (movieFile == null) { _logger.Trace("Unable to get movie file details from the DB. MovieId: {0} MovieFileId: {1}", localMovie.Movie.Id, localMovie.Movie.MovieFileId); return Decision.Accept(); } var qualityCompare = qualityComparer.Compare(localMovie.Quality.Quality, movieFile.Quality.Quality); if (qualityCompare < 0) { _logger.Debug("This file isn't a quality upgrade for movie. Skipping {0}", localMovie.Path); return Decision.Reject("Not a quality upgrade for existing movie file(s)"); } } return Decision.Accept(); } } }