public ActionResult ConfigureSMS(SendInBlueModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = GetActiveStoreScopeConfiguration(_storeService, _workContext); var sendInBlueSettings = _settingService.LoadSetting <SendInBlueSettings>(storeId); /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ sendInBlueSettings.UseSMS = model.UseSMS; _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.UseSMS, model.UseSMS_OverrideForStore, storeId, false); sendInBlueSettings.SMSFrom = model.SMSFrom; _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.SMSFrom, model.SMSFrom_OverrideForStore, storeId, false); sendInBlueSettings.MyPhoneNumber = model.MyPhoneNumber; _settingService.SaveSetting(sendInBlueSettings, x => x.MyPhoneNumber, storeId, false); //now clear settings cache _settingService.ClearCache(); SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved")); //select "sms" tab SaveSelectedTabName("tab-sms"); return(Configure()); }
public ActionResult Synchronization(SendInBlueModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = GetActiveStoreScopeConfiguration(_storeService, _workContext); //synchronize subscriptions for the certain store var syncResult = _sendInBlueEmailManager.Synchronize(true, storeId); if (string.IsNullOrEmpty(syncResult)) { TempData["synchronizationStart"] = true; SuccessNotification(_localizationService.GetResource("Plugins.Misc.SendInBlue.ImportProcess")); } else { ErrorNotification(syncResult); } //select "synchronization" tab SaveSelectedTabName("tab-synchronization"); return(Configure()); }
public ActionResult Configure() { var model = new SendInBlueModel(); PrepareModel(model); return(View("~/Plugins/Misc.SendInBlue/Views/Configure.cshtml", model)); }
public ActionResult Configure(SendInBlueModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = GetActiveStoreScopeConfiguration(_storeService, _workContext); var sendInBlueSettings = _settingService.LoadSetting <SendInBlueSettings>(storeId); //set API key sendInBlueSettings.ApiKey = model.ApiKey; _settingService.SaveSetting(sendInBlueSettings, x => x.ApiKey, 0, false); //now clear settings cache _settingService.ClearCache(); SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved")); return(Configure()); }
/// <summary> /// Prepare SendInBlueModel /// </summary> /// <param name="model">Model</param> protected void PrepareModel(SendInBlueModel model) { var storeId = GetActiveStoreScopeConfiguration(_storeService, _workContext); var sendInBlueSettings = _settingService.LoadSetting <SendInBlueSettings>(storeId); model.ActiveStoreScopeConfiguration = storeId; if (string.IsNullOrEmpty(sendInBlueSettings.ApiKey)) { return; } //synchronization task var task = FindScheduledTask(); if (task != null) { model.AutoSyncEachMinutes = task.Seconds / 60; model.AutoSync = task.Enabled; } //settings to model model.ApiKey = sendInBlueSettings.ApiKey; model.ListId = sendInBlueSettings.ListId; model.SMTPSenderId = sendInBlueSettings.SMTPSenderId; model.UseSMS = sendInBlueSettings.UseSMS; model.SMSFrom = sendInBlueSettings.SMSFrom; model.MyPhoneNumber = sendInBlueSettings.MyPhoneNumber; //check whether email account exist if (sendInBlueSettings.UseSendInBlueSMTP && _emailAccountService.GetEmailAccountById(sendInBlueSettings.SendInBlueEmailAccountId) != null) { model.UseSendInBlueSMTP = sendInBlueSettings.UseSendInBlueSMTP; } //overridable settings if (storeId > 0) { model.ListId_OverrideForStore = _settingService.SettingExists(sendInBlueSettings, x => x.ListId, storeId); model.UseSendInBlueSMTP_OverrideForStore = _settingService.SettingExists(sendInBlueSettings, x => x.UseSendInBlueSMTP, storeId); model.SMTPSenderId_OverrideForStore = _settingService.SettingExists(sendInBlueSettings, x => x.SMTPSenderId, storeId); model.UseSMS_OverrideForStore = _settingService.SettingExists(sendInBlueSettings, x => x.UseSMS, storeId); model.SMSFrom_OverrideForStore = _settingService.SettingExists(sendInBlueSettings, x => x.SMSFrom, storeId); } //get SendInBlue account info var errors = string.Empty; var accountInfo = _sendInBlueEmailManager.GetAccountInfo(ref errors); if (string.IsNullOrEmpty(errors)) { model.AccountInfo = accountInfo; } else { ErrorNotification(errors); } //check SMTP status if (!_sendInBlueEmailManager.SmtpIsEnabled(ref errors)) { ErrorNotification(errors); } //get available lists of subscriptions for the synchronization from SendInBlue account model.AvailableLists = _sendInBlueEmailManager.GetLists(); //get available senders of emails from SendInBlue account model.AvailableSenders = _sendInBlueEmailManager.GetSenders(); //get message templates model.AvailableMessageTemplates = _messageTemplateService.GetAllMessageTemplates(storeId).Select(x => new SelectListItem { Value = x.Id.ToString(), Text = storeId > 0 ? x.Name : string.Format("{0} {1}", x.Name, !x.LimitedToStores ? string.Empty : _storeService.GetAllStores().Where(s => _storeMappingService.GetStoresIdsWithAccess(x).Contains(s.Id)) .Aggregate("-", (current, next) => string.Format("{0} {1}, ", current, next.Name)).TrimEnd(',')) }).ToList(); //get string of allowed tokens model.AllowedTokens = _messageTokenProvider.GetListOfAllowedTokens() .Aggregate(string.Empty, (current, next) => string.Format("{0}, {1}", current, next)).Trim(','); }
public ActionResult ConfigureSMTP(SendInBlueModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = GetActiveStoreScopeConfiguration(_storeService, _workContext); var sendInBlueSettings = _settingService.LoadSetting <SendInBlueSettings>(storeId); if (model.UseSendInBlueSMTP) { //set case invariant for true because tokens are used in uppercase format in SendInBlue's transactional emails var messageTemplatesSettings = _settingService.LoadSetting <MessageTemplatesSettings>(); messageTemplatesSettings.CaseInvariantReplacement = true; _settingService.SaveSetting(messageTemplatesSettings, x => x.CaseInvariantReplacement, 0, false); //check whether SMTP enabled on SendInBlue profile var errors = string.Empty; if (_sendInBlueEmailManager.SmtpIsEnabled(ref errors)) { //get email account or create new one sendInBlueSettings.SendInBlueEmailAccountId = _sendInBlueEmailManager.GetEmailAccountId(_emailAccountService, model.SMTPSenderId, out errors); if (string.IsNullOrEmpty(errors)) { _settingService.SaveSetting(sendInBlueSettings, x => x.SendInBlueEmailAccountId, storeId, false); } else { ErrorNotification(errors); } //synchronize nopCommerce tokens and SendInBlue transactional attributes _sendInBlueEmailManager.PrepareAttributes(_messageTokenProvider.GetListOfAllowedTokens(), out errors); if (!string.IsNullOrEmpty(errors)) { ErrorNotification(errors); } } else { //need to activate SMTP account ErrorNotification(_localizationService.GetResource("Plugins.Misc.SendInBlue.ActivateSMTP")); model.UseSendInBlueSMTP = false; } } //set whether to use SMTP of SendInBlue service sendInBlueSettings.UseSendInBlueSMTP = model.UseSendInBlueSMTP; _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.UseSendInBlueSMTP, model.UseSendInBlueSMTP_OverrideForStore, storeId, false); //set sender of transactional emails sendInBlueSettings.SMTPSenderId = model.SMTPSenderId; _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.SMTPSenderId, model.SMTPSenderId_OverrideForStore, storeId, false); //now clear settings cache _settingService.ClearCache(); SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved")); //select "transactional" tab SaveSelectedTabName("tab-transactional"); return(Configure()); }
public ActionResult SaveSynchronization(SendInBlueModel model) { if (!ModelState.IsValid) { return(Configure()); } var storeId = GetActiveStoreScopeConfiguration(_storeService, _workContext); var sendInBlueSettings = _settingService.LoadSetting <SendInBlueSettings>(storeId); //create or update synchronization task var task = FindScheduledTask(); if (task != null) { task.Enabled = model.AutoSync; task.Seconds = model.AutoSyncEachMinutes * 60; _scheduleTaskService.UpdateTask(task); } else { _scheduleTaskService.InsertTask(new ScheduleTask { Name = "SendInBlue synchronization", Seconds = model.AutoSyncEachMinutes * 60, Enabled = model.AutoSync, Type = "Nop.Plugin.Misc.SendInBlue.Services.SendInBlueSynchronizationTask, Nop.Plugin.Misc.SendInBlue", }); } if (model.AutoSync) { SuccessNotification(_localizationService.GetResource("Plugins.Misc.SendInBlue.AutoSyncRestart")); } //create store_id attribute (if not exists) in SendInBlue account _sendInBlueEmailManager.PrepareStoreAttribute(); //set notify url for the importing process var currentStore = storeId == 0 ? _storeService.GetAllStores().FirstOrDefault() : _storeService.GetStoreById(storeId); sendInBlueSettings.UrlSync = string.Format("{0}{1}", currentStore.Url.TrimEnd('/'), Url.RouteUrl("Plugin.Misc.SendInBlue.ImportUsers")); _settingService.SaveSetting(sendInBlueSettings, x => x.UrlSync, storeId, false); //create webhook for the unsubscribing event var unsubscribeUrl = string.Format("{0}{1}", currentStore.Url.TrimEnd('/'), Url.RouteUrl("Plugin.Misc.SendInBlue.Unsubscribe")); sendInBlueSettings.UnsubscribeWebhookId = _sendInBlueEmailManager.GetUnsubscribeWebHookId(sendInBlueSettings.UnsubscribeWebhookId, unsubscribeUrl); _settingService.SaveSetting(sendInBlueSettings, x => x.UnsubscribeWebhookId, storeId, false); //set list for the synchronization sendInBlueSettings.ListId = model.ListId > 0 ? model.ListId : _sendInBlueEmailManager.CreateNewList(model.NewListName); _settingService.SaveSettingOverridablePerStore(sendInBlueSettings, x => x.ListId, model.ListId_OverrideForStore, storeId, false); //now clear settings cache _settingService.ClearCache(); SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved")); //select "synchronization" tab SaveSelectedTabName("tab-synchronization"); return(Configure()); }