You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/NzbDrone.Core/DecisionEngine/SameTracksSpecification.cs

38 lines
1007 B

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Music;
namespace NzbDrone.Core.DecisionEngine
{
public class SameTracksSpecification
{
private readonly ITrackService _trackService;
public SameTracksSpecification(ITrackService trackService)
{
_trackService = trackService;
}
public bool IsSatisfiedBy(List<Track> tracks)
{
var trackIds = tracks.SelectList(e => e.Id);
var trackFileIds = tracks.Where(c => c.TrackFileId != 0).Select(c => c.TrackFileId).Distinct();
foreach (var trackFileId in trackFileIds)
{
var tracksInFile = _trackService.GetTracksByFileId(trackFileId);
if (tracksInFile.Select(e => e.Id).Except(trackIds).Any())
{
return false;
}
}
return true;
}
}
}