Exemple #1
0
        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"));
        }
Exemple #2
0
        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);
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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"));
        }