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 SetupStatus GetSetupStatus() { var setupStatus = new SetupStatus(); try { var allEntries = GetSchemaVersions(); var sortedList = _pathMapper.GetAvailableScripts(); var schemaInstance = allEntries.LastOrDefault(); var lastInstance = sortedList.LastOrDefault(); if (lastInstance != null && lastInstance.Equals(schemaInstance)) { setupStatus.StatusCode = SetupStatusCode.NoUpdates; setupStatus.Message = "Your instance is up to date!"; } else { setupStatus.StatusCode = SetupStatusCode.HasUpdates; setupStatus.Message = "Your instance has some updates"; } } catch (Exception exception) { if (exception.Message == "Invalid object name 'Schema'.") { setupStatus.StatusCode = SetupStatusCode.DatabaseNotSetup; setupStatus.Message = "Database has not been setup"; } else { setupStatus.StatusCode = SetupStatusCode.DatabaseError; setupStatus.Message = exception.Message; } } return(setupStatus); }