From 47c2fc8069993cd78edd00b7bc0fa86b07619b0f Mon Sep 17 00:00:00 2001 From: Michael Green <84688932+michael-j-green@users.noreply.github.com> Date: Tue, 2 Jan 2024 22:10:04 +1100 Subject: [PATCH] Fixed ROM count and platform display * Fixed ROM count and platform display --- gaseous-server/Classes/Database.cs | 3 ++- gaseous-server/Classes/Roms.cs | 33 +++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/gaseous-server/Classes/Database.cs b/gaseous-server/Classes/Database.cs index 4445cdd..80c505b 100644 --- a/gaseous-server/Classes/Database.cs +++ b/gaseous-server/Classes/Database.cs @@ -235,7 +235,8 @@ namespace gaseous_server.Classes { case databaseType.MySql: MySQLServerConnector conn = new MySQLServerConnector(ConnectionString); - return (int)conn.ExecNonQuery(Command, Parameters, Timeout); + int retVal = conn.ExecNonQuery(Command, Parameters, Timeout); + return retVal; default: return 0; } diff --git a/gaseous-server/Classes/Roms.cs b/gaseous-server/Classes/Roms.cs index 40e1c4c..4a73b59 100644 --- a/gaseous-server/Classes/Roms.cs +++ b/gaseous-server/Classes/Roms.cs @@ -21,6 +21,8 @@ namespace gaseous_server.Classes Database db = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); string sql = ""; + string sqlCount = ""; + string sqlPlatform = ""; Dictionary dbDict = new Dictionary(); dbDict.Add("id", GameId); @@ -31,21 +33,32 @@ namespace gaseous_server.Classes dbDict.Add("namesearch", '%' + NameSearch + '%'); } + // platform query + sqlPlatform = "SELECT DISTINCT Games_Roms.PlatformId, Platform.`Name` FROM Games_Roms LEFT JOIN Platform ON Games_Roms.PlatformId = Platform.Id WHERE GameId = @id ORDER BY Platform.`Name`;"; + if (PlatformId == -1) { + // data query sql = "SELECT Games_Roms.*, Platform.`Name` AS platformname FROM Games_Roms LEFT JOIN Platform ON Games_Roms.PlatformId = Platform.Id WHERE Games_Roms.GameId = @id" + NameSearchWhere + " ORDER BY Platform.`Name`, Games_Roms.`Name` LIMIT 1000;"; + + // count query + sqlCount = "SELECT COUNT(Games_Roms.Id) AS RomCount FROM Games_Roms WHERE Games_Roms.GameId = @id" + NameSearchWhere + ";"; } else { + // data query sql = "SELECT Games_Roms.*, Platform.`Name` AS platformname FROM Games_Roms LEFT JOIN Platform ON Games_Roms.PlatformId = Platform.Id WHERE Games_Roms.GameId = @id AND Games_Roms.PlatformId = @platformid" + NameSearchWhere + " ORDER BY Platform.`Name`, Games_Roms.`Name` LIMIT 1000;"; + + // count query + sqlCount = "SELECT COUNT(Games_Roms.Id) AS RomCount FROM Games_Roms WHERE Games_Roms.GameId = @id AND Games_Roms.PlatformId = @platformid" + NameSearchWhere + ";"; + dbDict.Add("platformid", PlatformId); } DataTable romDT = db.ExecuteCMD(sql, dbDict); + Dictionary rowCount = db.ExecuteCMDDict(sqlCount, dbDict)[0]; + DataTable platformDT = db.ExecuteCMD(sqlPlatform, dbDict); if (romDT.Rows.Count > 0) { // set count of roms - GameRoms.Count = romDT.Rows.Count; - - // setup platforms list - Dictionary platformDict = new Dictionary(); + GameRoms.Count = int.Parse((string)rowCount["RomCount"]); int pageOffset = pageSize * (pageNumber - 1); for (int i = 0; i < romDT.Rows.Count; i++) @@ -56,18 +69,18 @@ namespace gaseous_server.Classes { GameRoms.GameRomItems.Add(gameRomItem); } - - if (!platformDict.ContainsKey(gameRomItem.PlatformId)) - { - platformDict.Add(gameRomItem.PlatformId, gameRomItem.Platform); - } } // get rom media groups GameRoms.MediaGroups = Classes.RomMediaGroup.GetMediaGroupsFromGameId(GameId); // sort the platforms - GameRoms.Platforms = platformDict.OrderBy(x => x.Value).ToDictionary(x => x.Key, x => x.Value).ToList>(); + GameRoms.Platforms = new List>(); + foreach (DataRow platformRow in platformDT.Rows) + { + KeyValuePair valuePair = new KeyValuePair((long)platformRow["PlatformId"], (string)platformRow["Name"]); + GameRoms.Platforms.Add(valuePair); + } return GameRoms; }