public ActionResult Subscribe(SubscribeFormViewModel viewModel) { if (!this.IsLicensed) { return(this.Content(this.LicensingMessage)); } if (ModelState.IsValid) { string error; bool isSucceeded = this.Model.AddSubscriber(viewModel, out error); this.ViewBag.Error = error; this.ViewBag.IsSucceeded = isSucceeded; this.ViewBag.Email = AntiXssEncoder.HtmlEncode(viewModel.Email, false); if (isSucceeded) { var validator = ObjectFactory.Resolve <IRedirectUriValidator>(); var redirectUrl = viewModel.RedirectPageUrl; if (this.Model.SuccessfullySubmittedForm == SuccessfullySubmittedForm.OpenSpecificPage && !string.IsNullOrEmpty(viewModel.RedirectPageUrl) && validator.IsValid(redirectUrl)) { return(this.Redirect(viewModel.RedirectPageUrl)); } this.ModelState.Clear(); } } var fullTemplateName = this.templateNamePrefix + this.TemplateName; viewModel = this.Model.CreateViewModel(); return(this.View(fullTemplateName, viewModel)); }
public ActionResult Index(SubscribeFormViewModel viewModel) { if (!this.IsLicensed) { return(this.Content(this.LicensingMessage)); } if (ModelState.IsValid) { string error; bool isSucceeded = this.Model.AddSubscriber(viewModel, out error); this.ViewBag.Error = error; this.ViewBag.IsSucceeded = isSucceeded; this.ViewBag.Email = viewModel.Email; if (isSucceeded) { if (this.Model.SuccessfullySubmittedForm == SuccessfullySubmittedForm.OpenSpecificPage && !string.IsNullOrEmpty(viewModel.RedirectPageUrl)) { return(this.Redirect(viewModel.RedirectPageUrl)); } this.ModelState.Clear(); } } var fullTemplateName = this.templateNamePrefix + this.TemplateName; viewModel = this.Model.CreateViewModel(); return(this.View(fullTemplateName, viewModel)); }
public override bool AddSubscriber(SubscribeFormViewModel viewModel, out string error) { error = string.Empty; return(true); }
/// <inheritdoc /> public virtual bool AddSubscriber(SubscribeFormViewModel viewModelOld, out string error) { var agreed = SystemManager.CurrentHttpContext.Request.Params["TermsAgreement"].Split(',').Count() > 1; var viewModel = new SubscribeFormViewModelCustom() { FirstName = viewModelOld.FirstName, LastName = viewModelOld.LastName, Email = viewModelOld.Email, CssClass = viewModelOld.CssClass, RedirectPageUrl = viewModelOld.RedirectPageUrl, // custom - getting the property values from the request TermsAgreement = agreed }; error = string.Empty; if (viewModel.TermsAgreement) { if (NewsletterValidator.IsValidEmail(viewModel.Email)) { var newslettersManager = NewslettersManager.GetManager(this.Provider); // check if subscriber exists var email = viewModel.Email.ToLower(); IQueryable <Subscriber> matchingSubscribers = newslettersManager.GetSubscribers().Where(s => s.Email == email); bool subscriberAlreadyInList = false; foreach (Subscriber s in matchingSubscribers) { if (s.Lists.Any(ml => ml.Id == this.SelectedMailingListId)) { subscriberAlreadyInList = true; break; } } if (subscriberAlreadyInList) { Subscriber subscriber = matchingSubscribers.FirstOrDefault(); if (subscriber != null) { //update their name subscriber.FirstName = viewModel.FirstName; subscriber.LastName = viewModel.LastName; //update their terms acceptance subscriber.SetValue("TermsAccepted", viewModel.TermsAgreement); newslettersManager.SaveChanges(); } // If the email has already been subscribed, consider it as success. return(true); } else { Subscriber subscriber = matchingSubscribers.FirstOrDefault(); if (subscriber == null) { subscriber = newslettersManager.CreateSubscriber(true); subscriber.Email = viewModel.Email; subscriber.FirstName = viewModel.FirstName ?? string.Empty; subscriber.LastName = viewModel.LastName ?? string.Empty; // custom - setting the property values subscriber.SetValue("TermsAccepted", viewModel.TermsAgreement); } else { subscriber.FirstName = viewModel.FirstName ?? string.Empty; subscriber.LastName = viewModel.LastName ?? string.Empty; //update acceptance of terms subscriber.SetValue("TermsAccepted", viewModel.TermsAgreement); } // check if the mailing list exists if (newslettersManager.Subscribe(subscriber, this.SelectedMailingListId)) { if (this.SuccessfullySubmittedForm == SuccessfullySubmittedForm.OpenSpecificPage) { viewModel.RedirectPageUrl = HyperLinkHelpers.GetFullPageUrl(this.PageId); } newslettersManager.SaveChanges(); return(true); } } } error = Res.Get <SubscribeFormResources>().EmailAddressErrorMessageResourceName; } error = "You must agree to the terms"; return(false); }
public ActionResult Subscribe(SubscribeFormViewModel details) { if (ModelState.IsValid) { try { // Ensure one signature per email address if (subscriptionService.Validate(details.Email)) { return View(); } // Create signature var subscription = new Subscription() { Email = details.Email }; // Add subscriptionService.Add(subscription); // Send confirmation email emailService.Send(subscription.Email, "Thank-you for subscribing!", "Thank-you for subscribing to receive more infomation on the progress of our bid! If you would like to unsubscribe please let us know via email."); return PartialView("_Success"); } catch (Exception ex) { throw; } } var modelStateErrors = ModelState.Values.SelectMany(v => v.Errors); return View(); }