コード例 #1
0
        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));
        }
コード例 #2
0
        // 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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }