public ActionResult Index() { var databaseStatusGenerator = new SetupStatusGenerator(_schemaRepository, _pathMapper); var databaseStatus = databaseStatusGenerator.GetSetupStatus(); if (databaseStatus.StatusCode == SetupStatusCode.DatabaseError) { return RedirectToRoute("SetupError"); } if (databaseStatus.StatusCode == SetupStatusCode.HasUpdates) { return RedirectToRoute("UpdateDatabase"); } if (databaseStatus.StatusCode == SetupStatusCode.NoUpdates && !_settingsRepository.InstallationComplete) { return RedirectToRoute("SetupIndex"); } if (databaseStatus.StatusCode == SetupStatusCode.NoUpdates && _settingsRepository.InstallationComplete) { return RedirectToAction("Index", "Home", new { Area = "" }); } var databaseSetupModel = new DatabaseSetupModel { Scripts = _pathMapper.GetAvailableScripts().ToList().Select(s => Path.GetFileName(s.ScriptPath)).ToList() }; return View(databaseSetupModel); }
public ActionResult Index(DatabaseSetupModel databaseSetupModel) { List<SchemaVersion> results = null; var isCredentialsValid = _dbContext.IsCredentialsValid(databaseSetupModel.ConnectionString); if (ModelState.IsValid && isCredentialsValid) { var files = _pathMapper.GetAvailableScripts().ToList(); try { results = RunScripts(files); if (results.All(r => r.RunStatus)) { return RedirectToRoute("SetupIndex"); } } catch (Exception exception) { databaseSetupModel.Message = "Unable to complete the installation, scroll below..."; databaseSetupModel.MessageCss = "error"; databaseSetupModel.CompleteException = exception.ToString(); } } UpdateModelByErrorType(databaseSetupModel, results, isCredentialsValid); databaseSetupModel.Scripts = _pathMapper.GetAvailableScripts() .Select(s => Path.GetFileName(s.ScriptPath)) .ToList(); return View(databaseSetupModel); }
private static void UpdateModelByErrorType(DatabaseSetupModel databaseSetupModel, List<SchemaVersion> results, bool isCredentialsValid) { if (string.IsNullOrEmpty(databaseSetupModel.ConnectionString)) return; databaseSetupModel.MessageCss = "error"; databaseSetupModel.Results = results; if (!string.IsNullOrEmpty(databaseSetupModel.ConnectionString) && !isCredentialsValid) { databaseSetupModel.Message = "An invalid connection string was entered"; } else if (results != null && results.Any(r => !r.RunStatus)) { databaseSetupModel.Message = "Unable to run the following scripts"; } else { databaseSetupModel.Message = "I give up, cannot figure this out :( Scroll down for more information..."; } }