public async Task <IActionResult> Subscribe(SubscribeBindingModel model) { _logger.LogInformation($"{model.Email} subscribed for us."); await _utilityManager.AddSubscriberAsync(model.Email); return(Json("You successfully subscribed for our newspaper")); }
public void CheckEmailUnicness(SubscribeBindingModel model, ModelStateDictionary modelState) { if (model != null && model.Email != null) { bool exists = this.Subscribers.Exists(s => s.Email == model.Email && s.IsActive && !s.IsRemoved); if (exists) { string message = this.Lang == DisplayLanguage.BG ? PublicMessages.EmailExistMessageBg : PublicMessages.EmailExistMessageEn; modelState.AddModelError("Email", message); } } }
public void AddSubscriber(SubscribeBindingModel subscribeModel) { string email = subscribeModel.Email; Language lang = subscribeModel.PreferedLanguage == "en" ? Language.EN : Language.BG; string verificationCode = CodeGenerator.GenerateVerificationCode(email); if (this.Subscribers.Exists(s => s.Email == email && (!s.IsActive || s.IsRemoved))) { var subscriberFromDb = this.Subscribers.GetFirst(s => s.Email == email); subscriberFromDb.Email = email; subscriberFromDb.PreferedLanguage = lang; subscriberFromDb.SubscriptionVerificationCode = verificationCode; subscriberFromDb.IsActive = false; subscriberFromDb.IsRemoved = false; subscriberFromDb.SubscriptionPendingDate = DateTime.Now; subscriberFromDb.SubscriptionDate = null; subscriberFromDb.UnsubscribeDate = null; subscriberFromDb.UnsubscribeVerificationCode = null; this.Subscribers.Update(subscriberFromDb); } else { Subscriber subscriber = new Subscriber { Email = email, PreferedLanguage = lang, SubscriptionVerificationCode = verificationCode, IsActive = false, IsRemoved = false, SubscriptionPendingDate = DateTime.Now, SubscriptionDate = null, UnsubscribeDate = null, UnsubscribeVerificationCode = null }; this.Subscribers.Insert(subscriber); } this.SendVerificationEmail(verificationCode, email); }
public ActionResult Subscribe(SubscribeBindingModel bindingModel) { this.service.CheckEmailUnicness(bindingModel, this.ModelState); if (!ModelState.IsValid) { var homeModel = this.service.GetHomeModel(); Mapper.Map(bindingModel, homeModel.SubscribeModelBg); return(View("Index", homeModel)); } this.service.AddSubscriber(bindingModel); this.ViewBag.Header = PublicMessages.ConfirmEmailHeaderBg; this.ViewBag.Paragraph = PublicMessages.ConfirmEmailParagraphBg; return(View("MessagePage")); }