public async Task <ActionResult> Edit(long id) { MailingListSubscriber mailingListSubscriber = await db.ActiveMailingListSubscribers.FindAsync(id); if (mailingListSubscriber == null) { return(HttpNotFound()); } return(View(mailingListSubscriber)); }
public async Task <ActionResult> Create(long id, [Bind(Include = AllowedFields)] MailingListSubscriber mailingListSubscriber) { if (ModelState.IsValid) { var mailinglist = await db.ActiveMailingLists.Where(m => m.AllowSubscribe).FindAsync(id); if (mailinglist != null) { MailingListSubscriber existing = await db.ActiveMailingListSubscribers.FirstOrDefaultAsync(s => s.Email == mailingListSubscriber.Email && s.MailingList.Id == mailinglist.Id); if (existing == null) { mailinglist.Subscribers.Add(mailingListSubscriber); await db.SaveChangesAsync(); } else { mailingListSubscriber = existing; } if (!mailingListSubscriber.Enabled) { EmailSender sender = new EmailSender( mailinglist.Name + " - Confirm Subscription", string.Format("Confirm your email address by following this link: <br/><a href=\"{0}\">{0}</a>", string.Format("http://{0}/MailingListSubscribers/Verify/{1}", Settings.CanonicalHostName, mailingListSubscriber.Verification)), mailingListSubscriber.Email); sender.ToName = mailingListSubscriber.FullName(); sender.IsHTML = true; sender.Execute(); } if (Roles.UserInAnyRole(User, Roles.ListManagers)) { return(RedirectToMailingList(id)); } else { return(RedirectToAction("Confirm")); } } else { return(HttpNotFound()); } } return(View(mailingListSubscriber)); }
public MailingListController() { Post("/api/v1/mailing_list/subscribe", _ => { var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "email" }), new ShouldBeValidEmail(), }, true); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var email = GetRequestStr("email"); var existingSubscriber = MailingListSubscriber.FindBy("email", email); if (existingSubscriber == null) { MailingListSubscriber.Create(email); } return(HttpResponse.Data(new JObject() { ["status"] = "subscribed" })); }); Delete("/api/v1/mailing_list/unsubscribe", _ => { var errors = ValidationProcessor.Process(Request, new IValidatorRule[] { new ShouldHaveParameters(new[] { "unsubscribe_key" }) }); if (errors.Count > 0) { return(HttpResponse.Errors(errors)); } var subscriber = MailingListSubscriber.FindBy( "unsubscribe_key", GetRequestStr("unsubscribe_key") ); subscriber?.Delete(); return(HttpResponse.Data(new JObject() { ["status"] = "unsubscribed" })); }); }
public async Task <ActionResult> Delete(long id) { MailingListSubscriber mailingListSubscriber = await db.ActiveMailingListSubscribers.FindAsync(id); if (mailingListSubscriber == null) { return(HttpNotFound()); } var mailingListId = mailingListSubscriber.MailingList.Id; db.MailingListSubscribers.Remove(mailingListSubscriber); await db.SaveChangesAsync(); SetSuccessMessage("{0} was removed successfully!", mailingListSubscriber.FullName()); return(RedirectToMailingList(mailingListId)); }
public async Task <ActionResult> Verify(string id) { MailingListSubscriber mailingListSubscriber = await db.ActiveMailingListSubscribers .Where(m => m.Verification == id) .FirstOrDefaultAsync(); if (mailingListSubscriber == null) { return(HttpNotFound()); } mailingListSubscriber.Enabled = true; db.Entry(mailingListSubscriber).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Verified")); }
public async Task <ActionResult> Unsubscribe(long id, string email) { MailingListSubscriber mailingListSubscriber = await db.ActiveMailingListSubscribers.FindAsync(id); if (mailingListSubscriber != null) { db.MailingListSubscribers.Remove(mailingListSubscriber); await db.SaveChangesAsync(); } if (!string.IsNullOrEmpty(email)) { var subs = db.ActiveMailingListSubscribers.Where(m => m.Email == email).ToList(); if (subs != null && subs.Count > 0) { db.MailingListSubscribers.RemoveRange(subs); await db.SaveChangesAsync(); } } return(RedirectToAction("Unsubscribed")); }
public async Task <ActionResult> Edit([Bind(Include = AllowedFields)] MailingListSubscriber subscriber) { if (ModelState.IsValid) { MailingListSubscriber mailingListSubscriber = await db.ActiveMailingListSubscribers.FindAsync(subscriber.Id); if (mailingListSubscriber == null) { return(HttpNotFound()); } mailingListSubscriber.Update(subscriber); db.Entry(mailingListSubscriber).State = EntityState.Modified; await db.SaveChangesAsync(); SetSuccessMessage("List subscriber {0} was updated successfully!", mailingListSubscriber.FullName()); return(RedirectToMailingList(mailingListSubscriber.MailingList.Id)); } return(Auto(subscriber)); }
public async Task <ActionResult> Unsubscribe(string id) { MailingListSubscriber mailingListSubscriber = await db.ActiveMailingListSubscribers.Where(m => m.Verification == id).FirstOrDefaultAsync(); return(View(mailingListSubscriber ?? new MailingListSubscriber())); }