Fixed: Do not replace a file unless it contains the same episodes

This commit is contained in:
Mark McDowall
2015-05-05 07:29:38 -07:00
parent c08d8252ff
commit 0c6ca6971d
8 changed files with 183 additions and 0 deletions
@@ -0,0 +1,35 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.DecisionEngine
{
public class SameEpisodesSpecification
{
private readonly IEpisodeService _episodeService;
public SameEpisodesSpecification(IEpisodeService episodeService)
{
_episodeService = episodeService;
}
public bool IsSatisfiedBy(List<Episode> episodes)
{
var episodeIds = episodes.SelectList(e => e.Id);
var episodeFileIds = episodes.Where(c => c.EpisodeFileId != 0).Select(c => c.EpisodeFileId).Distinct();
foreach (var episodeFileId in episodeFileIds)
{
var episodesInFile = _episodeService.GetEpisodesByFileId(episodeFileId);
if (episodesInFile.Select(e => e.Id).Except(episodeIds).Any())
{
return false;
}
}
return true;
}
}
}