public IActionResult ConfigureSMTP(ConfigurationModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Configure());
            }

            var storeId            = _storeContext.ActiveStoreScopeConfiguration;
            var sendinBlueSettings = _settingService.LoadSetting <SendinBlueSettings>(storeId);

            if (model.UseSmtp)
            {
                //set case invariant for true because tokens are used in uppercase format in SendinBlue's transactional emails
                _messageTemplatesSettings.CaseInvariantReplacement = true;
                _settingService.SaveSetting(_messageTemplatesSettings, settings => settings.CaseInvariantReplacement, clearCache: false);

                //check whether SMTP enabled on account
                var(smtpIsEnabled, smtpErrors) = _sendinBlueEmailManager.SmtpIsEnabled();
                if (smtpIsEnabled)
                {
                    //get email account or create new one
                    var(emailAccountId, emailAccountErrors) = _sendinBlueEmailManager.GetEmailAccountId(model.SenderId, model.SmtpKey);
                    sendinBlueSettings.EmailAccountId       = emailAccountId;
                    _settingService.SaveSetting(sendinBlueSettings, settings => settings.EmailAccountId, storeId, false);
                    if (!string.IsNullOrEmpty(emailAccountErrors))
                    {
                        _notificationService.ErrorNotification($"{SendinBlueDefaults.NotificationMessage} {emailAccountErrors}");
                    }
                }
                else
                {
                    //need to activate SMTP account
                    _notificationService.WarningNotification(_localizationService.GetResource("Plugins.Misc.SendinBlue.ActivateSMTP"));
                    model.UseSmtp = false;
                }
                if (!string.IsNullOrEmpty(smtpErrors))
                {
                    _notificationService.ErrorNotification($"{SendinBlueDefaults.NotificationMessage} {smtpErrors}");
                }
            }

            //set whether to use SMTP
            sendinBlueSettings.UseSmtp = model.UseSmtp;
            _settingService.SaveSettingOverridablePerStore(sendinBlueSettings, settings => settings.UseSmtp, model.UseSmtp_OverrideForStore, storeId, false);

            //set sender of transactional emails
            sendinBlueSettings.SenderId = model.SenderId;
            _settingService.SaveSettingOverridablePerStore(sendinBlueSettings, settings => settings.SenderId, model.SenderId_OverrideForStore, storeId, false);

            //set SMTP key
            sendinBlueSettings.SmtpKey = model.SmtpKey;
            _settingService.SaveSetting(sendinBlueSettings, settings => settings.SmtpKey, clearCache: false);

            //now clear settings cache
            _settingService.ClearCache();

            _notificationService.SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved"));

            return(Configure());
        }
Beispiel #2
0
        public IActionResult ConfigureSMTP(ConfigurationModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Configure());
            }

            var storeId            = _storeContext.ActiveStoreScopeConfiguration;
            var sendInBlueSettings = _settingService.LoadSetting <SendinBlueSettings>(storeId);

            if (model.UseSmtp)
            {
                //set case invariant for true because tokens are used in uppercase format in SendinBlue's transactional emails
                _messageTemplatesSettings.CaseInvariantReplacement = true;
                _settingService.SaveSetting(_messageTemplatesSettings, x => x.CaseInvariantReplacement, clearCache: false);

                //check whether SMTP enabled on account
                var(smtpIsEnabled, smtpErrors) = _sendInBlueEmailManager.SmtpIsEnabled();
                if (smtpIsEnabled)
                {
                    //get email account or create new one
                    var(emailAccountId, emailAccountErrors) = _sendInBlueEmailManager.GetEmailAccountId(model.SenderId, model.SmtpKey);
                    sendInBlueSettings.EmailAccountId       = emailAccountId;
                    _settingService.SaveSetting(sendInBlueSettings, x => x.EmailAccountId, storeId, false);
                    if (!string.IsNullOrEmpty(emailAccountErrors))
                    {
                        ErrorNotification(SendinBlueDefaults.NotificationMessage + emailAccountErrors);
                    }

                    //synchronize message templates tokens with transactional attributes

                    /*var tokens = _messageTokenProvider.GetListOfAllowedTokens().ToList();
                     * var attributesErrors = _sendInBlueEmailManager.PrepareTransactionalAttributes(tokens);
                     * if (!string.IsNullOrEmpty(attributesErrors))
                     *  ErrorNotification(SendinBlueDefaults.NotificationMessage + attributesErrors);*/
                }
                else
                {
                    //need to activate SMTP account
                    WarningNotification(_localizationService.GetResource("Plugins.Misc.SendinBlue.ActivateSMTP"));
                    model.UseSmtp = false;
                }
                if (!string.IsNullOrEmpty(smtpErrors))
                {
                    ErrorNotification(SendinBlueDefaults.NotificationMessage + smtpErrors);
                }
            }

            //set whether to use SMTP
            sendInBlueSettings.UseSmtp = model.UseSmtp;
            _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.UseSmtp, model.UseSmtp_OverrideForStore, storeId, false);

            //set sender of transactional emails
            sendInBlueSettings.SenderId = model.SenderId;
            _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.SenderId, model.SenderId_OverrideForStore, storeId, false);

            //set SMTP key
            sendInBlueSettings.SmtpKey = model.SmtpKey;
            _settingService.SaveSetting(sendInBlueSettings, x => x.SmtpKey, clearCache: false);

            //now clear settings cache
            _settingService.ClearCache();

            SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved"));

            //select "transactional" tab
            SaveSelectedTabName("tab-transactional");

            return(Configure());
        }