public async Task <ActionResult> Register(OrderConfirmationRegistrationBlock currentBlock, OrderConfirmationRegistrationFormModel viewModel)
        {
            var purchaseOrder = _orderRepository.Load <IPurchaseOrder>(viewModel.OrderNumber);

            var model = new OrderConfirmationRegistrationModel
            {
                CurrentBlock = currentBlock,
                FormModel    = viewModel
            };

            if (purchaseOrder == null)
            {
                ModelState.AddModelError("Password2", "Something went wrong");
            }

            if (!ModelState.IsValid || purchaseOrder == null)
            {
                return(PartialView("NewCustomer", model.FormModel));
            }

            ContactIdentityResult registration = await UserService.RegisterAccount(new SiteUser(purchaseOrder)
            {
                Password           = viewModel.Password,
                RegistrationSource = "Order confirmation page",
                IsApproved         = true
            });

            if (registration.Result.Succeeded)
            {
                if (registration.Contact.PrimaryKeyId.HasValue)
                {
                    purchaseOrder.CustomerId = registration.Contact.PrimaryKeyId.Value;

                    _orderRepository.Save(purchaseOrder);
                }
                return(PartialView("Complete", registration.Contact.Email));
            }

            if (registration.Result.Errors.Any())
            {
                registration.Result.Errors.ToList().ForEach(x => ModelState.AddModelError("Password2", x));
                return(PartialView("NewCustomer", model.FormModel));
            }

            return(PartialView("Index", model.FormModel));
        }
Esempio n. 2
0
        public async Task <ActionResult> Register(OrderConfirmationRegistrationBlock currentBlock, OrderConfirmationRegistrationFormModel formModel)
        {
            var purchaseOrder = OrderContext.Current.GetPurchaseOrder(formModel.OrderNumber);

            var model = new OrderConfirmationRegistrationModel
            {
                CurrentBlock = currentBlock,
                FormModel    = formModel
            };

            if (purchaseOrder == null)
            {
                ModelState.AddModelError("FormModel.Password2", "Something went wrong");
            }

            if (!ModelState.IsValid || purchaseOrder == null)
            {
                return(PartialView("NewCustomer", model));
            }

            ContactIdentityResult registration = await UserService.RegisterAccount(new ApplicationUser(purchaseOrder)
            {
                Password           = formModel.Password,
                RegistrationSource = "Order confirmation page"
            });

            if (registration.Result.Succeeded)
            {
                if (registration.Contact.PrimaryKeyId.HasValue)
                {
                    purchaseOrder.CustomerId   = registration.Contact.PrimaryKeyId.Value;
                    purchaseOrder.CustomerName = registration.Contact.FullName;
                    purchaseOrder.AcceptChanges();
                }
                return(PartialView("Complete", registration.Contact.Email));
            }

            if (registration.Result.Errors.Any())
            {
                registration.Result.Errors.ToList().ForEach(x => ModelState.AddModelError("FormModel.Password2", x));
                return(PartialView("NewCustomer", model));
            }

            return(PartialView("Index", model));
        }
Esempio n. 3
0
        public ActionResult Index(OrderConfirmationRegistrationBlock currentBlock)
        {
            OrderConfirmationRegistrationModel model = null;
            var orderNumber = ControllerContext.ParentActionViewContext.ViewData["OrderNumber"] as int? ?? -1;
            var contactId   = ControllerContext.ParentActionViewContext.ViewData["ContactId"] as Guid? ?? Guid.Empty;
            var order       = _orderRepository.Load <IPurchaseOrder>(orderNumber);

            if (order == null || _customerContext.GetContactById(order.CustomerId) != null)
            {
                return(null);
            }

            ApplicationUser user = UserService.GetUser(order.GetFirstForm().Payments.First().BillingAddress.Email);

            if (user != null)
            {
                model = new OrderConfirmationRegistrationModel
                {
                    CurrentBlock = currentBlock,
                    FormModel    = new OrderConfirmationRegistrationFormModel
                    {
                        OrderNumber = orderNumber,
                        ContactId   = contactId
                    }
                };

                return(PartialView(model.FormModel));
            }

            model = new OrderConfirmationRegistrationModel
            {
                CurrentBlock = currentBlock,
                FormModel    = new OrderConfirmationRegistrationFormModel
                {
                    OrderNumber = orderNumber,
                    ContactId   = contactId
                }
            };

            return(PartialView("NewCustomer", model.FormModel));
        }