From 891acfff4491b412e7169b8a1547ec4f14e31f2e Mon Sep 17 00:00:00 2001 From: markus101 Date: Tue, 22 Feb 2011 00:13:16 -0800 Subject: [PATCH] Fixed issues that came up after making changes to Episode and EpisodeFile. --- NzbDrone.Core.Test/HistoryProviderTest.cs | 21 +++++----- NzbDrone.Core.Test/MediaFileProviderTests.cs | 2 +- NzbDrone.Core/NzbDrone.Core.csproj | 4 ++ NzbDrone.Core/Providers/EpisodeProvider.cs | 41 +++++++++----------- NzbDrone.Core/Providers/MediaFileProvider.cs | 7 +++- 5 files changed, 38 insertions(+), 37 deletions(-) diff --git a/NzbDrone.Core.Test/HistoryProviderTest.cs b/NzbDrone.Core.Test/HistoryProviderTest.cs index 2f2f1b3aa..2c44f3722 100644 --- a/NzbDrone.Core.Test/HistoryProviderTest.cs +++ b/NzbDrone.Core.Test/HistoryProviderTest.cs @@ -51,10 +51,9 @@ namespace NzbDrone.Core.Test HistoryId = new int(), Date = DateTime.Now, IsProper = false, - Quality = 1, - Indexer = indexer, - Episode = episode, - EpisodeId = 1234 + Quality = QualityTypes.TV, + IndexerName = indexer.IndexerName, + EpisodeId = episode.EpisodeId }); var repo = new Mock(); @@ -105,10 +104,9 @@ namespace NzbDrone.Core.Test HistoryId = new int(), Date = DateTime.Now, IsProper = false, - Quality = 1, - Indexer = indexer, - Episode = episode, - EpisodeId = 1234 + Quality = QualityTypes.TV, + IndexerName = indexer.IndexerName, + EpisodeId = episode.EpisodeId }); var proper = false; @@ -162,10 +160,9 @@ namespace NzbDrone.Core.Test HistoryId = new int(), Date = DateTime.Now, IsProper = false, - Quality = 1, - Indexer = indexer, - Episode = episode, - EpisodeId = 1234 + Quality = QualityTypes.TV, + IndexerName = indexer.IndexerName, + EpisodeId = episode.EpisodeId }); var repo = new Mock(); diff --git a/NzbDrone.Core.Test/MediaFileProviderTests.cs b/NzbDrone.Core.Test/MediaFileProviderTests.cs index a74ef8ea8..cddd01b62 100644 --- a/NzbDrone.Core.Test/MediaFileProviderTests.cs +++ b/NzbDrone.Core.Test/MediaFileProviderTests.cs @@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test Assert.IsNotNull(result); repository.Verify(r => r.Add(result), Times.Once()); - Assert.AreEqual(fakeEpisode.EpisodeId, result.EpisodeId); + Assert.AreEqual(fakeEpisode, result.Episodes[0]); Assert.AreEqual(fakeEpisode.SeriesId, result.SeriesId); Assert.AreEqual(QualityTypes.DVD, result.Quality); Assert.AreEqual(Parser.NormalizePath(fileName), result.Path); diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 63e65c0c4..ce6167a7a 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -164,6 +164,8 @@ + + @@ -173,10 +175,12 @@ + + diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index 62b768c88..e9f3c84b0 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -94,37 +94,34 @@ namespace NzbDrone.Core.Providers episode.EpisodeId = dbEpisode.EpisodeId; - var epWithFiles = _sonicRepo.All().Where(c => c.EpisodeId == episode.EpisodeId); + var file = _sonicRepo.Single(c => c.FileId == dbEpisode.FileId); - if (epWithFiles != null) + if (file != null) { //If not null we need to see if this episode has the quality as the download (or if it is better) - foreach (var file in epWithFiles) + if (file.Quality == episode.Quality) { - if (file.Quality == episode.Quality) + //If the episodeFile is a Proper we don't need to download again + if (file.Proper) + return false; + } + + //There will never be a time when the episode quality is less than what we have and we want it... ever.... I think. + if (file.Quality > episode.Quality) + return false; + + //Now we need to handle upgrades and actually pay attention to the Cutoff Value + if (file.Quality < episode.Quality) + { + var series = _series.GetSeries(episode.SeriesId); + var quality = _quality.Find(series.QualityProfileId); + + if (quality.Cutoff <= file.Quality) { //If the episodeFile is a Proper we don't need to download again if (file.Proper) return false; } - - //There will never be a time when the episode quality is less than what we have and we want it... ever.... I think. - if (file.Quality > episode.Quality) - return false; - - //Now we need to handle upgrades and actually pay attention to the Cutoff Value - if (file.Quality < episode.Quality) - { - var series = _series.GetSeries(episode.SeriesId); - var quality = _quality.Find(series.QualityProfileId); - - if (quality.Cutoff <= file.Quality) - { - //If the episodeFile is a Proper we don't need to download again - if (file.Proper) - return false; - } - } } } diff --git a/NzbDrone.Core/Providers/MediaFileProvider.cs b/NzbDrone.Core/Providers/MediaFileProvider.cs index bb4b7b2ec..e93965a82 100644 --- a/NzbDrone.Core/Providers/MediaFileProvider.cs +++ b/NzbDrone.Core/Providers/MediaFileProvider.cs @@ -51,16 +51,19 @@ namespace NzbDrone.Core.Providers { var episodesInFile = Parser.ParseEpisodeInfo(filePath); + var episodes = new List(); foreach (var parsedEpisode in episodesInFile) { EpisodeParseResult closureEpisode = parsedEpisode; - var episode = _episodeProvider.GetEpisode(series.SeriesId, closureEpisode.SeasonNumber, closureEpisode.EpisodeNumber); + var episode = _episodeProvider.GetEpisode(series.SeriesId, closureEpisode.SeasonNumber, + closureEpisode.EpisodeNumber); + episodes.Add(episode); if (episode != null) { var episodeFile = new EpisodeFile(); episodeFile.DateAdded = DateTime.Now; episodeFile.SeriesId = series.SeriesId; - episodeFile.EpisodeId = episode.EpisodeId; + episodeFile.Episodes = episodes; episodeFile.Path = Parser.NormalizePath(filePath); episodeFile.Size = _diskProvider.GetSize(filePath); episodeFile.Quality = Parser.ParseQuality(filePath);