From 6126676fa127f6d1f77e642c60948052ac71509b Mon Sep 17 00:00:00 2001 From: Kayori Date: Thu, 31 Jul 2025 00:08:03 +0200 Subject: [PATCH] Add stuff for the test menu. --- .../ChargeMachinePlugin.cs | 12 +++++-- ...geHandler.cs => CheckinEaChargeHandler.cs} | 2 +- .../Handlers/LA9/GetLastLogEaChargeHandler.cs | 29 +++++++++++++++++ .../Handlers/LA9/OpCheckinEaChargeHandler.cs | 32 +++++++++++++++++++ .../Handlers/LA9/OpCheckoutEaChargeHandler.cs | 26 +++++++++++++++ 5 files changed, 98 insertions(+), 3 deletions(-) rename MedusaPluginChargeMachine/Handlers/LA9/{CheckInEaChargeHandler.cs => CheckinEaChargeHandler.cs} (96%) create mode 100644 MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs create mode 100644 MedusaPluginChargeMachine/Handlers/LA9/OpCheckinEaChargeHandler.cs create mode 100644 MedusaPluginChargeMachine/Handlers/LA9/OpCheckoutEaChargeHandler.cs diff --git a/MedusaPluginChargeMachine/ChargeMachinePlugin.cs b/MedusaPluginChargeMachine/ChargeMachinePlugin.cs index 88e5613..629bd17 100644 --- a/MedusaPluginChargeMachine/ChargeMachinePlugin.cs +++ b/MedusaPluginChargeMachine/ChargeMachinePlugin.cs @@ -7,13 +7,21 @@ namespace MedusaPluginChargeMachine; public class ChargeMachinePlugin: IMedusaPlugin { + public Task DoesProfileExist(string cardId) + { + return Task.FromResult(true); + } + public string Name => "Charge Machine"; public string Version => "1.0.0"; public string Description => "Plugin for the paseli charge machine"; - + public string GameCode => "LA9"; + public int? MinVer => null; + public int? MaxVer => null; + public Task OnBuilderInitialize(WebApplicationBuilder builder) { - builder.Services.AddTransient(); + builder.Services.AddSingleton(); return Task.CompletedTask; } diff --git a/MedusaPluginChargeMachine/Handlers/LA9/CheckInEaChargeHandler.cs b/MedusaPluginChargeMachine/Handlers/LA9/CheckinEaChargeHandler.cs similarity index 96% rename from MedusaPluginChargeMachine/Handlers/LA9/CheckInEaChargeHandler.cs rename to MedusaPluginChargeMachine/Handlers/LA9/CheckinEaChargeHandler.cs index b08e565..a6657cb 100644 --- a/MedusaPluginChargeMachine/Handlers/LA9/CheckInEaChargeHandler.cs +++ b/MedusaPluginChargeMachine/Handlers/LA9/CheckinEaChargeHandler.cs @@ -5,7 +5,7 @@ using MedusaPluginChargeMachine.Services; namespace MedusaPluginChargeMachine.Handlers.LA9 { - public class CheckInEaChargeHandler(ISessionService sessionService, ICardService cardService, XDocument body): Handler + public class CheckinEaChargeHandler(ISessionService sessionService, ICardService cardService, XDocument body): Handler { private readonly XDocument _body = body; private readonly ISessionService _sessionService = sessionService; diff --git a/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs b/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs new file mode 100644 index 0000000..7e7c437 --- /dev/null +++ b/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs @@ -0,0 +1,29 @@ +using System.Xml.Linq; +using Abstractions.Handlers; + +namespace MedusaPluginChargeMachine.Handlers.LA9; + +public class GetLastLogEaChargeHandler(): Handler +{ + public override void Configure() + { + Module("eacharge"); + Method("getlastlog"); + } + + public override XDocument Handle(string model) + { + var chargedaily = new XElement("chargedaily", 0, new XAttribute("__type", "s32")); + var header = new XElement("header", chargedaily); + + var getLastLog = new XElement("getlastlog", new XAttribute("status", "0"), header); + + var document = new XDocument( + new XElement("response", + getLastLog + ) + ); + + return document; + } +} \ No newline at end of file diff --git a/MedusaPluginChargeMachine/Handlers/LA9/OpCheckinEaChargeHandler.cs b/MedusaPluginChargeMachine/Handlers/LA9/OpCheckinEaChargeHandler.cs new file mode 100644 index 0000000..cd4d663 --- /dev/null +++ b/MedusaPluginChargeMachine/Handlers/LA9/OpCheckinEaChargeHandler.cs @@ -0,0 +1,32 @@ +using System.Xml.Linq; +using Abstractions.Handlers; +using MedusaPluginChargeMachine.Services; + +namespace MedusaPluginChargeMachine.Handlers.LA9; + +public class OpCheckinEaChargeHandler(ISessionService sessionService, XDocument body): Handler +{ + public override void Configure() + { + Module("eacharge"); + Method("opcheckin"); + } + + public override XDocument Handle(string model) + { + var rootCall = body.Root; + var srcId = rootCall?.Attribute("srcid")?.Value!; + var sessionId = sessionService.AddSession(srcId); + + var sessionIdXElement = new XElement("sessid", sessionId, new XAttribute("__type", "str")); + var opCheckin = new XElement("opcheckin", sessionIdXElement, new XAttribute("status", "0"), new XAttribute("expire", "1200")); + + var document = new XDocument( + new XElement("response", + opCheckin + ) + ); + + return document; + } +} \ No newline at end of file diff --git a/MedusaPluginChargeMachine/Handlers/LA9/OpCheckoutEaChargeHandler.cs b/MedusaPluginChargeMachine/Handlers/LA9/OpCheckoutEaChargeHandler.cs new file mode 100644 index 0000000..95d8a20 --- /dev/null +++ b/MedusaPluginChargeMachine/Handlers/LA9/OpCheckoutEaChargeHandler.cs @@ -0,0 +1,26 @@ +using System.Xml.Linq; +using Abstractions.Handlers; +using MedusaPluginChargeMachine.Services; + +namespace MedusaPluginChargeMachine.Handlers.LA9; + +public class OpCheckoutEaChargeHandler(ISessionService sessionService, XDocument body): Handler +{ + public override void Configure() + { + Module("eacharge"); + Method("opcheckout"); + } + + public override XDocument Handle(string model) + { + var eaCharge = body.Root?.Element("eacharge")!; + var sessionId = eaCharge.Element("sessid")!.Value!; + + sessionService.RemoveSession(sessionId); + + var checkoutCharge = new XElement("eacharge", new XAttribute("status", "0")); + var document = new XDocument(new XElement("response", checkoutCharge)); + return document; + } +} \ No newline at end of file