Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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...";
            }
        }