public void Handle(EpisodeFileDeletedEvent message) { if (message.Reason == DeleteMediaFileReason.NoLinkedEpisodes) { _logger.Debug("Removing episode file from DB as part of cleanup routine, not creating history event."); return; } foreach (var episode in message.EpisodeFile.Episodes.Value) { var history = new History { EventType = HistoryEventType.EpisodeFileDeleted, Date = DateTime.UtcNow, Quality = message.EpisodeFile.Quality, SourceTitle = message.EpisodeFile.Path, SeriesId = message.EpisodeFile.SeriesId, EpisodeId = episode.Id, }; history.Data.Add("Reason", message.Reason.ToString()); _historyRepository.Insert(history); } }
public void Handle(EpisodeFileDeletedEvent message) { if (message.EpisodeFile.Episodes.Value.Empty()) { _logger.Trace("Skipping notification for deleted file without an episode (episode metadata was removed)"); return; } var deleteMessage = new EpisodeDeleteMessage(); deleteMessage.Message = GetMessage(message.EpisodeFile.Series, message.EpisodeFile.Episodes, message.EpisodeFile.Quality); deleteMessage.Series = message.EpisodeFile.Series; deleteMessage.EpisodeFile = message.EpisodeFile; deleteMessage.Reason = message.Reason; foreach (var notification in _notificationFactory.OnEpisodeFileDeleteEnabled()) { try { if (message.Reason != MediaFiles.DeleteMediaFileReason.Upgrade || ((NotificationDefinition)notification.Definition).OnEpisodeFileDeleteForUpgrade) { if (ShouldHandleSeries(notification.Definition, deleteMessage.EpisodeFile.Series)) { notification.OnEpisodeFileDelete(deleteMessage); } } } catch (Exception ex) { _logger.Warn(ex, "Unable to send OnDelete notification to: " + notification.Definition.Name); } } }
public void Handle(EpisodeFileDeletedEvent message) { if (message.Reason == DeleteMediaFileReason.NoLinkedEpisodes) { _logger.Debug("Removing episode file from DB as part of cleanup routine, not creating history event."); return; } else if (message.Reason == DeleteMediaFileReason.ManualOverride) { _logger.Debug("Removing episode file from DB as part of manual override of existing file, not creating history event."); return; } var episodeFilePreferredWordScore = _episodeFilePreferredWordCalculator.Calculate(message.EpisodeFile.Series, message.EpisodeFile); foreach (var episode in message.EpisodeFile.Episodes.Value) { var history = new EpisodeHistory { EventType = EpisodeHistoryEventType.EpisodeFileDeleted, Date = DateTime.UtcNow, Quality = message.EpisodeFile.Quality, SourceTitle = message.EpisodeFile.Path, SeriesId = message.EpisodeFile.SeriesId, EpisodeId = episode.Id, Language = message.EpisodeFile.Language }; history.Data.Add("Reason", message.Reason.ToString()); history.Data.Add("PreferredWordScore", episodeFilePreferredWordScore.ToString()); history.Data.Add("ReleaseGroup", message.EpisodeFile.ReleaseGroup); _historyRepository.Insert(history); } }
public void Handle(EpisodeFileDeletedEvent message) { var episodeFile = message.EpisodeFile; if (message.Reason == DeleteMediaFileReason.NoLinkedEpisodes) { _logger.Debug("Removing episode file from DB as part of cleanup routine, not deleting extra files from disk."); } else { var series = _seriesService.GetSeries(message.EpisodeFile.SeriesId); foreach (var extra in _repository.GetFilesByEpisodeFile(episodeFile.Id)) { var path = Path.Combine(series.Path, extra.RelativePath); if (_diskProvider.FileExists(path)) { // Send to the recycling bin so they can be recovered if necessary var subfolder = _diskProvider.GetParentFolder(series.Path).GetRelativePath(_diskProvider.GetParentFolder(path)); _recycleBinProvider.DeleteFile(path, subfolder); } } } _logger.Debug("Deleting Extra from database for episode file: {0}", episodeFile); _repository.DeleteForEpisodeFile(episodeFile.Id); }
public void Handle(EpisodeFileDeletedEvent message) { var deleteMessage = new EpisodeDeleteMessage(); deleteMessage.Message = GetMessage(message.EpisodeFile.Series, message.EpisodeFile.Episodes, message.EpisodeFile.Quality); deleteMessage.Series = message.EpisodeFile.Series; deleteMessage.EpisodeFile = message.EpisodeFile; deleteMessage.Reason = message.Reason; foreach (var notification in _notificationFactory.OnEpisodeFileDeleteEnabled()) { try { if (message.Reason != MediaFiles.DeleteMediaFileReason.Upgrade || ((NotificationDefinition)notification.Definition).OnEpisodeFileDeleteForUpgrade) { if (ShouldHandleSeries(notification.Definition, deleteMessage.EpisodeFile.Series)) { notification.OnEpisodeFileDelete(deleteMessage); } } } catch (Exception ex) { _logger.Warn(ex, "Unable to send OnDelete notification to: " + notification.Definition.Name); } } }
public void Handle(EpisodeFileDeletedEvent message) { if (_configService.DeleteEmptyFolders) { var series = message.EpisodeFile.Series.Value; var seriesPath = series.Path; var folder = message.EpisodeFile.Path.GetParentPath(); while (seriesPath.IsParentPath(folder)) { if (_diskProvider.FolderExists(folder)) { _diskProvider.RemoveEmptySubfolders(folder); } folder = folder.GetParentPath(); } _diskProvider.RemoveEmptySubfolders(seriesPath); if (_diskProvider.FolderEmpty(seriesPath)) { _diskProvider.DeleteFolder(seriesPath, true); } } }
public void Handle(EpisodeFileDeletedEvent message) { foreach (var episode in message.EpisodeFile.Episodes.Value) { BroadcastResourceChange(ModelAction.Updated, episode.Id); } }
public void HandleAsync(EpisodeFileDeletedEvent message) { var episodeFile = message.EpisodeFile; var series = _seriesService.GetSeries(message.EpisodeFile.SeriesId); foreach (var extra in _repository.GetFilesByEpisodeFile(episodeFile.Id)) { var path = Path.Combine(series.Path, extra.RelativePath); if (_diskProvider.FileExists(path)) { if (PermanentlyDelete) { _diskProvider.DeleteFile(path); } else { // Send extra files to the recycling bin so they can be recovered if necessary _recycleBinProvider.DeleteFile(path); } } } _logger.Debug("Deleting Extra from database for episode file: {0}", episodeFile); _repository.DeleteForEpisodeFile(episodeFile.Id); }
public void Handle(EpisodeFileDeletedEvent message) { if (message.Reason == DeleteMediaFileReason.Upgrade) { return; } BroadcastResourceChange(ModelAction.Updated, message.EpisodeFile.SeriesId); }
public void HandleAsync(EpisodeFileDeletedEvent message) { var episodeFile = message.EpisodeFile; var series = _seriesService.GetSeries(message.EpisodeFile.SeriesId); foreach (var metadata in _repository.GetFilesByEpisodeFile(episodeFile.Id)) { var path = Path.Combine(series.Path, metadata.RelativePath); if (_diskProvider.FileExists(path)) { _diskProvider.DeleteFile(path); } } _logger.Debug("Deleting Metadata from database for episode file: {0}", episodeFile); _repository.DeleteForEpisodeFile(episodeFile.Id); }
public void Handle(EpisodeFileDeletedEvent message) { if (message.Reason == DeleteMediaFileReason.Upgrade) { return; } if (_configService.DeleteEmptyFolders) { var series = message.EpisodeFile.Series.Value; var seasonFolder = message.EpisodeFile.Path.GetParentPath(); if (_diskProvider.GetFiles(series.Path, SearchOption.AllDirectories).Empty()) { _diskProvider.DeleteFolder(series.Path, true); } else if (_diskProvider.GetFiles(seasonFolder, SearchOption.AllDirectories).Empty()) { _diskProvider.RemoveEmptySubfolders(seasonFolder); } } }
public void Handle(EpisodeFileDeletedEvent message) { BroadcastResourceChange(ModelAction.Deleted, message.EpisodeFile.Id); }