示例#1
0
        public async Task <ActionResult> Subscribe(SubscriberViewModel subscriber)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var subscription = await _subscriptionService.SignUp(subscriber.FirstName, subscriber.LastName, subscriber.EmailAddress);

                    if (subscription != null)
                    {
                        var model = _mapper.Map <SubscriptionViewModel>(subscription);

                        return(View("Subscribed", model));
                    }

                    ModelState.AddModelError("EmailAddress", "Address already in use. Please try another.");
                }
                catch
                {
                    ModelState.AddModelError("", "Something bad happened. Please try again later.");
                }
            }

            return(View(subscriber));
        }
示例#2
0
        public ActionResult Subscribe(Subscriber subscriber)
        {
            var viewModal = new SubscriberViewModel(subscriber);

            if (!ModelState.IsValid)
            {
                viewModal.Status = new Status {
                    Message = SubscribeFormDefinitions.ErroreMessage, Type = StatusType.danger
                };
                return(PartialView("_FormFields", viewModal));
            }

            if (_subscriberRepository.Get(subscriber.Email) != null)
            {
                viewModal.Status = new Status {
                    Message = SubscribeFormDefinitions.DuplicateMessage, Type = StatusType.danger
                };
                return(PartialView("_FormFields", viewModal));
            }

            _subscriberRepository.Add(subscriber);
            _unitOfWork.Complete();

            viewModal.Status = new Status {
                Message = SubscribeFormDefinitions.SuccessMessage, Type = StatusType.success
            };
            viewModal.Subscriber = new Subscriber();
            ModelState.Clear();

            return(PartialView("_FormFields", viewModal));
        }
示例#3
0
        public async Task <ActionResult> Subscription(SubscriberViewModel model)
        {
            ViewBag.HeardFrom = GetHeardFromList();

            if (ModelState.IsValid)
            {
                if (!await _newsletterSubscriptionService.IsEmailExists(model.Email))
                {
                    await _newsletterSubscriptionService.Add(_mapper.Map <SubscriberViewModel, Subscriber>(new SubscriberViewModel()
                    {
                        Email           = model.Email,
                        HeardFrom       = model.HeardFrom,
                        ReasonForSignup = model.ReasonForSignup
                    }));

                    return(RedirectToAction("SubscriptionSuccess", "Newsletter", new { email = model.Email }));
                }
                else
                {
                    ModelState.AddModelError("", _localizer["EmailHasBeenExists"]);
                    return(View(model));
                }
            }

            return(View(model));
        }
示例#4
0
 public WebsiteFooterViewModel()
 {
     Posts          = new List <PostItemViewModel>();
     SocialNetworks = new WebsiteSocialNetworksViewModel();
     Subscriber     = new SubscriberViewModel();
     Links          = new List <LinkViewModel>();
     LinkCategories = new List <LinkCategoryViewModel>();
 }
        public SubscriberViewModelTests()
        {
            _eventAggregator = new Mock <IEventAggregator>();

            _eventAggregator
            .RegisterNewMockedEvent <MessageSubmittedEvent, MessageContent>()
            .SetSubscribeCallback <MessageSubmittedEvent, MessageContent>(action => _onMessageSubmitted = action);

            _viewModel = new SubscriberViewModel(_eventAggregator.Object);
        }
        //[WebInvoke(Method = "PUT", UriTemplate = "/{subscriberId}/?provider={provider}")]
        public SubscriberViewModel SaveSubscriber(Guid subscriberId, SubscriberViewModel subscriber, string provider)
        {
            var request = new RestRequest(this.ServiceUrl + "/{subscriberId}/?provider={provider}", Method.PUT);

            request.AddUrlSegment("subscriberId", subscriberId.ToString());
            request.AddUrlSegment("provider", provider);

            request.AddParameter("application/json", SerializeObject(subscriber), ParameterType.RequestBody);

            return(ExecuteRequest <SubscriberViewModel>(request));
        }
示例#7
0
        public ActionResult Unsubscribe(string email, string confirmEmail, string[] subscription_Newsletters_Ids)
        {
            bool allOK = true;

            if (HttpContext.Request.Form["Newsletter_Subscriber_Unsubscribe"] == "")
            {
                return(null);
            }
            if (email == confirmEmail && subscription_Newsletters_Ids != null && subscription_Newsletters_Ids.Length > 0)
            {
                foreach (var newsId in subscription_Newsletters_Ids)
                {
                    int newsIdValidated = 0;
                    int.TryParse(newsId, out newsIdValidated);
                    if (newsIdValidated > 0)
                    {
                        var subscriber = new SubscriberViewModel {
                            Email = email,
                            NewsletterDefinition_Id = newsIdValidated,
                        };
                        var subRecord = _newsletterServices.TryUnregisterSubscriber(subscriber);
                        allOK = allOK && subRecord != null;
                    }
                }
            }
            else
            {
                if (subscription_Newsletters_Ids == null || subscription_Newsletters_Ids.Length == 0)
                {
                    _orchardServices.Notifier.Error(T("Please select at least one newsletter!"));
                }
                else if (email != confirmEmail)
                {
                    _orchardServices.Notifier.Error(T("Email and email confirmation must match!"));
                }
                allOK = false;
            }


            if (allOK)
            {
                dynamic viewModel = Shape.Subscription_UnsubscribeEmailSent().Subscriber(new SubscriberViewModel {
                    Email = email
                });
                return(new ShapeResult(this, viewModel));
            }
            else
            {
                dynamic viewModel = Shape.Subscription_UnsubscribeError().Subscriber(new SubscriberViewModel {
                    Email = email
                });
                return(new ShapeResult(this, viewModel));
            }
        }
        public void Add(SubscriberViewModel viewModel)
        {
            _repository.Add(new Subscriber
            {
                CreationDate = DateTime.Now,
                IsItDeleted  = false,
                Status       = true,

                Email = viewModel.Email
            });
        }
        public void Update(SubscriberViewModel viewModel)
        {
            var subscriber = _repository.Get(x => x.Id == viewModel.Id);

            subscriber.Status       = viewModel.Status;
            subscriber.DateOfUpdate = DateTime.Now;
            subscriber.IsItDeleted  = viewModel.IsItDeleted;


            subscriber.Email = viewModel.Email;

            _repository.Update(subscriber);
        }
示例#10
0
 public static Subscriber MapToView(this SubscriberViewModel viewModel)
 {
     if (viewModel == null)
     {
         return(null);
     }
     return(new Subscriber()
     {
         Id = viewModel.Id,
         FName = viewModel.FName,
         LName = viewModel.LName,
         BooksReserved = viewModel.BooksReserved
     });
 }
示例#11
0
        public List <SubscriberViewModel> getSubsList()
        {
            this.conn.setConnectionString("RD");
            DataTable table = this.conn.executeProcedure("sp_get_subscribers");
            List <SubscriberViewModel> subs_list = new List <SubscriberViewModel>();

            foreach (DataRow row in table.Rows)
            {
                SubscriberViewModel sub = new SubscriberViewModel();
                sub.name = Convert.ToString(row["MAIN_NAME"]);
                sub.id   = Convert.ToInt32(row["SUBSCR_ID"]);
                subs_list.Add(sub);
            }

            return(subs_list);
        }
示例#12
0
        public SubscriberController(ColibriDbContext colibriDbContext,
                                    IStringLocalizer <SubscriberController> localizer)
        {
            _colibriDbContext = colibriDbContext;
            _localizer        = localizer;

            SubscriberViewModel = new SubscriberViewModel
            {
                //MyMessage = new List<string>()
                //Notifications = new List<Notifications>()

                Notifications = new Notifications(),
                ApplicationUserCategoryTypesSubscriber = new ApplicationUserCategoryTypesSubscriber(),
                NotificationsEnumerable = new List <Notifications>(),
                CategoryTypes           = _colibriDbContext.CategoryTypes.ToList()
            };
        }
示例#13
0
        public ActionResult DeleteSubscriber(string id, string version)
        {
            var request = new SubscriberViewModel {
                Id = id.ToGuidOrDefault(), Version = version.ToIntOrDefault()
            };
            var success = GetCommand <DeleteSubscriberCommand>().ExecuteCommand(request);

            if (success)
            {
                if (!request.Id.HasDefaultValue())
                {
                    Messages.AddSuccess(NewsletterGlobalization.DeleteSubscriber_DeletedSuccessfully_Message);
                }
            }

            return(WireJson(success));
        }
示例#14
0
        public JsonResult LoadData(SubscriberViewModel model, GridPager pager)
        {
            var pagerTuple = Tuple.Create(pager.SortColumn, pager.OrderBy, pager.Page, pager.Size, 0, 0);
            var result     = _component.GetRecordList(model.Email, ref pagerTuple);

            pager.Count     = pagerTuple.Item5;
            pager.TotalPage = pagerTuple.Item6;

            var models = result.ToGridJson(pager, item => new
            {
                Id         = item.Id,
                Email      = item.Email,
                CreateTime = item.CreateTime.AddHours(8).ToString("yyyy-MM-dd HH:mm")
            });

            return(Json(models, JsonRequestBehavior.AllowGet));
        }
示例#15
0
        public ActionResult SaveSubscriber(SubscriberViewModel model)
        {
            var success = false;
            SubscriberViewModel response = null;

            if (ModelState.IsValid)
            {
                response = GetCommand <SaveSubscriberCommand>().ExecuteCommand(model);
                if (response != null)
                {
                    if (model.Id.HasDefaultValue())
                    {
                        Messages.AddSuccess(NewsletterGlobalization.CreateSubscriber_CreatedSuccessfully_Message);
                    }

                    success = true;
                }
            }

            return(WireJson(success, response));
        }
        public ActionResult Subscribe(SubscriberViewModel model)
        {
            try
            {
                _subscriberService.Subscribe(new Subscriber
                {
                    Email           = model.Email,
                    JarbooPlacement = model.JarbooPlacement
                });

                if (string.IsNullOrEmpty(model.RedirectUrl))
                {
                    return(RedirectToAction("ThankYou"));
                }
                return(Redirect(model.RedirectUrl));
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(Redirect(model.ReturnUrl));
        }
示例#17
0
        public IHttpActionResult RegisterSubscriber([FromBody] SubscriberViewModel subscriberViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var user = _userManagementService.IsUsernameAvailable(subscriberViewModel.UserName);

            if (!user)
            {
                var response1 = Request.CreateResponse(HttpStatusCode.Forbidden, "Username not available");

                return(ResponseMessage(response1));
            }

            var subscriberDto = SubscriberViewModelAdapter.BuildSubscriberDto(subscriberViewModel);

            _userManagementService.Create(subscriberViewModel.TokenId, subscriberDto);

            var response = Request.CreateResponse(HttpStatusCode.Created, subscriberViewModel);

            return(ResponseMessage(response));
        }
示例#18
0
 public ActionResult Subscribe(SubscriberViewModel model)
 {
     model.IgnoreUniqueSubscriberException = true;
     return(SaveSubscriber(model));
 }
示例#19
0
 public static SubscriberDto BuildSubscriberDto(SubscriberViewModel subscriberViewModel)
 {
     return(subscriberViewModel.Map <SubscriberViewModel, SubscriberDto>());
 }
示例#20
0
        public ActionResult Subscribe(string name, string email, string confirmEmail, string[] subscription_Newsletters_Ids)
        {
            bool allOK = true;

            if (HttpContext.Request.Form["Newsletter_Subscriber_Subscribe"] == "")
            {
                return(null);
            }
            if (email == confirmEmail && subscription_Newsletters_Ids != null && subscription_Newsletters_Ids.Length > 0)
            {
                foreach (var newsId in subscription_Newsletters_Ids)
                {
                    int newsIdValidated = 0;
                    int.TryParse(newsId, out newsIdValidated);
                    if (newsIdValidated > 0)
                    {
                        var subscriber = new SubscriberViewModel {
                            Email = email,
                            Name  = name,
                            NewsletterDefinition_Id = newsIdValidated,
                        };
                        var subRecord = _newsletterServices.TryRegisterSubscriber(subscriber);
                        allOK = allOK && subRecord != null;

                        try
                        {
                            ValidateModel(subRecord);
                        }
                        catch (Exception) {
                            allOK = false;
                            var errors = ModelState.Values.Where(w => w.Errors.Count() > 0);
                            foreach (var error in errors)
                            {
                                _orchardServices.Notifier.Error(T(error.Errors[0].ErrorMessage));
                            }
                        }
                    }
                }
            }
            else
            {
                if (subscription_Newsletters_Ids == null || subscription_Newsletters_Ids.Length == 0)
                {
                    _orchardServices.Notifier.Error(T("Please select at least one newsletter!"));
                }
                else if (email != confirmEmail)
                {
                    _orchardServices.Notifier.Error(T("Email and email confirmation must match!"));
                }
                allOK = false;
            }


            if (allOK)
            {
                dynamic viewModel = Shape.Subscription_ConfirmationEmailSent().Subscriber(new SubscriberViewModel {
                    Name = name, Email = email
                });

                viewModel.Metadata.Alternates.Add("Subscription.ConfirmationEmailSent");
                // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
                return(new ShapeResult(this, viewModel));
            }
            else
            {
                dynamic viewModel = Shape.Subscription_SubscribeError().Subscriber(new SubscriberViewModel {
                    Name = name, Email = email
                });
                viewModel.Metadata.Alternates.Add("Subscription.SubscribeError");
                // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.
                return(new ShapeResult(this, viewModel));
            }
        }
示例#21
0
        public async Task <IActionResult> Create(SubscriberViewModel subscriber)
        {
            await _subscriberService.Add(_mapper.Map <SubscriberDto>(subscriber));

            return(RedirectToAction("Index"));
        }
示例#22
0
 private async Task OnClosing()
 {
     await SubscriberViewModel.OnClosing();
 }
        public SubscriberRecord TryUnregisterSubscriber(SubscriberViewModel subscriber)
        {
            SubscriberRecord returnValue = null;

            try {
                var subs = _repositorySubscribers.Table.Where(w => w.Email == subscriber.Email &&
                                                              w.NewsletterDefinition.Id == subscriber.NewsletterDefinition_Id).SingleOrDefault();
                if (subs == null)
                {
                    _orchardServices.Notifier.Error(T("Email not found!"));
                    return(null);
                }
                else if (subs.Confirmed)
                {
                    returnValue = subs;
                }
                else
                {
                    _orchardServices.Notifier.Error(T("Email not found!"));
                    return(null);
                }
                if (returnValue != null)
                {
                    // Create Nonce
                    string   parametri = "Email=" + subs.Email + "&Guid=" + subs.Guid;
                    TimeSpan delay     = new TimeSpan(1, 0, 0);
                    string   Nonce     = _commonServices.CreateNonce(parametri, delay);

                    // Update SubscriberRecord - Save Nonce
                    returnValue.UnsubscriptionKey = Nonce;
                    _repositorySubscribers.Update(returnValue);

                    // Encode Nonce
                    string parametriEncode = System.Web.HttpUtility.HtmlEncode(Nonce.Replace('+', '_').Replace('/', '-'));

                    string host = string.Format("{0}://{1}{2}",
                                                _orchardServices.WorkContext.HttpContext.Request.Url.Scheme,
                                                _orchardServices.WorkContext.HttpContext.Request.Url.Host,
                                                _orchardServices.WorkContext.HttpContext.Request.Url.Port == 80 ? string.Empty : ":" + _orchardServices.WorkContext.HttpContext.Request.Url.Port);

                    var urlHelper = new UrlHelper(_orchardServices.WorkContext.HttpContext.Request.RequestContext);

                    // Model template Mail
                    dynamic viewModel = new SubscriberViewModel {
                        Email = subs.Email,
                        Name  = subs.Name,
                        LinkUnsubscription      = string.Format("{0}{1}?key={2}", host, urlHelper.SubscriptionConfirmUnsubscribe(), parametriEncode),
                        KeyUnsubscription       = Nonce,
                        NewsletterDefinition_Id = subs.NewsletterDefinition.Id,
                        NewsletterDefinition    = _contentManager.Get(subs.NewsletterDefinition.Id)
                    };

                    _templateService.SendTemplatedEmail(viewModel,
                                                        subs.NewsletterDefinition.DeleteSubscrptionTemplateRecord_Id,
                                                        new List <string> {
                        subs.Email
                    }, null, null, false, null);
                }
            }
            catch {
                returnValue = null;
            }

            return(returnValue);
        }
示例#24
0
 public SubscriberView()
 {
     InitializeComponent();
     DataContext = new SubscriberViewModel();
 }
示例#25
0
        public ActionResult Index()
        {
            var viewModel = new SubscriberViewModel();

            return(View(viewModel));
        }