//Adds a new Application or edits an existing one. protected void AddEditApplication(object sender, EventArgs e) { ClearDebugLabels(); if ((appIDBox.Text == "") || (appNameBox.Text == "") || (appVersionBox.Text == "")) { AppDebug.Text = "Cannot have empty fields."; return; } int appID = int.Parse(appIDBox.Text); bool editing = false; Application app; try { app = data.Application.First(x => x.LogApplicationId == appID); } catch { app = new Application(); app.LogApplicationId = appID; editing = true; } app.LogApplicationName = appNameBox.Text; app.LogApplicationVersion = appVersionBox.Text; if (editing) { data.AddToApplication(app); } data.SaveChanges(); int user = userSelectionBox.SelectedIndex; PopulateLists(); userSelectionBox.SelectedIndex = user; DisplaySelectedUserData(sender, e); }
//Brings the database's list of apps into compliance with the official list. protected void RefreshDBAppList() { StringBuilder builder = new StringBuilder(); builder.Append("Updates from the official app list:<br/>"); using (MediaAxEntities logDB = new MediaAxEntities("metadata=res://*;provider=System.Data.SqlClient;provider connection string='Data Source=mmodsql1.orcsweb.com;Initial Catalog=MediaAx;User ID=mmod_report_user;Password=\"MarchMadness;1\";MultipleActiveResultSets=True;Network Library=dbmssocn'")) { var logapps = from item in logDB.LogApplications select item; string action = ""; bool adding = false; bool changedOne = false; bool changeHappened = false; //First, remove any local applications that don't officially exist anymore. var localApps = from item in data.Application select item; foreach (Application app in localApps) { if (logapps.Any(x => x.LogApplicationId == app.LogApplicationId)) { continue; } else { builder.Append("Removed nonexistent Application: "); builder.Append(app.LogApplicationId + " " + app.LogApplicationName + " " + app.LogApplicationVersion + "<br/>"); data.DeleteObject(app); changeHappened = true; } } //Then, add or edit applications where the local copy doesn't match the official version. foreach (LogApplications logApp in logapps) { adding = false; changedOne = false; Application app; try { app = data.Application.First(x => x.LogApplicationId == logApp.LogApplicationId); action = "Edited \"" + app.LogApplicationId + " " + app.LogApplicationName + " " + app.LogApplicationVersion + "\" to match: "; } catch { app = new Application(); app.LogApplicationId = logApp.LogApplicationId; action = "Added new Application: "; adding = true; changedOne = true; } if (app.LogApplicationName != logApp.LogApplicationName) { app.LogApplicationName = logApp.LogApplicationName; changedOne = true; } if (app.LogApplicationVersion != logApp.LogApplicationVersion) { app.LogApplicationVersion = logApp.LogApplicationVersion; changedOne = true; } if (changedOne) { changeHappened = true; builder.Append(action); builder.Append(app.LogApplicationId); builder.Append(" "); builder.Append(app.LogApplicationName); builder.Append(" "); builder.Append(app.LogApplicationVersion); builder.Append("<br/>"); if (adding) { data.AddToApplication(app); } } } //If anything was removed, added, or edited, list it. if (changeHappened) { updateDebug.Text = builder.ToString(); data.SaveChanges(); } } }