From b2b7839948c2bd5f3b3757d701d2c7325df72230 Mon Sep 17 00:00:00 2001 From: Greg Edwards Date: Sun, 27 Mar 2022 02:28:27 -0400 Subject: [PATCH] =?UTF-8?q?Added=20admin=20link=20on=20available=20Pok?= =?UTF-8?q?=C3=A9mon=20listing.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/Data/DataMysql.cs | 137 +++++++++++++--------------- library/Structures/GtsRecordBase.cs | 2 + web/gts/Default.aspx | 1 + web/gts/Default.aspx.cs | 16 ++++ web/gts/Default.aspx.designer.cs | 38 ++++---- web/gts/Pokemon.aspx | 3 + 6 files changed, 105 insertions(+), 92 deletions(-) diff --git a/library/Data/DataMysql.cs b/library/Data/DataMysql.cs index 8891ca89..e59463f8 100644 --- a/library/Data/DataMysql.cs +++ b/library/Data/DataMysql.cs @@ -407,7 +407,7 @@ namespace PkmnFoundations.Data "RequestedSpecies, RequestedGender, RequestedMinLevel, RequestedMaxLevel, " + "Unknown1, TrainerGender, Unknown2, TimeDeposited, TimeExchanged, pid, " + "TrainerName, TrainerOT, TrainerCountry, TrainerRegion, TrainerClass, " + - "IsExchanged, TrainerVersion, TrainerLanguage FROM GtsPokemon4 " + where + + "IsExchanged, TrainerVersion, TrainerLanguage, id FROM GtsPokemon4 " + where + " ORDER BY TimeDeposited DESC" + limit, _params.ToArray())) { @@ -416,7 +416,11 @@ namespace PkmnFoundations.Data else records = new List(); while (reader.Read()) - records.Add(Record4FromReader(pokedex, reader)); + { + var record = Record4FromReader(pokedex, reader); + record.TradeId = DatabaseExtender.Cast(reader["id"]); + records.Add(record); + } reader.Close(); return records.ToArray(); @@ -432,40 +436,28 @@ namespace PkmnFoundations.Data { GtsRecord4 result = new GtsRecord4(pokedex); - byte[] data = new byte[236]; - reader.GetBytes(0, 0, data, 0, 236); - result.Data = data; - data = null; - - // xxx: Shouldn't use column ordinals - result.Species = reader.GetUInt16(1); - result.Gender = (Genders)reader.GetByte(2); - result.Level = reader.GetByte(3); - result.RequestedSpecies = reader.GetUInt16(4); - result.RequestedGender = (Genders)reader.GetByte(5); - result.RequestedMinLevel = reader.GetByte(6); - result.RequestedMaxLevel = reader.GetByte(7); - result.Unknown1 = reader.GetByte(8); - result.TrainerGender = (TrainerGenders)reader.GetByte(9); - result.Unknown2 = reader.GetByte(10); - if (reader.IsDBNull(11)) result.TimeDeposited = null; - else result.TimeDeposited = reader.GetDateTime(11); - if (reader.IsDBNull(12)) result.TimeExchanged = null; - else result.TimeExchanged = reader.GetDateTime(12); - result.PID = reader.GetInt32(13); - - data = new byte[16]; - reader.GetBytes(14, 0, data, 0, 16); - result.TrainerNameEncoded = new EncodedString4(data); - data = null; - - result.TrainerOT = reader.GetUInt16(15); - result.TrainerCountry = reader.GetByte(16); - result.TrainerRegion = reader.GetByte(17); - result.TrainerClass = reader.GetByte(18); - result.IsExchanged = reader.GetByte(19); - result.TrainerVersion = (Versions)reader.GetByte(20); - result.TrainerLanguage = (Languages)reader.GetByte(21); + result.Data = DatabaseExtender.Cast(reader["Data"]); + result.Species = DatabaseExtender.Cast(reader["Species"]); + result.Gender = (Genders)DatabaseExtender.Cast(reader["Gender"]); + result.Level = DatabaseExtender.Cast(reader["Level"]); + result.RequestedSpecies = DatabaseExtender.Cast(reader["RequestedSpecies"]); + result.RequestedGender = (Genders)DatabaseExtender.Cast(reader["RequestedGender"]); + result.RequestedMinLevel = DatabaseExtender.Cast(reader["RequestedMinLevel"]); + result.RequestedMaxLevel = DatabaseExtender.Cast(reader["RequestedMaxLevel"]); + result.Unknown1 = DatabaseExtender.Cast(reader["Unknown1"]); + result.TrainerGender = (TrainerGenders)DatabaseExtender.Cast(reader["TrainerGender"]); + result.Unknown2 = DatabaseExtender.Cast(reader["Unknown2"]); + result.TimeDeposited = DatabaseExtender.Cast(reader["TimeDeposited"]); + result.TimeExchanged = DatabaseExtender.Cast(reader["TimeExchanged"]); + result.PID = DatabaseExtender.Cast(reader["pid"]); + result.TrainerNameEncoded = new EncodedString4(DatabaseExtender.Cast(reader["TrainerName"])); + result.TrainerOT = DatabaseExtender.Cast(reader["TrainerOT"]); + result.TrainerCountry = DatabaseExtender.Cast(reader["TrainerCountry"]); + result.TrainerRegion = DatabaseExtender.Cast(reader["TrainerRegion"]); + result.TrainerClass = DatabaseExtender.Cast(reader["TrainerClass"]); + result.IsExchanged = DatabaseExtender.Cast(reader["IsExchanged"]); + result.TrainerVersion = (Versions)DatabaseExtender.Cast(reader["TrainerVersion"]); + result.TrainerLanguage = (Languages)DatabaseExtender.Cast(reader["TrainerLanguage"]); return result; } @@ -1571,7 +1563,7 @@ namespace PkmnFoundations.Data "RequestedSpecies, RequestedGender, RequestedMinLevel, RequestedMaxLevel, " + "Unknown1, TrainerGender, Unknown2, TimeDeposited, TimeExchanged, pid, " + "TrainerOT, TrainerName, TrainerCountry, TrainerRegion, TrainerClass, " + - "IsExchanged, TrainerVersion, TrainerLanguage, TrainerBadges, TrainerUnityTower " + + "IsExchanged, TrainerVersion, TrainerLanguage, TrainerBadges, TrainerUnityTower, id " + "FROM GtsPokemon5 " + where + " ORDER BY TimeDeposited DESC" + limit, _params.ToArray())) @@ -1581,7 +1573,11 @@ namespace PkmnFoundations.Data else records = new List(); while (reader.Read()) - records.Add(Record5FromReader(pokedex, reader)); + { + var record = Record5FromReader(pokedex, reader); + record.TradeId = DatabaseExtender.Cast(reader["id"]); + records.Add(record); + } reader.Close(); return records.ToArray(); @@ -1590,47 +1586,40 @@ namespace PkmnFoundations.Data private static GtsRecord5 Record5FromReader(Pokedex.Pokedex pokedex, MySqlDataReader reader) { - // xxx: Don't use ordinals here GtsRecord5 result = new GtsRecord5(pokedex); // xxx: Data and Unknown0 should share a database field. // (This requires migrating a lot of existing data) - byte[] data = new byte[236]; - reader.GetBytes(0, 0, data, 0, 220); - reader.GetBytes(1, 0, data, 220, 16); - result.Data = data; - data = null; + byte[] data = DatabaseExtender.Cast(reader["Data"]); + byte[] unknown0 = DatabaseExtender.Cast(reader["Unknown0"]); + byte[] combined = new byte[236]; + Array.Copy(data, 0, combined, 0, 220); + Array.Copy(unknown0, 0, combined, 220, 16); + result.Data = combined; - result.Species = reader.GetUInt16(2); - result.Gender = (Genders)reader.GetByte(3); - result.Level = reader.GetByte(4); - result.RequestedSpecies = reader.GetUInt16(5); - result.RequestedGender = (Genders)reader.GetByte(6); - result.RequestedMinLevel = reader.GetByte(7); - result.RequestedMaxLevel = reader.GetByte(8); - result.Unknown1 = reader.GetByte(9); - result.TrainerGender = (TrainerGenders)reader.GetByte(10); - result.Unknown2 = reader.GetByte(11); - if (reader.IsDBNull(12)) result.TimeDeposited = null; - else result.TimeDeposited = reader.GetDateTime(12); - if (reader.IsDBNull(13)) result.TimeExchanged = null; - else result.TimeExchanged = reader.GetDateTime(13); - result.PID = reader.GetInt32(14); - result.TrainerOT = reader.GetUInt32(15); - - data = new byte[16]; - reader.GetBytes(16, 0, data, 0, 16); - result.TrainerNameEncoded = new EncodedString5(data); - data = null; - - result.TrainerCountry = reader.GetByte(17); - result.TrainerRegion = reader.GetByte(18); - result.TrainerClass = reader.GetByte(19); - result.IsExchanged = reader.GetByte(20); - result.TrainerVersion = (Versions)reader.GetByte(21); - result.TrainerLanguage = (Languages)reader.GetByte(22); - result.TrainerBadges = reader.GetByte(23); - result.TrainerUnityTower = reader.GetByte(24); + result.Species = DatabaseExtender.Cast(reader["Species"]); + result.Gender = (Genders)DatabaseExtender.Cast(reader["Gender"]); + result.Level = DatabaseExtender.Cast(reader["Level"]); + result.RequestedSpecies = DatabaseExtender.Cast(reader["RequestedSpecies"]); + result.RequestedGender = (Genders)DatabaseExtender.Cast(reader["RequestedGender"]); + result.RequestedMinLevel = DatabaseExtender.Cast(reader["RequestedMinLevel"]); + result.RequestedMaxLevel = DatabaseExtender.Cast(reader["RequestedMaxLevel"]); + result.Unknown1 = DatabaseExtender.Cast(reader["Unknown1"]); + result.TrainerGender = (TrainerGenders)DatabaseExtender.Cast(reader["TrainerGender"]); + result.Unknown2 = DatabaseExtender.Cast(reader["Unknown2"]); + result.TimeDeposited = DatabaseExtender.Cast(reader["TimeDeposited"]); + result.TimeExchanged = DatabaseExtender.Cast(reader["TimeExchanged"]); + result.PID = DatabaseExtender.Cast(reader["pid"]); + result.TrainerOT = DatabaseExtender.Cast(reader["TrainerOT"]); + result.TrainerNameEncoded = new EncodedString5(DatabaseExtender.Cast(reader["TrainerName"])); + result.TrainerCountry = DatabaseExtender.Cast(reader["TrainerCountry"]); + result.TrainerRegion = DatabaseExtender.Cast(reader["TrainerRegion"]); + result.TrainerClass = DatabaseExtender.Cast(reader["TrainerClass"]); + result.IsExchanged = DatabaseExtender.Cast(reader["IsExchanged"]); + result.TrainerVersion = (Versions)DatabaseExtender.Cast(reader["TrainerVersion"]); + result.TrainerLanguage = (Languages)DatabaseExtender.Cast(reader["TrainerLanguage"]); + result.TrainerBadges = DatabaseExtender.Cast(reader["TrainerBadges"]); + result.TrainerUnityTower = DatabaseExtender.Cast(reader["TrainerUnityTower"]); return result; } diff --git a/library/Structures/GtsRecordBase.cs b/library/Structures/GtsRecordBase.cs index 080e8260..c3255b14 100644 --- a/library/Structures/GtsRecordBase.cs +++ b/library/Structures/GtsRecordBase.cs @@ -81,6 +81,8 @@ namespace PkmnFoundations.Structures public Versions TrainerVersion; public Languages TrainerLanguage; + public ulong TradeId; + public virtual bool Validate() { // note that IsExchanged only becomes true after FlagTraded is diff --git a/web/gts/Default.aspx b/web/gts/Default.aspx index 03f631eb..4c4698a9 100644 --- a/web/gts/Default.aspx +++ b/web/gts/Default.aspx @@ -135,6 +135,7 @@ <%# CreateGender(Container.DataItem) %> <%# CreatePokerus(Container.DataItem) %> + <%# CreateAdminLinks(Container.DataItem) %> diff --git a/web/gts/Default.aspx.cs b/web/gts/Default.aspx.cs index 6a479480..4de80ab4 100644 --- a/web/gts/Default.aspx.cs +++ b/web/gts/Default.aspx.cs @@ -255,5 +255,21 @@ namespace PkmnFoundations.GTS if (record.TimeDeposited == null) return ""; return Common.HtmlEncode(((DateTime)record.TimeDeposited).ToString("f")); } + + protected string CreateAdminLinks(object DataItem) + { +#if DEBUG + GtsRecordBase record = (GtsRecordBase)DataItem; + StringBuilder result = new StringBuilder(); + + result.Append("
  • Details
  • "); + + return result.ToString(); +#else + return ""; +#endif + } } } \ No newline at end of file diff --git a/web/gts/Default.aspx.designer.cs b/web/gts/Default.aspx.designer.cs index fc9aa43d..d7199fed 100644 --- a/web/gts/Default.aspx.designer.cs +++ b/web/gts/Default.aspx.designer.cs @@ -7,11 +7,13 @@ // //------------------------------------------------------------------------------ -namespace PkmnFoundations.GTS { - - - public partial class AllPokemon { - +namespace PkmnFoundations.GTS +{ + + + public partial class AllPokemon + { + /// /// HeaderColour1 control. /// @@ -20,7 +22,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::PkmnFoundations.Web.HeaderColour HeaderColour1; - + /// /// theForm control. /// @@ -29,7 +31,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.HtmlControls.HtmlForm theForm; - + /// /// ppSpecies control. /// @@ -38,7 +40,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::PkmnFoundations.Web.controls.PokemonPicker ppSpecies; - + /// /// rbGen4 control. /// @@ -47,7 +49,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.RadioButton rbGen4; - + /// /// lblGen4 control. /// @@ -56,7 +58,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Label lblGen4; - + /// /// rbGen5 control. /// @@ -65,7 +67,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.RadioButton rbGen5; - + /// /// lblGen5 control. /// @@ -74,7 +76,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Label lblGen5; - + /// /// btnSearch control. /// @@ -83,7 +85,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnSearch; - + /// /// txtLevelMin control. /// @@ -92,7 +94,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtLevelMin; - + /// /// txtLevelMax control. /// @@ -101,7 +103,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtLevelMax; - + /// /// chkMale control. /// @@ -110,7 +112,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkMale; - + /// /// chkFemale control. /// @@ -119,7 +121,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkFemale; - + /// /// phNone control. /// @@ -128,7 +130,7 @@ namespace PkmnFoundations.GTS { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.PlaceHolder phNone; - + /// /// rptPokemon control. /// diff --git a/web/gts/Pokemon.aspx b/web/gts/Pokemon.aspx index 7689645a..ed00315f 100644 --- a/web/gts/Pokemon.aspx +++ b/web/gts/Pokemon.aspx @@ -185,6 +185,9 @@
    +
    +
    +