public ActionResult StepFour(StepFourModel model)
        {
            if (DataSettingsHelper.SiteIsInstalled)
                return RedirectToAction("index", "home");

            if (!DataSettingsHelper.DatabaseIsInstalled)
                return RedirectToRoute("Install");

            // Load the local settings
            var manager = new DataSettingsManager();
            var settings = manager.LoadSettings();

            // Ensure the form is valid
            if (ModelState.IsValid)
            {
                var siteOwner = settings.SiteOwner;
                siteOwner.DisplayName = model.DisplayName;
                siteOwner.Email = model.Email;
                siteOwner.UserName = SeoExtensions.GetSeoName(model.UserName);

                // Install the rest of the site data
                var installService = EngineContext.Current.Resolve<IInstallService>();
                installService.InstallUserData(siteOwner, model.MailFromDisplayName, model.MailFromEmail, model.MailHost, model.MailPort, model.MailUsername, model.MailPassword, model.TwitterAccessToken, model.TwitterAccessTokenSecret);

                // Clear our the site owner data from the settings file
                settings.InstallComplete = true;
                settings.SiteOwner = null;
                manager.SaveSettings(settings);

                // Restart the application
                var webHelper = EngineContext.Current.Resolve<IWebHelper>();
                webHelper.RestartAppDomain();

                // Redirect home
                return RedirectToAction("index", "home");
            }

            model = PrepareStepFourModel(model);
            return View(model);
        }
        private StepFourModel PrepareStepFourModel(StepFourModel model = null, User siteOwner = null)
        {
            if (model == null)
            {
                model = new StepFourModel
                            {
                                MailHost = "localhost",
                                MailPort = 21
                            };
            }

            if (siteOwner != null)
            {
                model.AuthenticationMethod = siteOwner.PrimaryAuthMethod.ToString();
                model.DisplayName = siteOwner.DisplayName;
                model.Email = siteOwner.Email;
                model.UserName = siteOwner.UserName;
            }

            return model;
        }