/// <summary>
        /// Create a customer account.
        /// </summary>
        /// <param name="createUserParam">Service call params <see cref="CreateUserParam"/></param>
        /// <returns>
        /// The Created in Customer and a status representing a possible cause of errors
        /// </returns>
        public virtual async Task <CreateAccountViewModel> RegisterAsync(CreateUserParam createUserParam)
        {
            if (createUserParam == null)
            {
                throw new ArgumentNullException("createUserParam");
            }
            if (createUserParam.CultureInfo == null)
            {
                throw new ArgumentException("createUserParam.CultureInfo");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Password))
            {
                throw new ArgumentException("createUserParam.Password");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.FirstName))
            {
                throw new ArgumentException("createUserParam.FirstName");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.LastName))
            {
                throw new ArgumentException("createUserParam.LastName");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Email))
            {
                throw new ArgumentException("createUserParam.Email");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Scope))
            {
                throw new ArgumentException("createUserParam.Scope");
            }

            var termsAndConditionsUrl = MyAccountUrlProvider.GetTermsAndConditionsUrl(new BaseUrlParameter {
                CultureInfo = createUserParam.CultureInfo
            });

            var customer = await CustomerRepository.CreateUserAsync(new CreateUserParam
            {
                CustomerId       = Guid.Empty,
                Email            = createUserParam.Email,
                FirstName        = createUserParam.FirstName,
                LastName         = createUserParam.LastName,
                Username         = createUserParam.Username,
                Password         = createUserParam.Password,
                PasswordQuestion = createUserParam.PasswordQuestion,
                PasswordAnswer   = createUserParam.PasswordAnswer,
                CultureInfo      = createUserParam.CultureInfo,
                Scope            = createUserParam.Scope
            }).ConfigureAwait(false);

            return(GetCreateAccountViewModel(new GetCreateAccountViewModelParam
            {
                ReturnUrl = createUserParam.ReturnUrl,
                Status = customer.AccountStatus == AccountStatus.RequiresApproval ? MyAccountStatus.RequiresApproval : MyAccountStatus.Success,
                CultureInfo = createUserParam.CultureInfo,
                Customer = customer,
                TermsAndConditionsUrl = termsAndConditionsUrl
            }));
        }
Exemple #2
0
        public virtual ActionResult CreateAccountBlade()
        {
            var termsAndConditionsUrl = MyAccountUrlProvider.GetTermsAndConditionsUrl(new BaseUrlParameter
            {
                CultureInfo = ComposerContext.CultureInfo
            });

            var createAccountViewModel =
                MembershipViewService.GetCreateAccountViewModel(new GetCreateAccountViewModelParam
            {
                ReturnUrl             = GetReturnUrlToPreserve(),
                TermsAndConditionsUrl = termsAndConditionsUrl
            });

            return(View("CreateAccountBlade", createAccountViewModel));
        }