public virtual async Task <IActionResult> SubscribeNewsletter(string email, bool subscribe) { string result; var success = false; if (!CommonHelper.IsValidEmail(email)) { result = await _localizationService.GetResourceAsync("Newsletter.Email.Wrong"); } else { email = email.Trim(); var subscription = await _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmailAndStoreIdAsync(email, (await _storeContext.GetCurrentStoreAsync()).Id); if (subscription != null) { if (subscribe) { if (!subscription.Active) { await _workflowMessageService.SendNewsLetterSubscriptionActivationMessageAsync( subscription, (await _workContext.GetWorkingLanguageAsync()).Id ); } result = await _localizationService.GetResourceAsync("Newsletter.SubscribeEmailSent"); } else { if (subscription.Active) { await _workflowMessageService.SendNewsLetterSubscriptionDeactivationMessageAsync( subscription, (await _workContext.GetWorkingLanguageAsync()).Id ); } result = await _localizationService.GetResourceAsync("Newsletter.UnsubscribeEmailSent"); } } else if (subscribe) { try { var freshAddressResponse = await _freshAddressService.ValidateEmailAsync(email); if (!freshAddressResponse.IsValid) { return(Json(new { Success = false, Result = freshAddressResponse.ErrorResponse, })); } } catch (Exception ex) { await _logger.ErrorAsync($"An error occured while trying to validate a Newsletter signup through FreshAddress: {ex}"); } subscription = new NewsLetterSubscription { NewsLetterSubscriptionGuid = Guid.NewGuid(), Email = email, Active = false, StoreId = (await _storeContext.GetCurrentStoreAsync()).Id, CreatedOnUtc = DateTime.UtcNow }; await _newsLetterSubscriptionService.InsertNewsLetterSubscriptionAsync(subscription); await _workflowMessageService.SendNewsLetterSubscriptionActivationMessageAsync(subscription, (_workContext.GetWorkingLanguageAsync()).Id); result = await _localizationService.GetResourceAsync("Newsletter.SubscribeEmailSent"); } else { result = await _localizationService.GetResourceAsync("Newsletter.UnsubscribeEmailSent"); } success = true; } return(Json(new { Success = success, Result = result, })); }
public virtual async Task <IActionResult> SubscribeNewsletter(string email, bool subscribe) { string result; var success = false; if (!CommonHelper.IsValidEmail(email)) { result = await _localizationService.GetResourceAsync("Newsletter.Email.Wrong"); } else { email = email.Trim(); var store = await _storeContext.GetCurrentStoreAsync(); var subscription = await _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmailAndStoreIdAsync(email, store.Id); var currentLanguage = await _workContext.GetWorkingLanguageAsync(); if (subscription != null) { if (subscribe) { if (!subscription.Active) { await _workflowMessageService.SendNewsLetterSubscriptionActivationMessageAsync(subscription, currentLanguage.Id); } result = await _localizationService.GetResourceAsync("Newsletter.SubscribeEmailSent"); } else { if (subscription.Active) { await _workflowMessageService.SendNewsLetterSubscriptionDeactivationMessageAsync(subscription, currentLanguage.Id); } result = await _localizationService.GetResourceAsync("Newsletter.UnsubscribeEmailSent"); } } else if (subscribe) { subscription = new NewsLetterSubscription { NewsLetterSubscriptionGuid = Guid.NewGuid(), Email = email, Active = false, StoreId = store.Id, CreatedOnUtc = DateTime.UtcNow }; await _newsLetterSubscriptionService.InsertNewsLetterSubscriptionAsync(subscription); await _workflowMessageService.SendNewsLetterSubscriptionActivationMessageAsync(subscription, currentLanguage.Id); result = await _localizationService.GetResourceAsync("Newsletter.SubscribeEmailSent"); } else { result = await _localizationService.GetResourceAsync("Newsletter.UnsubscribeEmailSent"); } success = true; } return(Json(new { Success = success, Result = result, })); }