using System.Collections.Generic; using System.Linq; using NLog; using NzbDrone.Common.Composition; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.ThingiProvider; namespace NzbDrone.Core.Notifications { public interface INotificationFactory : IProviderFactory { List OnGrabEnabled(); List OnDownloadEnabled(); List OnUpgradeEnabled(); List OnRenameEnabled(); } public class NotificationFactory : ProviderFactory, INotificationFactory { public NotificationFactory(INotificationRepository providerRepository, IEnumerable providers, IContainer 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 OnDownloadEnabled() { return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnDownload).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 override NotificationDefinition GetProviderCharacteristics(INotification provider, NotificationDefinition definition) { definition = base.GetProviderCharacteristics(provider, definition); definition.SupportsOnGrab = provider.SupportsOnGrab; definition.SupportsOnDownload = provider.SupportsOnDownload; definition.SupportsOnUpgrade = provider.SupportsOnUpgrade; definition.SupportsOnRename = provider.SupportsOnRename; return definition; } } }