/// <summary> /// Handles the Click event of the btnOK control. The conference is renamed, the divisions are deleted and recreated, and if any /// teams are left in division IDs that no longer exist, they get reassigned. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e"> /// The <see cref="RoutedEventArgs" /> instance containing the event data. /// </param> private void btnOK_Click(object sender, RoutedEventArgs e) { var db = new SQLiteDatabase(MainWindow.CurrentDB); if (String.IsNullOrWhiteSpace(txtName.Text)) { txtName.Text = "League"; } MainWindow.Conferences.Single(conference => conference.ID == _curConf.ID).Name = txtName.Text; db.Update("Conferences", new Dictionary<string, string> { { "Name", txtName.Text } }, "ID = " + _curConf.ID); MainWindow.Divisions.RemoveAll(division => division.ConferenceID == _curConf.ID); db.Delete("Divisions", "Conference = " + _curConf.ID); var usedIDs = new List<int>(); db.GetDataTable("SELECT ID FROM Divisions") .Rows.Cast<DataRow>() .ToList() .ForEach(row => usedIDs.Add(ParseCell.GetInt32(row, "ID"))); var list = Tools.SplitLinesToList(txtDivisions.Text, false); foreach (var newDiv in list) { var newName = newDiv.Replace(':', '-'); var i = 0; while (usedIDs.Contains(i)) { i++; } MainWindow.Divisions.Add(new Division { ID = i, Name = newName, ConferenceID = _curConf.ID }); usedIDs.Add(i); } if (MainWindow.Divisions.Any(division => division.ConferenceID == _curConf.ID) == false) { var i = 0; while (usedIDs.Contains(i)) { i++; } MainWindow.Divisions.Add(new Division { ID = i, Name = txtName.Text, ConferenceID = _curConf.ID }); usedIDs.Add(i); } foreach (var div in MainWindow.Divisions.Where(division => division.ConferenceID == _curConf.ID)) { db.Insert( "Divisions", new Dictionary<string, string> { { "ID", div.ID.ToString() }, { "Name", div.Name }, { "Conference", div.ConferenceID.ToString() } }); } TeamStats.CheckForInvalidDivisions(); ListWindow.MustUpdate = true; Close(); }
/// <summary>Checks for teams in divisions that don't exist anymore, and reassings them to the first available division.</summary> public static void CheckForInvalidDivisions() { var db = new SQLiteDatabase(MainWindow.CurrentDB); var usedIDs = new List<int>(); db.GetDataTable("SELECT ID FROM Divisions") .Rows.Cast<DataRow>() .ToList() .ForEach(row => usedIDs.Add(ParseCell.GetInt32(row, "ID"))); var teamsChanged = new List<string>(); var maxSeason = SQLiteIO.GetMaxSeason(MainWindow.CurrentDB); for (var i = maxSeason; i >= 1; i--) { var teamsT = "Teams"; var plTeamsT = "PlayoffTeams"; var oppT = "Opponents"; var plOppT = "PlayoffOpponents"; if (i != maxSeason) { var toAdd = "S" + i; teamsT += toAdd; plTeamsT += toAdd; oppT += toAdd; plOppT += toAdd; } var tables = new List<string> { teamsT, plTeamsT, oppT, plOppT }; foreach (var table in tables) { var q = "SELECT ID, Name, Division FROM " + table; var res = db.GetDataTable(q); foreach (DataRow r in res.Rows) { if (usedIDs.Contains(ParseCell.GetInt32(r, "Division")) == false) { db.Update( table, new Dictionary<string, string> { { "Division", MainWindow.Divisions.First().ID.ToString() } }, "ID = " + ParseCell.GetString(r, "ID")); var teamid = MainWindow.TST.Values.Single(ts => ts.Name == ParseCell.GetString(r, "Name")).ID; MainWindow.TST[teamid].Division = MainWindow.Divisions.First().ID; if (teamsChanged.Contains(MainWindow.TST[teamid].DisplayName) == false) { teamsChanged.Add(MainWindow.TST[teamid].DisplayName); } } } } } if (teamsChanged.Count > 0) { teamsChanged.Sort(); var s = "Some teams were in divisions that were deleted and have been reset to the " + MainWindow.Divisions.First().Name + " division.\n\n"; teamsChanged.ForEach(s1 => s += s1 + "\n"); s = s.TrimEnd(new[] { '\n' }); SQLiteIO.SaveSeasonToDatabase(); MessageBox.Show(s); } }
private void btnOK_Click(object sender, RoutedEventArgs e) { if (_mode == Mode.HiddenTeams) { var db = new SQLiteDatabase(_currentDB); var teamsT = "Teams"; var plTeamsT = "PlayoffTeams"; var oppT = "Opponents"; var plOppT = "PlayoffOpponents"; if (_curSeason != _maxSeason) { var s = "S" + _curSeason; teamsT += s; plTeamsT += s; oppT += s; plOppT += s; } foreach (string name in lstEnabled.Items) { var dict = new Dictionary<string, string> { { "isHidden", "False" } }; db.Update(teamsT, dict, "DisplayName LIKE \"" + name + "\""); db.Update(plTeamsT, dict, "DisplayName LIKE \"" + name + "\""); db.Update(oppT, dict, "DisplayName LIKE \"" + name + "\""); db.Update(plOppT, dict, "DisplayName LIKE \"" + name + "\""); } foreach (string name in lstDisabled.Items) { var q = "select * from GameResults where SeasonNum = " + _curSeason + " AND (Team1ID = " + getTeamIDFromDisplayName(name) + " OR Team2ID = " + getTeamIDFromDisplayName(name) + ")"; var res = db.GetDataTable(q); if (res.Rows.Count > 0) { var r = MessageBox.Show( name + " have box scores this season. Are you sure you want to disable this team?", "NBA Stats Tracker", MessageBoxButton.YesNo, MessageBoxImage.Question); if (r == MessageBoxResult.No) { continue; } } var dict = new Dictionary<string, string> { { "isHidden", "True" } }; db.Update(teamsT, dict, "DisplayName LIKE \"" + name + "\""); db.Update(plTeamsT, dict, "DisplayName LIKE \"" + name + "\""); db.Update(oppT, dict, "DisplayName LIKE \"" + name + "\""); db.Update(plOppT, dict, "DisplayName LIKE \"" + name + "\""); } MainWindow.AddInfo = "$$TEAMSENABLED"; Close(); } else if (_mode == Mode.HiddenPlayers) { var db = new SQLiteDatabase(_currentDB); var dataList = new List<Dictionary<string, string>>(); var whereList = new List<string>(); foreach (KeyValuePair<int, string> item in lstEnabled.Items) { var dict = new Dictionary<string, string> { { "isHidden", "False" } }; dataList.Add(dict); whereList.Add("ID = " + item.Key); } db.UpdateManyTransaction(_playersT, dataList, whereList); dataList = new List<Dictionary<string, string>>(); whereList = new List<string>(); foreach (KeyValuePair<int, string> item in lstDisabled.Items) { var q = "select * from PlayerResults INNER JOIN GameResults ON GameResults.GameID = PlayerResults.GameID where SeasonNum = " + _curSeason + " AND PlayerID = " + item.Key; var res = db.GetDataTable(q, true); if (res.Rows.Count > 0) { var r = MessageBox.Show( item.Value + " has box scores this season. Are you sure you want to disable them?", "NBA Stats Tracker", MessageBoxButton.YesNo, MessageBoxImage.Question); if (r == MessageBoxResult.No) { continue; } } var dict = new Dictionary<string, string> { { "isHidden", "True" }, { "isActive", "False" }, { "TeamFin", "" } }; dataList.Add(dict); whereList.Add("ID = " + item.Key); } db.UpdateManyTransaction(_playersT, dataList, whereList); MainWindow.AddInfo = "$$PLAYERSENABLED"; Close(); } else if (_mode == Mode.REDitor) { if (lstEnabled.Items.Count != 30) { MessageBox.Show( "You can't have less or more than 30 teams enabled. You currently have " + lstEnabled.Items.Count + "."); return; } //MainWindow.selectedTeams = new List<Dictionary<string, string>>(_activeTeams); MainWindow.SelectedTeams = new List<Dictionary<string, string>>(); foreach (string team in lstEnabled.Items) { var teamName = team.Split(new[] { " (ID: " }, StringSplitOptions.None)[0]; MainWindow.SelectedTeams.Add( _validTeams.Find( delegate(Dictionary<string, string> t) { if (t["Name"] == teamName) { return true; } return false; })); } MainWindow.SelectedTeamsChanged = _changed; DialogResult = true; Close(); } else if (_mode == Mode.TradePlayers) { foreach (var pair in _rosters) { var newTeam = pair.Key; foreach (var pID in pair.Value) { var oldTeam = MainWindow.PST[pID].TeamF; var oldTeamS = MainWindow.PST[pID].TeamS; if (newTeam != oldTeam) { if (oldTeamS == -1) { MainWindow.PST[pID].TeamS = MainWindow.PST[pID].TeamF; } MainWindow.PST[pID].TeamF = newTeam; MainWindow.PST[pID].IsSigned = newTeam != -1; } } } DialogResult = true; Close(); } }