public ActionResult Index(SetupViewModel model)
        {
            if (ModelState.IsValid) {
                // Attempt to register the user
                MembershipCreateStatus createStatus = _membershipService.CreateUser(model.SetupModel.UserName, model.SetupModel.Password, model.SetupModel.Email);

                if (createStatus == MembershipCreateStatus.Success) {

                    _formsService.SignIn(model.SetupModel.UserName, false /* createPersistentCookie */);
                    // Create the site configuration
                    IConfiguration configuration = new Configuration.Configuration();
                    configuration.SiteName = model.Configuration.SiteName;
                    _session.Store(configuration);
                    IStructureInfo structureInfo = new StructureInfo();
                    _session.Store(structureInfo);
                    _session.SaveChanges();

                    return RedirectToAction("index", "UI", new { area = "ui" });
                }

                ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
            }
            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public async Task<ActionResult> Index(SetupViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }
            using (var session = _store.OpenSession()) {

                using (var userManager = Startup.UserManagerFactory.Invoke(session)) {

                    var user = new ApplicationUser
                    {
                        UserName = model.SetupModel.UserName,
                        Email = model.SetupModel.Email
                    };

                    session.Store(user);

                    var result = await userManager.CreateAsync(user, model.SetupModel.Password);

                    if (result.Succeeded) {
                        var identity = await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
                        identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
                        GetAuthenticationManager().SignIn(identity);
                        Configuration configuration = new Configuration
                        {
                            SiteName = model.Configuration.SiteName
                        };
                        session.Store(configuration);
                        session.SaveChanges();
                        return RedirectToAction("Index", "UI", new { area = "UI" });
                    }

                    foreach (var error in result.Errors) {
                        ModelState.AddModelError("", error);
                    }

                    return View();
                }
            }
        }