public static ShowDbConnectError ( |
||
e | ||
Результат | void |
/// <summary> /// Reset Unlocks Button Click Event /// </summary> private void ResetUnlocksBtn_Click(object sender, EventArgs e) { try { // Create New Player Unlock Data StringBuilder Query = new StringBuilder("INSERT INTO unlocks VALUES "); // Normal unlocks for (int i = 11; i < 100; i += 11) { Query.AppendFormat("({0}, {1}, 'n'), ", Pid, i); } // Sf Unlocks for (int i = 111; i < 556; i += 111) { Query.AppendFormat("({0}, {1}, 'n')", Pid, i); if (i != 555) { Query.Append(", "); } } // Do driver queries using (StatsDatabase Driver = new StatsDatabase()) using (DbTransaction T = Driver.BeginTransaction()) { try { // Perform queries Driver.Execute("DELETE FROM unlocks WHERE id = " + Pid); Driver.Execute("UPDATE player SET usedunlocks = 0 WHERE id = " + Pid); Driver.Execute(Query.ToString()); T.Commit(); // Notify user Notify.Show("Player Unlocks Have Been Reset", "This player will be able to select his new unlocks upon logging in.", AlertType.Success); } catch { T.Rollback(); throw; } } } catch (DbConnectException Ex) { HttpServer.Stop(); ExceptionForm.ShowDbConnectError(Ex); this.Close(); } }
/// <summary> /// Reset stats button click event /// </summary> private async void ResetStatsBtn_Click(object sender, EventArgs e) { if (MessageBox.Show("Are you sure you want to reset players stats?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { try { TaskForm.Show(this, "Reset Player Stats", "Reseting Player \"" + Player["name"] + "\"'s Stats", false); await Task.Run(() => { // Delete the players using (StatsDatabase Driver = new StatsDatabase()) { // Delete old player statistics Driver.DeletePlayer(Pid, TaskForm.Progress); // Insert a new player record Driver.Execute( "INSERT INTO player(id, name, country, joined, clantag, permban, isbot) VALUES(@P0, @P1, @P2, @P3, @P4, @P5, @P6)", Pid, Player["name"], Player["country"], Player["joined"], Player["clantag"], Player["permban"], Player["isbot"] ); } }); // Reload player LoadPlayer(); Notify.Show("Player Stats Reset Successfully!", "Operation Successful", AlertType.Success); } catch (DbConnectException Ex) { HttpServer.Stop(); ExceptionForm.ShowDbConnectError(Ex); TaskForm.CloseForm(); this.Close(); return; } catch (Exception E) { // Show exception error using (ExceptionForm Form = new ExceptionForm(E, false)) { Form.Message = String.Format("Failed to reset player stats!{1}{1}Error: {0}", E.Message, Environment.NewLine); Form.ShowDialog(); } } finally { // Close task form TaskForm.CloseForm(); } } }
/// <summary> /// Import Stats Button Click Event /// </summary> private void ImportBtn_Click(object sender, EventArgs e) { // Make sure PID text box is a valid PID if (!Validator.IsValidPID(PidTextBox.Text)) { MessageBox.Show("The player ID entered is NOT a valid PID. Please try again.", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Establist Database connection try { using (StatsDatabase Database = new StatsDatabase()) { // Make sure the PID doesnt exist already int Pid = Int32.Parse(PidTextBox.Text); if (Database.PlayerExists(Pid)) { MessageBox.Show("The player ID entered already exists.", "Import Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Show Task Form TaskForm.Show(this, "Import ASP Stats", "Importing ASP Stats...", false, ProgressBarStyle.Blocks, 13); // Setup the worker bWorker = new BackgroundWorker(); bWorker.WorkerSupportsCancellation = false; bWorker.WorkerReportsProgress = true; // Run Worker bWorker.DoWork += bWorker_ImportEaStats; bWorker.ProgressChanged += (s, ea) => { TaskForm.Progress.Report(new TaskProgressUpdate(ea.UserState.ToString(), ea.ProgressPercentage)); }; bWorker.RunWorkerCompleted += bWorker_RunWorkerCompleted; bWorker.RunWorkerAsync(PidTextBox.Text); } } catch (DbConnectException Ex) { ExceptionForm.ShowDbConnectError(Ex); HttpServer.Stop(); this.Close(); return; } }
public AccountListForm() { InitializeComponent(); SortedCol = DataTable.Columns[0]; // Try to connect to the database try { using (GamespyDatabase Driver = new GamespyDatabase()) { } } catch (DbConnectException Ex) { ExceptionForm.ShowDbConnectError(Ex); Load += (s, e) => Close(); // Close form return; } // Setting the limit will build the inital list LimitSelect.SelectedIndex = 2; }
/// <summary> /// Constructor /// </summary> public PlayerSearchForm() { InitializeComponent(); // Establish DB connection try { Driver = new StatsDatabase(); } catch (DbConnectException Ex) { HttpServer.Stop(); ExceptionForm.ShowDbConnectError(Ex); Load += (s, e) => Close(); // Close form return; } // Initialize sorting SortedCol = DataTable.Columns[1]; SortedCol.HeaderCell.SortGlyphDirection = SortOrder.Ascending; LimitSelect.SelectedIndex = 2; }
/// <summary> /// Export Player Button Click Event /// </summary> private void ExportPlayerBtn_Click(object sender, EventArgs e) { // Create export directory if it doesnt exist yet string sPath = Path.Combine(Paths.DocumentsFolder, "Player Backups"); if (!Directory.Exists(sPath)) { Directory.CreateDirectory(sPath); } // Have user select folder FolderSelect.FolderSelectDialog Dialog = new FolderSelect.FolderSelectDialog(); Dialog.InitialDirectory = sPath; Dialog.Title = "Select folder to export player to"; if (Dialog.ShowDialog()) { try { StatsManager.ExportPlayerXml(sPath, Pid, Player["name"].ToString()); Notify.Show("Player Exported Successfully", String.Format("{0} ({1})", Player["name"].ToString(), Pid), AlertType.Success); } catch (DbConnectException Ex) { HttpServer.Stop(); ExceptionForm.ShowDbConnectError(Ex); this.Close(); } catch (Exception E) { using (ExceptionForm EForm = new ExceptionForm(E, false)) { EForm.Message = "Unable to export player because an exception was thrown!"; EForm.ShowDialog(); } } } }
/// <summary> /// Delete Player Button Click Event /// </summary> private async void DeletePlayerBtn_Click(object sender, EventArgs e) { if (MessageBox.Show("Are you sure you want to delete player?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { try { TaskForm.Show(this, "Delete Player", "Deleting Player \"" + Player["name"] + "\"", false); // Delete the player using (StatsDatabase Driver = new StatsDatabase()) await Task.Run(() => Driver.DeletePlayer(Pid, TaskForm.Progress)); Notify.Show("Player Deleted Successfully!", "Operation Successful", AlertType.Success); } catch (DbConnectException Ex) { HttpServer.Stop(); ExceptionForm.ShowDbConnectError(Ex); } catch (Exception E) { // Show exception error using (ExceptionForm Form = new ExceptionForm(E, false)) { Form.Message = String.Format("Failed to remove player from database!{1}{1}Error: {0}", E.Message, Environment.NewLine); Form.ShowDialog(); } } finally { // Close task form TaskForm.CloseForm(); this.Close(); } } }
/// <summary> /// Loads the players stats from the database, and fills out the forms /// labels with the current information /// </summary> private void LoadPlayer() { StatsDatabase Driver; // Establish DB connection try { Driver = new StatsDatabase(); } catch (DbConnectException Ex) { ExceptionForm.ShowDbConnectError(Ex); HttpServer.Stop(); Load += (s, e) => Close(); // Close form return; } // Fetch Player from database SelectQueryBuilder Builder = new SelectQueryBuilder(Driver); Builder.SelectFromTable("player"); Builder.SelectColumns( "name", "score", "cmdscore", "skillscore", "teamscore", "joined", "country", "rank", "wins", "losses", "permban", "clantag", "isbot"); Builder.AddWhere("id", Comparison.Equals, Pid); List <Dictionary <string, object> > Rows = Driver.ExecuteReader(Builder.BuildCommand()); Player = Rows[0]; // Set window title this.Text = String.Concat(Player["name"].ToString().Trim(), " (", Pid, ")"); // Set country flag try { string Country = String.IsNullOrEmpty(Player["country"].ToString()) ? "XX" : Player["country"].ToString(); CountryPicture.Image = Image.FromStream(Program.GetResource("BF2Statistics.Resources." + Country.ToUpper() + ".png")); } catch { } // Joined Label int Joind = Int32.Parse(Player["joined"].ToString()); DateTime D = DateTime.UtcNow.FromUnixTimestamp(Joind); LabelJoined.Text = String.Concat(D.ToString("yyyy-MM-dd HH:mm"), " GMT"); Tipsy.SetToolTip(LabelJoined, String.Concat(D.ToLocalTime().ToString("yyyy-MM-dd HH:mm"), " Local Time.")); // Fill out the rest of the labels LabelNick.Text = Player["name"].ToString().Trim(); ClanTagBox.Text = Player["clantag"].ToString(); RankSelect.SelectedIndex = Int32.Parse(Player["rank"].ToString()); PermBanSelect.SelectedIndex = Int32.Parse(Player["permban"].ToString()); LabelGlobalScore.Text = Player["score"].ToString(); LabelWinLoss.Text = String.Concat(Player["wins"], " / ", Player["losses"]); LabelTeamScore.Text = Player["teamscore"].ToString(); LabelCombatScore.Text = Player["skillscore"].ToString(); LabelCommandScore.Text = Player["cmdscore"].ToString(); // Get Leaderboard Position Rows = Driver.Query("SELECT COUNT(id) as count FROM player WHERE score > @P0", Int32.Parse(Player["score"].ToString())); int Position = Int32.Parse(Rows[0]["count"].ToString()) + 1; LabelPosition.Text = Position.ToString(); SaveBtn.Enabled = false; // Lock unlocks button if player is Bot if (Int32.Parse(Player["isbot"].ToString()) > 0) { ResetUnlocksBtn.Enabled = false; } // Close Connection Driver.Dispose(); }
/// <summary> /// Save Button Click Event /// </summary> private void SaveBtn_Click(object sender, EventArgs e) { try { using (StatsDatabase Driver = new StatsDatabase()) { bool Changes = false; UpdateQueryBuilder Query = new UpdateQueryBuilder("player", Driver); int Rank = Int32.Parse(Player["rank"].ToString()); // Update clantag if (Player["clantag"].ToString() != ClanTagBox.Text.Trim()) { Player["clantag"] = ClanTagBox.Text.Trim(); Query.SetField("clantag", ClanTagBox.Text.Trim()); Changes = true; } // Update Rank if (Rank != RankSelect.SelectedIndex) { if (Rank > RankSelect.SelectedIndex) { Query.SetField("decr", 1); Query.SetField("chng", 0); } else { Query.SetField("decr", 0); Query.SetField("chng", 1); } Player["rank"] = RankSelect.SelectedIndex; Query.SetField("rank", RankSelect.SelectedIndex); Changes = true; } // update perm ban status if (Int32.Parse(Player["permban"].ToString()) != PermBanSelect.SelectedIndex) { Player["permban"] = PermBanSelect.SelectedIndex; Query.SetField("permban", PermBanSelect.SelectedIndex); Changes = true; } // If no changes made, just return if (!Changes) { MessageBox.Show("Unable to save player because no changes were made.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Preform Query Query.AddWhere("id", Comparison.Equals, Pid); Query.Execute(); this.Close(); } } catch (DbConnectException Ex) { HttpServer.Stop(); ExceptionForm.ShowDbConnectError(Ex); return; } }
/// <summary> /// Imports ASP created BAK files (Mysql Out FILE) /// </summary> private async void ImportASPBtn_Click(object sender, EventArgs e) { // Open File Select Dialog FolderSelectDialog Dialog = new FolderSelectDialog(); Dialog.Title = "Select ASP Database Backup Folder"; Dialog.InitialDirectory = Path.Combine(Paths.DocumentsFolder, "Database Backups"); if (Dialog.ShowDialog()) { // Get files list from path string path = Dialog.SelectedPath; string[] BakFiles = Directory.GetFiles(path, "*.bak"); if (BakFiles.Length > 0) { // Open the database connection StatsDatabase Database = null; try { Database = new StatsDatabase(); } catch (Exception Ex) { if (Ex is DbConnectException) { ExceptionForm.ShowDbConnectError(Ex as DbConnectException); return; } MessageBox.Show( "Unable to connect to database\r\n\r\nMessage: " + Ex.Message, "Database Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; } finally { if (Database == null) { // Stop the ASP server, and close this form HttpServer.Stop(); this.Close(); } } // Show task dialog TaskForm.Show(this, "Importing Stats", "Importing ASP Stats Bak Files...", false); this.Enabled = false; // Don't block the GUI await Task.Run(() => ImportFromBakup(BakFiles, Database)); // Alert user and close task form Notify.Show("Stats imported successfully!", "Operation Successful", AlertType.Success); TaskForm.CloseForm(); this.Enabled = true; // Displose Connection Database.Dispose(); } else { // Alert the user and tell them they failed MessageBox.Show( "Unable to locate any .bak files in this folder. Please select an ASP created database backup folder that contains backup files.", "Backup Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); } } }