using System; using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.ThingiProvider; namespace NzbDrone.Core.Notifications { public interface INotificationFactory : IProviderFactory { List OnGrabEnabled(); List OnReleaseImportEnabled(); List OnUpgradeEnabled(); List OnRenameEnabled(); List OnAlbumDeleteEnabled(); List OnArtistDeleteEnabled(); List OnHealthIssueEnabled(); List OnHealthRestoredEnabled(); List OnDownloadFailureEnabled(); List OnImportFailureEnabled(); List OnTrackRetagEnabled(); List OnApplicationUpdateEnabled(); } public class NotificationFactory : ProviderFactory, INotificationFactory { public NotificationFactory(INotificationRepository providerRepository, IEnumerable providers, IServiceProvider container, IEventAggregator eventAggregator, Logger logger) : base(providerRepository, providers, container, eventAggregator, logger) { } public List OnGrabEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnGrab).ToList(); } public List OnReleaseImportEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnReleaseImport).ToList(); } public List OnUpgradeEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnUpgrade).ToList(); } public List OnRenameEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnRename).ToList(); } public List OnAlbumDeleteEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnAlbumDelete).ToList(); } public List OnArtistDeleteEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnArtistDelete).ToList(); } public List OnHealthIssueEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnHealthIssue).ToList(); } public List OnHealthRestoredEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnHealthRestored).ToList(); } public List OnDownloadFailureEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnDownloadFailure).ToList(); } public List OnImportFailureEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnImportFailure).ToList(); } public List OnTrackRetagEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnTrackRetag).ToList(); } public List OnApplicationUpdateEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnApplicationUpdate).ToList(); } public override void SetProviderCharacteristics(INotification provider, NotificationDefinition definition) { base.SetProviderCharacteristics(provider, definition); definition.SupportsOnGrab = provider.SupportsOnGrab; definition.SupportsOnReleaseImport = provider.SupportsOnReleaseImport; definition.SupportsOnUpgrade = provider.SupportsOnUpgrade; definition.SupportsOnRename = provider.SupportsOnRename; definition.SupportsOnAlbumDelete = provider.SupportsOnAlbumDelete; definition.SupportsOnArtistDelete = provider.SupportsOnArtistDelete; definition.SupportsOnHealthIssue = provider.SupportsOnHealthIssue; definition.SupportsOnHealthRestored = provider.SupportsOnHealthRestored; definition.SupportsOnDownloadFailure = provider.SupportsOnDownloadFailure; definition.SupportsOnImportFailure = provider.SupportsOnImportFailure; definition.SupportsOnTrackRetag = provider.SupportsOnTrackRetag; definition.SupportsOnApplicationUpdate = provider.SupportsOnApplicationUpdate; } } }