public ActionResult Update() { var databaseStatusGenerator = new SetupStatusGenerator(_schemaRepository, _pathMapper); var databaseStatus = databaseStatusGenerator.GetSetupStatus(); if (databaseStatus.StatusCode == SetupStatusCode.DatabaseError) { return(RedirectToRoute("SetupError")); } if (databaseStatus.StatusCode == SetupStatusCode.DatabaseNotSetup) { return(RedirectToRoute("InitializeDatabase")); } if (databaseStatus.StatusCode == SetupStatusCode.NoUpdates && !_settingsRepository.InstallationComplete) { return(RedirectToRoute("SetupIndex")); } if (databaseStatus.StatusCode == SetupStatusCode.NoUpdates && _settingsRepository.InstallationComplete) { return(RedirectToAction("Index", "Home", new { Area = "" })); } var scripts = GetRunnableScripts().ToList().Select(r => Path.GetFileName(r.ScriptPath)).ToList(); var databaseSetupModel = new DatabaseSetupModel { Scripts = scripts }; 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)); }
public ActionResult Index(DatabaseSetupModel databaseSetupModel) { var isCredentialsValid = _dbContext.IsCredentialsValid(databaseSetupModel.ConnectionString); if (ModelState.IsValid && isCredentialsValid) { var files = _pathMapper.GetAvailableScripts().ToList(); try { var runner = new SqlRunner(ApplicationConfiguration.ConnectionString); var results = runner.RunScripts(files); UpdateScriptsRan(results); return(RedirectToRoute("SetupIndex")); } catch (Exception exception) { databaseSetupModel.Message = "Unable to complete the installation, scroll below..."; databaseSetupModel.MessageCss = "error"; databaseSetupModel.CompleteException = exception.ToString(); } } if (!string.IsNullOrEmpty(databaseSetupModel.ConnectionString) && !isCredentialsValid) { databaseSetupModel.Message = "An invalid connection string was entered"; databaseSetupModel.MessageCss = "error"; } databaseSetupModel.Scripts = _pathMapper.GetAvailableScripts().ToList().Select(s => Path.GetFileName(s.ScriptPath)).ToList(); return(View(databaseSetupModel)); }
public JsonResult DatabaseSetup(DatabaseSetupModel model) { if (ModelState.IsValid) { var response = _siteSetupService.SaveDatabaseSetupModel(model); return(Json(response)); } return(Json(new ResponseModel { Success = false, Message = ModelState.BuildValidationMessages() })); }
/// <summary> /// Save database setup /// </summary> /// <param name="model"></param> /// <returns></returns> public ResponseModel SaveDatabaseSetupModel(DatabaseSetupModel model) { ResponseModel response; try { var initialize = new SiteInitializer(); response = initialize.TestConnectionString(model.Server, model.DatabaseName, model.UserName, model.Password, model.IntegratedSecurity); if (response.Success) { var config = new SiteConfiguration { ConnectionString = string.Format( "Data Source={0};Initial Catalog={1};uid={2};pwd={3};Integrated Security={4};MultipleActiveResultSets=True", model.Server, model.DatabaseName, model.UserName, model.Password, model.IntegratedSecurity ? "True" : "False"), IsSetupFinish = false }; SiteInitializer.SaveConfiguration(config); initialize.InitDatabase(); WorkContext.SetupInformation.SiteConfiguration = config; } else { if (response.Message.StartsWith("Login failed for user")) { response.Message = "Invalid username or password"; } } } catch (Exception exception) { response = new ResponseModel { Success = false, Message = exception.Message.StartsWith("Login failed for user") ? "Invalid username or password" : exception.Message }; } return(response); }
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..."; } }