Esempio n. 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));
        }
Esempio n. 2
0
        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);
        }