public ActionResult SignUp(RequiredInfoViewModel requiredInfoViewModel)
        {
            if (!ModelState.IsValid)
            {
                return View(requiredInfoViewModel);
            }

            var subDomain = GetSubDomainFromCharityName(requiredInfoViewModel.CharityName);
            var activationToken = TokenHelper.CreateRandomIdentifier();

            var registrationInfo = new RegistrationInfo();
            Mapper.DynamicMap(requiredInfoViewModel, registrationInfo);

            var result = _charityMembershipService.RegisterUserAndCharity(registrationInfo);

            if (result)
            {
                var emailViewModel = new EmailViewModel
                                         {
                                             To = requiredInfoViewModel.UserIdentifier,
                                             ActivationToken = activationToken.AsQueryString()
                                         };

                signUpQueueingService.QueueEmail(emailViewModel);
                signUpQueueingService.QueueProvisioning();

                TempData["SubDomain"] = subDomain;

                return RedirectToAction("Complete");
            }

            ModelState.AddModelError("", "User and Charity registration failed. Please contact support.");
            return View();
        }
Пример #2
0
        public ActionResult SignUp(RequiredInfoViewModel requiredInfoViewModel)
        {
            if (!ModelState.IsValid)
            {
                return View(requiredInfoViewModel);
            }

            var subDomain = GetSubDomainFromCharityName(requiredInfoViewModel.CharityName);
            var activationToken = TokenHelper.CreateRandomIdentifier();

            //TODO subDomain should be stored to database
            Session[activationToken.AsQueryString()] = subDomain;

            /*
            Add membership record inc. domain information
            */
            var emailViewModel = new EmailViewModel
                                     {
                                         To = requiredInfoViewModel.UserIdentifier,
                                         ActivationToken = activationToken.AsQueryString()
                                     };

            signUpQueueingService.QueueEmail(emailViewModel);
            signUpQueueingService.QueueProvisioning();

            TempData["SubDomain"] = subDomain;

            return RedirectToAction("Complete");
        }
 public void QueueEmail(EmailViewModel emailViewModel)
 {
     dynamic email = new Email("SignUp");
     email.To = emailViewModel.To;
     email.ActivationToken = emailViewModel.ActivationToken;
     email.BaseDomain = configuration.BaseDomain;
     email.Send();
 }