public ActionResult Unsubscribe(UnsubscriptionModel model) { string invalidUrlMessage = ResHelper.GetString("DancingGoatMvc.News.InvalidUnsubscriptionLink"); if (ModelState.IsValid) { bool emailIsValid = mEmailHashValidator.ValidateEmailHash(model.Hash, model.Email); if (emailIsValid) { try { var issue = IssueInfoProvider.GetIssueInfo(model.IssueGuid, SiteContext.CurrentSiteID); if (model.UnsubscribeFromAll) { // Unsubscribes if not already unsubscribed if (!mUnsubscriptionProvider.IsUnsubscribedFromAllNewsletters(model.Email)) { mSubscriptionService.UnsubscribeFromAllNewsletters(model.Email, issue?.IssueID); } model.UnsubscriptionResult = ResHelper.GetString("DancingGoatMvc.News.UnsubscribedAll"); } else { var newsletter = NewsletterInfoProvider.GetNewsletterInfo(model.NewsletterGuid, SiteContext.CurrentSiteID); if (newsletter != null) { // Unsubscribes if not already unsubscribed if (!mUnsubscriptionProvider.IsUnsubscribedFromSingleNewsletter(model.Email, newsletter.NewsletterID)) { mSubscriptionService.UnsubscribeFromSingleNewsletter(model.Email, newsletter.NewsletterID, issue?.IssueID); } model.UnsubscriptionResult = ResHelper.GetString("DancingGoatMvc.News.Unsubscribed"); } else { ModelState.AddModelError(String.Empty, invalidUrlMessage); } } } catch (ArgumentException) { ModelState.AddModelError(String.Empty, invalidUrlMessage); } } else { ModelState.AddModelError(String.Empty, invalidUrlMessage); } } else { ModelState.AddModelError(String.Empty, invalidUrlMessage); } return(View(model)); }
// GET: Subscription/Unsubscribe public ActionResult Unsubscribe(UnsubscriptionModel model) { var invalidUrlMessage = "You weren't unsubscribed because your unsubscription link is not valid."; if (ModelState.IsValid) { bool emailIsValid = emailHashValidator.ValidateEmailHash(model.Hash, model.Email); if (emailIsValid) { try { var issue = issueInfoProvider.Get(model.IssueGuid, SiteContext.CurrentSiteID); if (model.UnsubscribeFromAll) { // Unsubscribes if not already unsubscribed if (!unsubscriptionProvider.IsUnsubscribedFromAllNewsletters(model.Email)) { subscriptionService.UnsubscribeFromAllNewsletters(model.Email, issue?.IssueID); } model.UnsubscriptionResult = localizer["You've been unsubscribed from all email marketing campaigns."].Value; } else { var newsletter = newsletterInfoProvider.Get(model.NewsletterGuid, SiteContext.CurrentSiteID); if (newsletter != null) { // Unsubscribes if not already unsubscribed if (!unsubscriptionProvider.IsUnsubscribedFromSingleNewsletter(model.Email, newsletter.NewsletterID)) { subscriptionService.UnsubscribeFromSingleNewsletter(model.Email, newsletter.NewsletterID, issue?.IssueID); } model.UnsubscriptionResult = localizer["We would like to offer you a coffee to go, but we can't, because we have just removed your email from the list."].Value; } else { AddError(invalidUrlMessage); } } } catch (ArgumentException) { AddError(invalidUrlMessage); } } else { AddError(invalidUrlMessage); } } else { AddError(invalidUrlMessage); } return(View(model)); }
public ActionResult Unsubscribe(UnsubscriptionModel model) { bool unsubscribed = false; string invalidUrlMessage = ResHelper.GetString("DancingGoatMvc.News.InvalidUnsubscriptionLink"); if (ModelState.IsValid) { bool emailIsValid = mService.ValidateEmail(model.Email, model.Hash); if (emailIsValid) { try { if (model.UnsubscribeFromAll) { unsubscribed = mService.UnsubscribeFromAll(model.Email, model.NewsletterGuid, model.IssueGuid); } else { unsubscribed = mService.Unsubscribe(model.Email, model.NewsletterGuid, model.IssueGuid); } } catch (ArgumentException) { model.UnsubscriptionResult = invalidUrlMessage; } } else { model.UnsubscriptionResult = invalidUrlMessage; } } else { model.UnsubscriptionResult = invalidUrlMessage; } model.IsError = !unsubscribed; if (unsubscribed) { // Return a successful message model.UnsubscriptionResult = ResHelper.GetString(model.UnsubscribeFromAll ? "DancingGoatMvc.News.UnsubscribedAll" : "DancingGoatMvc.News.Unsubscribed"); } else if (String.IsNullOrEmpty(model.UnsubscriptionResult)) { // Return a general error message unless a specific error message is already defined model.UnsubscriptionResult = ResHelper.GetString("DancingGoatMvc.News.UnsubscribeError"); } return(View(model)); }
public ActionResult Unsubscribe(UnsubscriptionModel model) { string invalidUrlMessage = ResHelper.GetString("DancingGoatMvc.News.InvalidUnsubscriptionLink"); if (ModelState.IsValid) { bool emailIsValid = mSubscriptionService.ValidateEmail(model.Email, model.Hash); if (emailIsValid) { try { if (model.UnsubscribeFromAll) { mSubscriptionService.UnsubscribeFromAll(model.Email, model.NewsletterGuid, model.IssueGuid); model.UnsubscriptionResult = ResHelper.GetString("DancingGoatMvc.News.UnsubscribedAll"); } else { mSubscriptionService.Unsubscribe(model.Email, model.NewsletterGuid, model.IssueGuid); model.UnsubscriptionResult = ResHelper.GetString("DancingGoatMvc.News.Unsubscribed"); } } catch (ArgumentException) { ModelState.AddModelError(String.Empty, invalidUrlMessage); } } else { ModelState.AddModelError(String.Empty, invalidUrlMessage); } } else { ModelState.AddModelError(String.Empty, invalidUrlMessage); } return(View(model)); }
public ActionResult Unsubscribe(UnsubscriptionModel model) { if (ModelState.IsValid) { string result; if (model.UnsubscribeFromAll) { model.IsError = !mService.UnsubscribeFromAll(model.NewsletterGuid, model.SubscriberGuid, model.IssueGuid, out result); } else { model.IsError = !mService.Unsubscribe(model.NewsletterGuid, model.SubscriberGuid, model.IssueGuid, out result); } model.UnsubscriptionResult = result; } else { model.UnsubscriptionResult = ResHelper.GetString("newsletter.unsubscribefailed"); model.IsError = true; } return(View(model)); }