From fe71701968627f6ee3e1066dbb1ee6d2ab08afcc Mon Sep 17 00:00:00 2001 From: emkael Date: Wed, 24 Oct 2018 14:55:33 +0200 Subject: Grouping tables in sections extended to support teams IMP results --- Aktywator/Bws.cs | 9 +++++++-- Aktywator/Setting.cs | 41 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 43 insertions(+), 7 deletions(-) (limited to 'Aktywator') diff --git a/Aktywator/Bws.cs b/Aktywator/Bws.cs index 4c4586e..e89996f 100644 --- a/Aktywator/Bws.cs +++ b/Aktywator/Bws.cs @@ -126,7 +126,7 @@ namespace Aktywator MessageBox.Show(MainForm.differentRecordsInSections, "Ustawienia grupowania zapisów w sektorach", MessageBoxButtons.OK, MessageBoxIcon.Warning); main.xGroupSections.Checked = false; } - Setting.saveSectionGroups(this.sql, main.xGroupSections.Checked); + Setting.saveSectionGroups(this.sql, main.xGroupSections.Checked, (this.getMySQLDatabaseForSection() != null) ? Convert.ToInt32(main.numTeamsTableOffset.Value) : 0); } main.checkRecordsForSectionGroups(); } @@ -583,7 +583,7 @@ namespace Aktywator Setting.save("BM2NameSource", "2", this, errors, section); Setting.save("BM2PINcode", "'" + main.xPINcode.Text + "'", this, errors, section); Setting.save("BM2ResultsOverview", main.xResultsOverview.SelectedIndex.ToString(), this, errors, section); - Setting.saveSectionGroups(this.sql, main.xGroupSections.Checked); + Setting.saveSectionGroups(this.sql, main.xGroupSections.Checked, (this.getMySQLDatabaseForSection() != null) ? Convert.ToInt32(main.numTeamsTableOffset.Value) : 0); this.loadSettings(); } @@ -613,6 +613,11 @@ namespace Aktywator } private int getBWSNumber(OleDbDataReader reader, int index) + { + return Bws.bwsNumber(reader, index); + } + + public static int bwsNumber(OleDbDataReader reader, int index) { switch (Type.GetTypeCode(reader.GetFieldType(index))) { diff --git a/Aktywator/Setting.cs b/Aktywator/Setting.cs index bde6fd1..802e92a 100644 --- a/Aktywator/Setting.cs +++ b/Aktywator/Setting.cs @@ -171,12 +171,43 @@ namespace Aktywator } } - public static void saveSectionGroups(Sql sql, bool value) + public static void saveSectionGroups(Sql sql, bool value, int teamTableOffset = 0) { - StringBuilder sb = new StringBuilder("UPDATE Tables SET `Group` = "); - sb.Append(value ? "1" : "`Section`"); - sb.Append(";"); - sql.query(sb.ToString()); + if (teamTableOffset == 0) + { + StringBuilder sb = new StringBuilder("UPDATE Tables SET `Group` = "); + sb.Append(value ? "1" : "`Section`"); + sb.Append(";"); + sql.query(sb.ToString()); + } + else + { + int group = 1; + StringBuilder tablesQuery = new StringBuilder("SELECT `Section`, (`Table` MOD "); + tablesQuery.Append(teamTableOffset); + tablesQuery.Append(") FROM `Tables` GROUP BY `Section`, (`Table` MOD "); + tablesQuery.Append(teamTableOffset); + tablesQuery.Append(");"); + OleDbDataReader tables = sql.select(tablesQuery.ToString()); + List queries = new List(); + while (tables.Read()) + { + StringBuilder sb = new StringBuilder("UPDATE `Tables` SET `Group` = "); + sb.Append(group++); + sb.Append(" WHERE `Section` = "); + sb.Append(Bws.bwsNumber(tables, 0)); + sb.Append(" AND (`Table` MOD "); + sb.Append(teamTableOffset); + sb.Append(") = "); + sb.Append(Bws.bwsNumber(tables, 1)); + sb.Append(";"); + queries.Add(sb.ToString()); + } + foreach (string query in queries) + { + sql.query(query); + } + } } } } -- cgit v1.2.3