using System.Linq; using System; using NLog; using NzbDrone.Common; using NzbDrone.Core.Tv; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers; namespace NzbDrone.Core.Jobs { public class DeleteSeriesJob : IJob { private readonly ISeriesService _seriesService; private readonly RecycleBinProvider _recycleBinProvider; private readonly ISeriesRepository _seriesRepository; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public DeleteSeriesJob(ISeriesService seriesService, RecycleBinProvider recycleBinProvider, ISeriesRepository seriesRepository) { _seriesService = seriesService; _recycleBinProvider = recycleBinProvider; _seriesRepository = seriesRepository; } public string Name { get { return "Delete Series"; } } public TimeSpan DefaultInterval { get { return TimeSpan.FromTicks(0); } } public void Start(ProgressNotification notification, dynamic options) { if (options == null) throw new ArgumentNullException("options"); if (options.SeriesId == 0) throw new ArgumentNullException("options.SeriesId"); DeleteSeries(notification, (int)options.SeriesId, (bool)options.DeleteFiles); } private void DeleteSeries(ProgressNotification notification, int seriesId, bool deleteFiles) { Logger.Trace("Deleting Series [{0}]", seriesId); var series = _seriesRepository.Get(seriesId); var title = series.Title; notification.CurrentMessage = String.Format("Deleting '{0}' from database", title); _seriesRepository.Delete(seriesId); notification.CurrentMessage = String.Format("Successfully deleted '{0}' from database", title); if (deleteFiles) { notification.CurrentMessage = String.Format("Deleting files from disk for series '{0}'", title); _recycleBinProvider.DeleteDirectory(series.Path); notification.CurrentMessage = String.Format("Successfully deleted files from disk for series '{0}'", title); } } } }