/// <inheritDoc/>
        public virtual bool Unsubscribe(UnsubscribeFormViewModel viewModel, out string error)
        {
            error = string.Empty;

            var newslettersManager = NewslettersManager.GetManager(this.ProviderName);

            string email = viewModel.Email.ToLower();
            IQueryable <Subscriber> subscribers = newslettersManager.GetSubscribers().Where(s => s.Email == email);

            if (subscribers.Count() == 0)
            {
                error = string.Format(Res.Get <UnsubscribeFormResources>().YouDontBelongToTheMailingList, email);
                return(false);
            }

            var hasUnsubscribedUser = false;

            foreach (Subscriber subscriber in subscribers)
            {
                if (subscriber != null)
                {
                    var isUnsubscribed = newslettersManager.Unsubscribe(subscriber, this.ListId);
                    hasUnsubscribedUser = hasUnsubscribedUser || isUnsubscribed;
                }
            }

            if (hasUnsubscribedUser)
            {
                newslettersManager.SaveChanges();

                if (this.SuccessfullySubmittedForm == SuccessfullySubmittedForm.OpenSpecificPage)
                {
                    viewModel.RedirectPageUrl = HyperLinkHelpers.GetFullPageUrl(this.PageId);
                }

                this.Message = string.Format(Res.Get <UnsubscribeFormResources>().UnsubscribedFromMailingListSuccessMessage, email);
                return(true);
            }
            else
            {
                error = string.Format(Res.Get <UnsubscribeFormResources>().YouDontBelongToTheMailingList, email);
                return(false);
            }
        }
        /// <inheritDoc/>
        public UnsubscribeFormViewModel CreateViewModel()
        {
            var viewModel = new UnsubscribeFormViewModel();

            viewModel.Message = this.message;

            if (this.UnsubscribeMode == UnsubscribeMode.Link)
            {
                viewModel.CssClass = this.LinkCssClass;
            }
            else
            {
                viewModel.WidgetTitle       = this.WidgetTitle;
                viewModel.WidgetDescription = this.WidgetDescription;
                viewModel.CssClass          = this.EmailAddressCssClass;
            }

            return(viewModel);
        }
        /// <inheritDoc/>
        public virtual bool Unsubscribe(UnsubscribeFormViewModel viewModel, out string error)
        {
            error = string.Empty;

            var newslettersManager = NewslettersManager.GetManager(this.ProviderName);

            string email = viewModel.Email.ToLower();
            IQueryable<Subscriber> subscribers = newslettersManager.GetSubscribers().Where(s => s.Email == email);

            if (subscribers.Count() == 0)
            {
                error = string.Format(Res.Get<UnsubscribeFormResources>().YouDontBelongToTheMailingList, email);
                return false;
            }

            var hasUnsubscribedUser = false;

            foreach (Subscriber subscriber in subscribers)
            {
                if (subscriber != null)
                {
                    var isUnsubscribed = newslettersManager.Unsubscribe(subscriber, this.ListId);
                    hasUnsubscribedUser = hasUnsubscribedUser || isUnsubscribed;
                }
            }

            if (hasUnsubscribedUser)
            {
                newslettersManager.SaveChanges();

                if (this.SuccessfullySubmittedForm == SuccessfullySubmittedForm.OpenSpecificPage)
                {
                    viewModel.RedirectPageUrl = HyperLinkHelpers.GetFullPageUrl(this.PageId);
                }

                this.Message = string.Format(Res.Get<UnsubscribeFormResources>().UnsubscribedFromMailingListSuccessMessage, email);
                return true;
            }
            else
            {
                error = string.Format(Res.Get<UnsubscribeFormResources>().YouDontBelongToTheMailingList, email);
                return false;
            }
        }
        /// <inheritDoc/>
        public UnsubscribeFormViewModel CreateViewModel()
        {
            var viewModel = new UnsubscribeFormViewModel();

            viewModel.Message = this.message;

            if (this.UnsubscribeMode == UnsubscribeMode.Link)
            {
                viewModel.CssClass = this.LinkCssClass;
            }
            else
            {
                viewModel.WidgetTitle = this.WidgetTitle;
                viewModel.WidgetDescription = this.WidgetDescription;
                viewModel.CssClass = this.EmailAddressCssClass;
            }

            return viewModel;
        }
 public bool Unsubscribe(UnsubscribeFormViewModel viewModel, out string error)
 {
     error = string.Empty;
     return true;
 }
        public ActionResult Index(UnsubscribeFormViewModel viewModel)
        {
            if (this.ModelState.IsValid && this.Model.ListId != Guid.Empty)
            {
                string error;
                bool isSucceeded = this.Model.Unsubscribe(viewModel, out error);

                this.ViewBag.Error = error;
                this.ViewBag.IsSucceded = isSucceeded;

                if (isSucceeded)
                {
                    if (this.Model.SuccessfullySubmittedForm == SuccessfullySubmittedForm.OpenSpecificPage && !string.IsNullOrEmpty(viewModel.RedirectPageUrl))
                    {
                        return this.Redirect(viewModel.RedirectPageUrl);
                    }

                    this.ModelState.Clear();
                }
            }

            viewModel = this.Model.CreateViewModel();

            var fullTemplateName = this.emailAddressTemplateNamePrefix + this.EmailAddressTemplateName;

            return this.View(fullTemplateName, viewModel);
        }