public StartupConditionResult Check()
        {
            RenewActivation();

            if (_activationHelper.IsLicenseValid)
            {
                return(StartupConditionResult.BuildSuccess());
            }

            _logger.Error("Invalid or expired license.");

            var editionWithVersionNumber = _applicationNameProvider.ApplicationName + " " + _versionHelper.FormatWithThreeDigits();

            _settingsManager.LoadAllSettings();
            var settingsProvider = _settingsManager.GetSettingsProvider();

            if (settingsProvider.GpoSettings.HideLicenseTab)
            {
                var errorMessage = _translator.GetFormattedTranslation("Program",
                                                                       "LicenseInvalidGpoHideLicenseTab",
                                                                       editionWithVersionNumber);
                return(StartupConditionResult.BuildErrorWithMessage((int)ExitCode.LicenseInvalidAndHiddenWithGpo, errorMessage));
            }

            var caption = _applicationNameProvider.ApplicationName;
            var message = _translator.GetFormattedTranslation("Program", "LicenseInvalid", editionWithVersionNumber);
            var result  = ShowMessage(message, caption, MessageOptions.YesNo, MessageIcon.Exclamation);

            if (result != MessageResponse.Yes)
            {
                return(StartupConditionResult.BuildErrorWithMessage((int)ExitCode.LicenseInvalidAndNotReactivated, "The license is invalid!", showMessage: false));
            }

            var interaction = new LicenseInteraction();

            _interactionInvoker.Invoke(interaction);

            //Check latest edition for validity
            _activationHelper.LoadActivation();

            if (_activationHelper.IsLicenseValid)
            {
                return(StartupConditionResult.BuildSuccess());
            }

            return(StartupConditionResult.BuildErrorWithMessage((int)ExitCode.LicenseInvalidAfterReactivation, _translator.GetFormattedTranslation("Program", "LicenseInvalidAfterReactivation", _applicationNameProvider.ApplicationName)));
        }
        public StartupConditionResult Check()
        {
            var activation = RenewActivation();

            if (activation.Exists(a => a.IsActivationStillValid()))
            {
                return(StartupConditionResult.BuildSuccess());
            }

            _logger.Error("Invalid or expired license.");

            var editionWithVersionNumber = _applicationNameProvider.ApplicationNameWithEdition + " " + _versionHelper.FormatWithThreeDigits();

            if (_gpoSettings.HideLicenseTab)
            {
                var errorMessage = _translation.GetFormattedLicenseInvalidGpoHideLicenseTab(editionWithVersionNumber);
                return(StartupConditionResult.BuildErrorWithMessage((int)ExitCode.LicenseInvalidAndHiddenWithGpo, errorMessage));
            }

            var caption = _applicationNameProvider.ApplicationName;
            var message = _translation.GetFormattedLicenseInvalidTranslation(editionWithVersionNumber);
            var result  = ShowMessage(message, caption, MessageOptions.YesNo, MessageIcon.Exclamation);

            if (result != MessageResponse.Yes)
            {
                return(StartupConditionResult.BuildErrorWithMessage((int)ExitCode.LicenseInvalidAndNotReactivated, "The license is invalid!", showMessage: false));
            }

            var interaction = new LicenseInteraction();

            _interactionInvoker.Invoke(interaction);

            //Check latest edition for validity
            activation = _licenseChecker.GetSavedActivation();

            if (activation.Exists(a => a.IsActivationStillValid()))
            {
                return(StartupConditionResult.BuildSuccess());
            }

            return(StartupConditionResult.BuildErrorWithMessage((int)ExitCode.LicenseInvalidAfterReactivation, _translation.GetFormattedLicenseInvalidAfterReactivationTranslation(_applicationNameProvider.ApplicationNameWithEdition)));
        }