public ActionResult DatabaseSetup(string signout) {
DatabaseSetupModel model = new DatabaseSetupModel();
DatabaseUpdate du = new DatabaseUpdate(true);
if (!String.IsNullOrEmpty(signout)) {
SignOut();
}
List<DatabaseUpdateMessage> lst = new List<DatabaseUpdateMessage>();
model.Messages = lst;
if (DatabaseUpdate.LastSQLError != null) {
du.HandleResponse(lst, DatabaseUpdate.LastSQLError);
DatabaseUpdate.LastSQLError = null;
} else {
bool bUpdate = true;
if (!du.DoCMSTablesExist()) {
bUpdate = false;
}
bUpdate = du.DatabaseNeedsUpdate();
try {
model.CreateUser = !DatabaseUpdate.UsersExist;
} catch { }
if (bUpdate) {
DatabaseUpdateStatus status = du.PerformUpdates();
lst = du.MergeMessages(lst, status.Messages);
} else {
DataInfo ver = DatabaseUpdate.GetDbSchemaVersion();
du.HandleResponse(lst, "Database up-to-date [" + ver.DataValue + "] ");
}
bUpdate = du.DatabaseNeedsUpdate();
if (!bUpdate && DatabaseUpdate.LastSQLError == null) {
model.CreateUser = !DatabaseUpdate.UsersExist;
}
}
if (DatabaseUpdate.LastSQLError != null) {
du.HandleResponse(lst, DatabaseUpdate.LastSQLError);
}
model.HasExceptions = lst.Where(x => !String.IsNullOrEmpty(x.ExceptionText)).Any();
model.Messages = lst;
using (CMSConfigHelper cmsHelper = new CMSConfigHelper()) {
cmsHelper.ResetConfigs();
}
return View(model);
}