using System; using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Common.Eventing; using NzbDrone.Core.Download; using NzbDrone.Core.Tv; namespace NzbDrone.Core.History { public interface IHistoryService { List All(); void Purge(); void Trim(); QualityModel GetBestQualityInHistory(int episodeId); } public class HistoryService : IHistoryService, IHandle { private readonly IHistoryRepository _historyRepository; private readonly Logger _logger; public HistoryService(IHistoryRepository historyRepository, Logger logger) { _historyRepository = historyRepository; _logger = logger; } public List All() { return _historyRepository.All().ToList(); } public void Purge() { _historyRepository.Purge(); } public virtual void Trim() { _historyRepository.Trim(); } public virtual QualityModel GetBestQualityInHistory(int episodeId) { return _historyRepository.GetBestQualityInHistory(episodeId); } public void Handle(EpisodeGrabbedEvent message) { foreach (var episode in message.ParseResult.Episodes) { var history = new History { Date = DateTime.Now, Indexer = message.ParseResult.Indexer, Quality = message.ParseResult.Quality, NzbTitle = message.ParseResult.OriginalString, EpisodeId = episode.Id, NzbInfoUrl = message.ParseResult.NzbInfoUrl, ReleaseGroup = message.ParseResult.ReleaseGroup, }; _historyRepository.Insert(history); } } } }