Example #1
0
        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));
        }
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
        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));
        }
Example #4
0
        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()
            }));
        }
Example #5
0
        /// <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);
        }
Example #6
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...";
            }
        }