Fixed issues that came up after making changes to Episode and EpisodeFile.

pull/7/merge
markus101 14 years ago
parent 738700537e
commit 891acfff44

@ -51,10 +51,9 @@ namespace NzbDrone.Core.Test
HistoryId = new int(), HistoryId = new int(),
Date = DateTime.Now, Date = DateTime.Now,
IsProper = false, IsProper = false,
Quality = 1, Quality = QualityTypes.TV,
Indexer = indexer, IndexerName = indexer.IndexerName,
Episode = episode, EpisodeId = episode.EpisodeId
EpisodeId = 1234
}); });
var repo = new Mock<IRepository>(); var repo = new Mock<IRepository>();
@ -105,10 +104,9 @@ namespace NzbDrone.Core.Test
HistoryId = new int(), HistoryId = new int(),
Date = DateTime.Now, Date = DateTime.Now,
IsProper = false, IsProper = false,
Quality = 1, Quality = QualityTypes.TV,
Indexer = indexer, IndexerName = indexer.IndexerName,
Episode = episode, EpisodeId = episode.EpisodeId
EpisodeId = 1234
}); });
var proper = false; var proper = false;
@ -162,10 +160,9 @@ namespace NzbDrone.Core.Test
HistoryId = new int(), HistoryId = new int(),
Date = DateTime.Now, Date = DateTime.Now,
IsProper = false, IsProper = false,
Quality = 1, Quality = QualityTypes.TV,
Indexer = indexer, IndexerName = indexer.IndexerName,
Episode = episode, EpisodeId = episode.EpisodeId
EpisodeId = 1234
}); });
var repo = new Mock<IRepository>(); var repo = new Mock<IRepository>();

@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test
Assert.IsNotNull(result); Assert.IsNotNull(result);
repository.Verify(r => r.Add<EpisodeFile>(result), Times.Once()); repository.Verify(r => r.Add<EpisodeFile>(result), Times.Once());
Assert.AreEqual(fakeEpisode.EpisodeId, result.EpisodeId); Assert.AreEqual(fakeEpisode, result.Episodes[0]);
Assert.AreEqual(fakeEpisode.SeriesId, result.SeriesId); Assert.AreEqual(fakeEpisode.SeriesId, result.SeriesId);
Assert.AreEqual(QualityTypes.DVD, result.Quality); Assert.AreEqual(QualityTypes.DVD, result.Quality);
Assert.AreEqual(Parser.NormalizePath(fileName), result.Path); Assert.AreEqual(Parser.NormalizePath(fileName), result.Path);

@ -164,6 +164,8 @@
<Compile Include="Instrumentation\NlogWriter.cs" /> <Compile Include="Instrumentation\NlogWriter.cs" />
<Compile Include="Model\EpisodeParseResult.cs" /> <Compile Include="Model\EpisodeParseResult.cs" />
<Compile Include="Model\EpisodeModel.cs" /> <Compile Include="Model\EpisodeModel.cs" />
<Compile Include="Model\EpisodeRenameModel.cs" />
<Compile Include="Model\EpisodeStatusType.cs" />
<Compile Include="Model\FeedInfoModel.cs" /> <Compile Include="Model\FeedInfoModel.cs" />
<Compile Include="Model\NzbInfoModel.cs" /> <Compile Include="Model\NzbInfoModel.cs" />
<Compile Include="Model\NzbSiteModel.cs" /> <Compile Include="Model\NzbSiteModel.cs" />
@ -173,10 +175,12 @@
<Compile Include="Providers\IIndexerProvider.cs" /> <Compile Include="Providers\IIndexerProvider.cs" />
<Compile Include="Providers\IndexerProvider.cs" /> <Compile Include="Providers\IndexerProvider.cs" />
<Compile Include="Providers\IQualityProvider.cs" /> <Compile Include="Providers\IQualityProvider.cs" />
<Compile Include="Providers\IRenameProvider.cs" />
<Compile Include="Providers\IRssSyncProvider.cs" /> <Compile Include="Providers\IRssSyncProvider.cs" />
<Compile Include="Providers\IRssProvider.cs" /> <Compile Include="Providers\IRssProvider.cs" />
<Compile Include="Providers\ITimerProvider.cs" /> <Compile Include="Providers\ITimerProvider.cs" />
<Compile Include="Providers\QualityProvider.cs" /> <Compile Include="Providers\QualityProvider.cs" />
<Compile Include="Providers\RenameProvider.cs" />
<Compile Include="Providers\RssSyncProvider.cs" /> <Compile Include="Providers\RssSyncProvider.cs" />
<Compile Include="Providers\RssProvider.cs" /> <Compile Include="Providers\RssProvider.cs" />
<Compile Include="Providers\TimerProvider.cs" /> <Compile Include="Providers\TimerProvider.cs" />

@ -94,37 +94,34 @@ namespace NzbDrone.Core.Providers
episode.EpisodeId = dbEpisode.EpisodeId; episode.EpisodeId = dbEpisode.EpisodeId;
var epWithFiles = _sonicRepo.All<EpisodeFile>().Where(c => c.EpisodeId == episode.EpisodeId); var file = _sonicRepo.Single<EpisodeFile>(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) //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 the episodeFile is a Proper we don't need to download again
if (file.Proper) if (file.Proper)
return false; 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;
}
}
} }
} }

@ -51,16 +51,19 @@ namespace NzbDrone.Core.Providers
{ {
var episodesInFile = Parser.ParseEpisodeInfo(filePath); var episodesInFile = Parser.ParseEpisodeInfo(filePath);
var episodes = new List<Episode>();
foreach (var parsedEpisode in episodesInFile) foreach (var parsedEpisode in episodesInFile)
{ {
EpisodeParseResult closureEpisode = parsedEpisode; 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) if (episode != null)
{ {
var episodeFile = new EpisodeFile(); var episodeFile = new EpisodeFile();
episodeFile.DateAdded = DateTime.Now; episodeFile.DateAdded = DateTime.Now;
episodeFile.SeriesId = series.SeriesId; episodeFile.SeriesId = series.SeriesId;
episodeFile.EpisodeId = episode.EpisodeId; episodeFile.Episodes = episodes;
episodeFile.Path = Parser.NormalizePath(filePath); episodeFile.Path = Parser.NormalizePath(filePath);
episodeFile.Size = _diskProvider.GetSize(filePath); episodeFile.Size = _diskProvider.GetSize(filePath);
episodeFile.Quality = Parser.ParseQuality(filePath); episodeFile.Quality = Parser.ParseQuality(filePath);

Loading…
Cancel
Save