diff --git a/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPCheck.cs index 7c12348b7..eff84cc67 100644 --- a/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPCheck.cs +++ b/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPCheck.cs @@ -23,11 +23,10 @@ namespace NzbDrone.Core.HealthCheck.Checks public override HealthCheck Check() { - var enabled = _indexerFactory.Enabled(false); + var indexers = _indexerFactory.AllProviders(false); var expiringProviders = new List(); - var expiredProviders = new List(); - foreach (var provider in enabled) + foreach (var provider in indexers) { var settingsType = provider.Definition.Settings.GetType(); var vipProp = settingsType.GetProperty("VipExpiration"); @@ -44,11 +43,6 @@ namespace NzbDrone.Core.HealthCheck.Checks continue; } - if (DateTime.Parse(expiration).Before(DateTime.Now)) - { - expiredProviders.Add(provider); - } - if (DateTime.Parse(expiration).Between(DateTime.Now, DateTime.Now.AddDays(7))) { expiringProviders.Add(provider); @@ -64,15 +58,6 @@ namespace NzbDrone.Core.HealthCheck.Checks "#indexer-vip-expiring"); } - if (!expiredProviders.Empty()) - { - return new HealthCheck(GetType(), - HealthCheckResult.Warning, - string.Format(_localizationService.GetLocalizedString("IndexerVipCheckExpiredClientMessage"), - string.Join(", ", expiredProviders.Select(v => v.Definition.Name))), - "#indexer-vip-expired"); - } - return new HealthCheck(GetType()); } } diff --git a/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPExpiredCheck.cs b/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPExpiredCheck.cs new file mode 100644 index 000000000..5170897c4 --- /dev/null +++ b/src/NzbDrone.Core/HealthCheck/Checks/IndexerVIPExpiredCheck.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NzbDrone.Common.Extensions; +using NzbDrone.Core.Indexers; +using NzbDrone.Core.Localization; +using NzbDrone.Core.ThingiProvider.Events; + +namespace NzbDrone.Core.HealthCheck.Checks +{ + [CheckOn(typeof(ProviderAddedEvent))] + [CheckOn(typeof(ProviderUpdatedEvent))] + [CheckOn(typeof(ProviderDeletedEvent))] + public class IndexerVIPExpiredCheck : HealthCheckBase + { + private readonly IIndexerFactory _indexerFactory; + + public IndexerVIPExpiredCheck(IIndexerFactory indexerFactory, ILocalizationService localizationService) + : base(localizationService) + { + _indexerFactory = indexerFactory; + } + + public override HealthCheck Check() + { + var indexers = _indexerFactory.AllProviders(false); + var expiredProviders = new List(); + + foreach (var provider in indexers) + { + var settingsType = provider.Definition.Settings.GetType(); + var vipProp = settingsType.GetProperty("VipExpiration"); + + if (vipProp == null) + { + continue; + } + + var expiration = (string)vipProp.GetValue(provider.Definition.Settings); + + if (expiration.IsNullOrWhiteSpace()) + { + continue; + } + + if (DateTime.Parse(expiration).Before(DateTime.Now)) + { + expiredProviders.Add(provider); + } + } + + if (!expiredProviders.Empty()) + { + return new HealthCheck(GetType(), + HealthCheckResult.Error, + string.Format(_localizationService.GetLocalizedString("IndexerVipCheckExpiredClientMessage"), + string.Join(", ", expiredProviders.Select(v => v.Definition.Name))), + "#indexer-vip-expired"); + } + + return new HealthCheck(GetType()); + } + } +}