private string getTeamLink(Object teamNumberObject, bool showNumber, bool showName) { string result = ""; if (teamNumberObject == DBNull.Value) { return("-"); } int teamNumber = (int)teamNumberObject; DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutTeams); DataRow[] dRows = table.Select("Team_Number = " + teamNumber); Debug.Assert(dRows.Length == 1); DataRow dRow = dRows[0]; string originalEventName = AccessDatabaseUtilities.getStringValue(dRow, "Original_Event_Name"); if (string.IsNullOrWhiteSpace(originalEventName)) { result = "<span title='" + dRow["Member_Names"] + "' >" + (showNumber ? dRow["Team_Number"] + " " : "") + (showName ? dRow["Team_Name"] : "") + "</span>"; } else { int originalTeamNumber = AccessDatabaseUtilities.getIntValue(dRow, "Original_Team_Number"); //string webpagesRootDirectory = Path.Combine("..", "..", Constants.WebpagesFolderName, Utilities.makeIdentifier_(originalEventName)); //string link = Path.Combine(webpagesRootDirectory, "teams", "team" + originalTeamNumber + "score.html"); string webpagesRootDirectory = "../" + Utilities.makeIdentifier_(originalEventName); string link = webpagesRootDirectory + "/teams/team" + originalTeamNumber + "score.html"; result = "<a href='" + link + "' title='" + dRow["Member_Names"] + "'>" + (showNumber ? dRow["Team_Number"] + " " : "") + (showName ? dRow["Team_Name"] : "") + "</a>"; } return(result); }
private void getTeamsScoreWise() { string sort = "Rank_After_Round_" + m_scoreRoundNumber + " ASC, Tiebreaker_After_Round_" + m_scoreRoundNumber + " DESC"; DataRow[] dRows = m_computedScoresTable.Select("", sort); int count = 0; foreach (DataRow dRow in dRows) { int team = AccessDatabaseUtilities.getIntValue(dRow, "Team_Number"); if (!LocalUtilities.hasWithdrawn(m_databaseFileName, team, m_drawRoundNumber)) { count++; } } m_teamNumber = new int[count + 1]; m_teamNumber[0] = 0; m_assigned = new bool[count + 1]; count = 1; foreach (DataRow dRow in dRows) { int team = AccessDatabaseUtilities.getIntValue(dRow, "Team_Number"); if (!LocalUtilities.hasWithdrawn(m_databaseFileName, team, m_drawRoundNumber)) { m_teamNumber[count] = team; m_assigned[count] = false; count++; } } }
private void populateKnockoutTables() { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutTeams); int count = 0; foreach (string eventName in m_selectedEventNames) { for (int i = 0; i < m_dataViews[eventName].Count; ++i) { if (m_selectedTeams[m_currentTabNumber][eventName][i]) { DataRow dRow = m_dataViews[eventName][i].Row; int originalTeamNumber = AccessDatabaseUtilities.getIntValue(dRow, "Team_Number"); string teamName = AccessDatabaseUtilities.getStringValue(dRow, "Team_Name"); string memberNames = AccessDatabaseUtilities.getStringValue(dRow, "Member_Names"); int teamNumber = count + 1; DataRow newRow = table.Rows[count]; newRow["Team_Number"] = teamNumber; newRow["Team_Name"] = teamName; newRow["Member_Names"] = memberNames; newRow["Original_Team_Number"] = originalTeamNumber; newRow["Original_Event_Name"] = eventName; count++; } } } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutTeams); }
private void knockoutScoresDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = sender as DataGridView; string columnName = dgv.Columns[e.ColumnIndex].Name; int roundNumber = knockoutRoundsCombobox.SelectedIndex + 1; DataTable sessionsTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); DataRow dRow = sessionsTable.Rows.Find(roundNumber); int numberOfSessions = (int)dRow["Number_Of_Sessions"]; if (columnName.Contains("Session") || columnName == "Carryover") { double total = 0; Object value = dgv.Rows[e.RowIndex].Cells["Carryover"].Value; total += (value == DBNull.Value) ? 0 : (double)value; for (int i = 1; i <= numberOfSessions; ++i) { value = dgv.Rows[e.RowIndex].Cells["Session_" + i + "_Score"].Value; total += (value == DBNull.Value) ? 0 : (double)value; } dgv.Rows[e.RowIndex].Cells["Total"].Value = total; } else if (columnName == "Team_Number") { dgv.Rows[e.RowIndex].Cells["Team_Name"].Value = LocalUtilities.getTeamName(m_databaseFileName, Constants.TableName.KnockoutTeams, (int)dgv.Rows[e.RowIndex].Cells["Team_Number"].Value); } }
public String _commonPageHeader(DataRow dRow) { DateTime indianTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, Utilities.INDIAN_ZONE); String result = "Page Updated on " + indianTime.ToString() + " IST<br/>"; result += "<a href='" + m_prefix + "leaderboard/index.html'>Round Robin Leaderboard</a>"; result += " | <a href='" + m_prefix + "names/index.html'>Team Compositions</a><br/>"; result += "Team Scores : "; DataTable table = getTable(Constants.TableName.EventNames); foreach (DataRow dTeamRow in table.Select("", "Team_Number ASC")) { int i = AccessDatabaseUtilities.getIntValue(dTeamRow, "Team_Number"); //for (int i = 1; i <= m_numberOfTeams; ++i) //{ result += (i == 1 ? "" : " | ") + "<a href='" + m_prefix + "teams" + "/team" + i + "score.html' title = '" + getTeamMemberNames(i) + "'>" + i + "</a>"; } result += "<br/>"; result += "Round Scores : "; for (int i = 1; i <= m_numberOfRounds; ++i) { result += (i == 1 ? "" : " | ") + "<a href='" + m_prefix + "rounds" + "/round" + i + "score.html'>" + i + "</a>"; } return(result); }
private void loadTeams(string eventName) { DataTable table = AccessDatabaseUtilities.loadDatabaseToTable(Constants.getEventScoresFileName(eventName), Constants.TableName.EventNames); m_dataViews[eventName] = new DataView(table); m_dataViews[eventName].Sort = "Rank ASC, Tiebreaker_Score ASC"; }
public void updateSessions() { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); foreach (DataRow dRow in table.Rows) { List <string> removeColumns = null; int roundNumber = (int)dRow["Round_Number"]; int numberOfSessions = (int)dRow["Number_Of_Sessions"]; if (numberOfSessions > m_oldNumberOfSessions[roundNumber]) { List <DatabaseField> fields = new List <DatabaseField>(); for (int i = m_oldNumberOfSessions[roundNumber] + 1; i <= numberOfSessions; ++i) { fields.Add(new DatabaseField("Session_" + i + "_Score", "NUMBER")); } AccessDatabaseUtilities.addColumn(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber, fields); } else if (m_oldNumberOfSessions[roundNumber] > numberOfSessions) { removeColumns = new List <string>(); List <DatabaseField> fields = new List <DatabaseField>(); for (int i = numberOfSessions + 1; i <= m_oldNumberOfSessions[roundNumber]; ++i) { fields.Add(new DatabaseField("Session_" + i + "_Score", "NUMBER")); removeColumns.Add("Session_" + i + "_Score"); } AccessDatabaseUtilities.dropColumn(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber, fields); } m_oldNumberOfSessions[roundNumber] = numberOfSessions; AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber, "", removeColumns); } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutSessions); }
public WithdrawTeams(string databaseFileName) { m_databaseFileName = databaseFileName; m_tableName = Constants.TableName.EventNames; InitializeComponent(); withdrawTeamsDataGridView.DataSource = AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, m_tableName); }
private string getTeamMemberNames(int teamNumber) { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.EventNames); DataRow dRow = table.Rows.Find(teamNumber); return("" + dRow["Member_Names"]); }
private static void populateNamesTable() { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.EventNames); DataTable computedScoresTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.EventComputedScores); DataTable existingTable = m_dataSet.Tables["Names"]; foreach (DataRow existingRow in existingTable.Rows) { DataRow dRow = table.NewRow(); dRow["Team_Number"] = AccessDatabaseUtilities.getIntValue(existingRow, "Number"); dRow["Team_Name"] = getStringValue(existingRow, "Team Name"); dRow["Member_Names"] = getStringValue(existingRow, "Member 1 Name") + ", " + getStringValue(existingRow, "Member 2 Name") + ", " + getStringValue(existingRow, "Member 3 Name") + ", " + getStringValue(existingRow, "Member 4 Name") + ", " + getStringValue(existingRow, "Member 5 Name") + ", " + getStringValue(existingRow, "Member 6 Name"); table.Rows.Add(dRow); dRow = computedScoresTable.NewRow(); dRow["Team_Number"] = AccessDatabaseUtilities.getIntValue(existingRow, "Number"); computedScoresTable.Rows.Add(dRow); } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.EventNames); AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.EventComputedScores); }
private static void createSwissLeagueDatabases(string eventName, int numberOfTeams, int numberOfRounds) { AccessDatabaseUtilities.createDatabase(m_databaseFileName); createSwissLeagueTeamsTable(); createSwissLeagueScoresTable(); createSwissLeagueComputedScoresTable(numberOfRounds); }
private void writeKnockoutPage(string fileName) { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); DataRow[] dRows = table.Select("", "Round_Number ASC"); if (dRows.Length < 1) { return; } StreamWriter sw = new StreamWriter(fileName); sw.WriteLine("<html><head></head><body>"); string title = "<h2>Knockout Scores</h2>"; string headerTemplate = title + "<br/>[_commonPageHeader]"; sw.WriteLine(applyTemplate_(headerTemplate, null)); bool scoresAvailable = false; foreach (DataRow dRow in dRows) { string html = getKnockoutRoundTable(dRow); if (!string.IsNullOrWhiteSpace(html)) { scoresAvailable = true; sw.Write(html + Environment.NewLine); sw.Write("<hr/>" + Environment.NewLine); } } if (!scoresAvailable) { sw.WriteLine("<h1>No Scores Available Yet!</h1>"); } sw.WriteLine("</body></html>"); sw.Close(); }
private void checkRoundCompletion(int roundNumber, int numberOfSessions) { DataTable sessionsTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); List <string> skipColumnNames = new List <string>(); skipColumnNames.Add("Carryover"); DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); if (Utilities.HasNull(table, skipColumnNames)) { return; } roundNumber--; if (roundNumber < 1) { return; } table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); DataRow dRow = sessionsTable.Rows.Find(roundNumber); numberOfSessions = (int)dRow["Number_Of_Sessions"]; for (int i = 1; i <= numberOfSessions; ++i) { if (!Utilities.AllNull(table, "Session_" + i + "_Score")) { return; } } setUpMatches(roundNumber); }
private void setUpMatches(int roundNumber) { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); // Overwrite existing team numbers to avoid unique value errors int count = -1; foreach (DataRow dRow in table.Rows) { dRow["Team_Number"] = count--; } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); DataTable previousTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + (roundNumber + 1)); int matchNumber = 1; foreach (DataRow dRow in table.Rows) { DataRow[] dRows = previousTable.Select("Match_Number = " + matchNumber); DataRow winnerRow = findWinner(dRows); dRow["Team_Number"] = AccessDatabaseUtilities.getIntValue(winnerRow, "Team_Number"); dRow["Team_Name"] = AccessDatabaseUtilities.getStringValue(winnerRow, "Team_Name"); matchNumber++; } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); knockoutRoundsCombobox.SelectedIndex = roundNumber - 1; }
private static double getDoubleValue(DataRow dRow, string columnName) { string value = AccessDatabaseUtilities.getStringValue(dRow, columnName); string newValue = value.Replace("\"", ""); return(string.IsNullOrWhiteSpace(newValue) ? 0 : double.Parse(newValue)); }
public static bool hasWithdrawn(string databaseFileName, int teamNumber, int roundNumber) { DataTable table = AccessDatabaseUtilities.getDataTable(databaseFileName, Constants.TableName.EventNames); DataRow[] foundRows = table.Select("Team_Number=" + teamNumber + " AND NOT Withdraw_Round is null AND WithDraw_Round <= " + roundNumber, ""); return(foundRows.Length > 0); }
public static int teamsLeft(string databaseFileName, int roundNumber) { DataTable table = AccessDatabaseUtilities.getDataTable(databaseFileName, Constants.TableName.EventNames); DataRow[] rows = table.Select("Withdraw_Round is null OR WithDraw_Round > " + roundNumber); return(rows.Length); }
public static string getTeamName(string databaseFileName, string tableName, int teamNumber) { DataTable table = AccessDatabaseUtilities.getDataTable(databaseFileName, tableName); DataRow[] dRows = table.Select("Team_Number = " + teamNumber); return((dRows.Length > 0) ? (string)dRows[0]["Team_Name"] : "Unknown"); }
private void assignLeftTeams() { if (!createMatch(m_drawRoundNumber, 1, m_numberOfMatchesLeft, m_assigned, m_teamNumber)) { MessageBox.Show("Unable to generate random draw for round : " + m_drawRoundNumber + Environment.NewLine + "Please generate by hand and enter directly.", "Random Draw Error", MessageBoxButtons.OK, MessageBoxIcon.Error); AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, Constants.TableName.EventScores); } }
private void reloadNumberOfSessionsButton_Click(object sender, EventArgs e) { if (Utilities.confirmReload(Constants.TableName.KnockoutSessions)) { AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, Constants.TableName.KnockoutSessions); Utilities.showBalloonNotification("Reload Completed", Constants.TableName.KnockoutSessions + " reloaded from database successfully"); } }
private void reloadKnockoutScoresButton_Click(object sender, EventArgs e) { if (Utilities.confirmReload("Knockout Scores")) { int roundNumber = knockoutRoundsCombobox.SelectedIndex + 1; AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); } }
private void reloadWithdrawTeamsButton_Click(object sender, EventArgs e) { if (Utilities.confirmReload(Constants.TableName.EventNames)) { AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, m_tableName); Utilities.showBalloonNotification("Reload Completed", m_tableName + " reloaded from database successfully"); } }
private void knockoutRoundsCombobox_SelectedIndexChanged(object sender, EventArgs e) { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + (knockoutRoundsCombobox.SelectedIndex + 1)); DataView dView = new DataView(table); dView.RowFilter = ""; dView.Sort = "Match_Number ASC"; knockoutScoresDataGridView.DataSource = dView; }
private void reloadScoresButton_Click(object sender, EventArgs e) { if (Utilities.confirmReload(Constants.KnockoutScoresFileName)) { int roundNumber = knockoutRoundsCombobox.SelectedIndex + 1; AccessDatabaseUtilities.loadDatabaseToTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); Utilities.showBalloonNotification("Reloaded " + Constants.KnockoutScoresFileName + " from database successfully", "Reload Done"); } }
private string createMatchRows(DataRow[] dRows, int numberOfSessions, int matchNumber, bool addExtraRowInFront = false) { string html = ""; if (addExtraRowInFront) { html += addEmptyRows(numberOfSessions); } for (int j = 0; j < 2; ++j) { html += ("<tr>"); int otherRow = 1 - j; int teamNumber = (int)dRows[j]["Team_Number"]; double total = (double)dRows[j]["Total"]; double otherTotal = (double)dRows[otherRow]["Total"]; if (j == 0) { html += Utilities.makeTableCell_("" + matchNumber, 1, false, 2); } int rowIndex = (total > otherTotal) ? 0 : 1; if (total > otherTotal) { html += Utilities.makeTableCell_("<b>" + getTeamLink(teamNumber, true, true) + "</b>", rowIndex); } else { html += Utilities.makeTableCell_(getTeamLink(teamNumber, true, true), rowIndex); } html += Utilities.makeTableCell_("" + AccessDatabaseUtilities.getDoubleValue(dRows[j], "Carryover"), rowIndex); for (int k = 1; k <= numberOfSessions; ++k) { string columnName = "Session_" + k + "_Score"; double sessionScore = AccessDatabaseUtilities.getDoubleValue(dRows[j], columnName); double otherSessionScore = AccessDatabaseUtilities.getDoubleValue(dRows[otherRow], columnName); if (sessionScore > otherSessionScore) { html += Utilities.makeTableCell_("<b>" + sessionScore + "</b>", rowIndex); } else { html += Utilities.makeTableCell_("" + sessionScore, rowIndex); } } if (total > otherTotal) { html += Utilities.makeTableCell_("<b>" + total + "</b>", rowIndex); } else { html += Utilities.makeTableCell_("" + total, rowIndex); } html += ("</tr>" + Environment.NewLine); } return(html); }
private void initialize() { m_tourneyInfoFileName = Constants.getCurrentTourneyInformationFileName(); m_tourneyEventsFileName = Constants.getCurrentTourneyEventsFileName(); m_tourneyName = NiniUtilities.getStringValue(m_tourneyInfoFileName, Constants.TourneyNameFieldName); this.Text = "Tourney Name : " + m_tourneyName; m_tourneyInfo = new TourneyInfo(Constants.getCurrentTourneyInformationFileName(), false); this.tourneyInfoPropertyGrid.SelectedObject = m_tourneyInfo; m_eventsTable = AccessDatabaseUtilities.loadDatabaseToTable(m_tourneyEventsFileName, Constants.TableName.TourneyEvents); loadEvents(); }
private void saveScoresButton_Click(object sender, EventArgs e) { int roundNumber = knockoutRoundsCombobox.SelectedIndex + 1; AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); Utilities.showBalloonNotification("Saved " + Constants.KnockoutScoresFileName + " to database successfully", "Save Done"); KnockoutTeamsDatabaseToWebpages ktdw = new KnockoutTeamsDatabaseToWebpages(m_eventName, m_databaseFileName, Constants.getEventWebpagesFolder(m_eventName)); ktdw.createWebpages_(); showUrl(); }
private void saveKnockoutScoresButton_Click(object sender, EventArgs e) { int roundNumber = knockoutRoundsCombobox.SelectedIndex + 1; AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); DataTable sessionsTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); DataRow dRow = sessionsTable.Rows.Find(roundNumber); int numberOfSessions = (int)dRow["Number_Of_Sessions"]; checkRoundCompletion(roundNumber, numberOfSessions); }
private void populateSwissLeagueTables(int numberOfRounds, int numberOfTeams) { DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.EventNames); int count = 1; DataTable computedScoresTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.EventComputedScores); foreach (string eventName in m_selectedEventNames) { for (int i = 0; i < m_dataViews[eventName].Count; ++i) { if (m_selectedTeams[m_currentTabNumber][eventName][i]) { DataRow dRow = m_dataViews[eventName][i].Row; int originalTeamNumber = AccessDatabaseUtilities.getIntValue(dRow, "Team_Number"); string teamName = AccessDatabaseUtilities.getStringValue(dRow, "Team_Name"); string memberNames = AccessDatabaseUtilities.getStringValue(dRow, "Member_Names"); double totalScore = AccessDatabaseUtilities.getDoubleValue(dRow, "Total_Score"); int teamNumber = count; DataRow newRow = table.NewRow(); newRow["Team_Number"] = keepOriginalTeamNumbersCheckbox.Checked?originalTeamNumber:teamNumber; newRow["Team_Name"] = teamName; newRow["Member_Names"] = memberNames; newRow["Carryover"] = carryoverTotalCheckbox.Checked ? totalScore : 0; newRow["Original_Team_Number"] = originalTeamNumber; newRow["Original_Event_Name"] = eventName; newRow["Total_Score"] = 0; newRow["Tiebreaker_Score"] = 0; newRow["Rank"] = 1; table.Rows.Add(newRow); newRow = computedScoresTable.NewRow(); newRow["Team_Number"] = keepOriginalTeamNumbersCheckbox.Checked ? originalTeamNumber : teamNumber; computedScoresTable.Rows.Add(newRow); count++; } } DataTable scoresTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.EventScores); int numberOfMatches = (numberOfTeams / 2) + numberOfTeams % 2; for (int i = 1; i <= numberOfRounds; ++i) { for (int j = 1; j <= numberOfMatches; ++j) { DataRow dRow = scoresTable.NewRow(); dRow["Table_Number"] = j; dRow["Round_Number"] = i; scoresTable.Rows.Add(dRow); } } } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.EventNames); AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.EventScores); AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.EventComputedScores); }
private void selectCurrentKnockoutRound() { for (int i = m_knockoutSessions.NumberOfRounds; i >= 1; --i) { List <string> skipColumnNames = new List <string>(); skipColumnNames.Add("Carryover"); if (Utilities.HasNull(AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + i), skipColumnNames)) { knockoutRoundsCombobox.SelectedIndex = i - 1; return; } } knockoutRoundsCombobox.SelectedIndex = 0; }