From 5483729d63299c383a7c81ea890a6ffdff39652a Mon Sep 17 00:00:00 2001 From: Kayori Date: Mon, 7 Sep 2026 20:16:54 +0200 Subject: [PATCH] Fully working get last log and get recent log --- .../Handlers/LA9/GetLastLogEaChargeHandler.cs | 47 ++++++++++--------- .../LA9/GetRecentChargeEaChargeHandler.cs | 31 +++++------- .../Models/Request/GetLastLogRequest.cs | 15 ++++++ .../Response/GetLastLogEaChargeResponse.cs | 2 +- .../Response/GetRecentChargeResponse.cs | 2 +- 5 files changed, 54 insertions(+), 43 deletions(-) diff --git a/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs b/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs index 0c736c2..09effc8 100644 --- a/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs +++ b/MedusaPluginChargeMachine/Handlers/LA9/GetLastLogEaChargeHandler.cs @@ -1,5 +1,6 @@ using Abstractions.Handlers; using Abstractions.SerializationTypes; +using Abstractions.Services; using MedusaPluginChargeMachine.Models.Request; using MedusaPluginChargeMachine.Models.Response; using MedusaPluginChargeMachine.Services; @@ -7,7 +8,7 @@ using Microsoft.EntityFrameworkCore; namespace MedusaPluginChargeMachine.Handlers.LA9; -public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMachineDbContext db) +public class GetLastLogEaChargeHandler(ISessionService sessionService, ICardService cardService, ChargeMachineDbContext db) : Handler { public override void Configure() @@ -18,8 +19,14 @@ public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMac public override async Task HandleAsync(GetLastLogRequest req, GameModel model) { - var today = DateTime.UtcNow.Date; - var cardId = (string?)null; + var targetDate = DateTime.TryParse(req.TargetDate, out var td) ? td.Date : DateTime.Now.Date; + var utcDayStart = targetDate.ToUniversalTime(); + var utcDayEnd = utcDayStart.AddDays(1); + + var page = int.TryParse(req.Page, out var p) ? Math.Max(0, p) : 0; + var perPage = int.TryParse(req.PerPage, out var pp) ? Math.Max(1, pp) : 8; + + string? cardId = null; if (req.SessionId is not null) { @@ -31,13 +38,13 @@ public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMac if (cardId is not null) query = query.Where(h => h.CardId == cardId); - var todayRows = await query - .Where(h => h.OrderDate.Date == today) + var dayRows = await query + .Where(h => h.OrderDate >= utcDayStart && h.OrderDate < utcDayEnd) .ToListAsync(); - var todayTotal = todayRows.Sum(h => h.ChargeAmount); + var dayTotal = dayRows.Sum(h => h.ChargeAmount); - var headerItems = todayRows + var headerItems = dayRows .GroupBy(Denomination) .Select(g => new GetLastLogChargeItem { @@ -47,19 +54,17 @@ public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMac }) .ToList(); - var recentItems = await query + var resultItems = dayRows .OrderByDescending(h => h.OrderDate) - .Take(10) - .ToListAsync(); - - var resultItems = recentItems + .Skip(page * perPage) + .Take(perPage) .Select(h => new GetLastLogResultItem { - OrderDate = new XrpcString(h.OrderDate.ToString("yyyyMMddHHmmss")), + OrderDate = new XrpcString(h.OrderDate.ToLocalTime().ToString("yyyy-MM-dd HH:mm")), ChargeId = new XrpcString($"N{Denomination(h)}P"), ChargeNum = new XrpcInt(h.ChargeNum), - CardType = new XrpcInt(1), - CardNo = new XrpcString(MaskCardId(h.CardId)) + CardType = new XrpcString("1"), + CardNo = new XrpcString(cardService.ConvertUidToKonamiId(h.CardId)) }) .ToList(); @@ -77,11 +82,11 @@ public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMac { resultItems.Add(new GetLastLogResultItem { - OrderDate = new XrpcString(""), + OrderDate = new XrpcString("-"), ChargeId = new XrpcString("N1000P"), ChargeNum = new XrpcInt(0), - CardType = new XrpcInt(1), - CardNo = new XrpcString("") + CardType = new XrpcString("1"), + CardNo = new XrpcString("-") }); } @@ -90,7 +95,7 @@ public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMac Status = 0, Header = new GetLastLogEaChargeHeader { - Chargedaily = new XrpcInt(todayTotal), + Chargedaily = new XrpcInt(dayTotal), Items = headerItems }, Result = new GetLastLogEaChargeResult @@ -103,8 +108,4 @@ public class GetLastLogEaChargeHandler(ISessionService sessionService, ChargeMac private static int Denomination(Entities.ChargeHistory h) => h.ChargeAmount / Math.Max(h.ChargeNum, 1); - private static string MaskCardId(string cardId) => - cardId.Length <= 4 - ? new string('*', cardId.Length) - : new string('*', cardId.Length - 4) + cardId[^4..]; } diff --git a/MedusaPluginChargeMachine/Handlers/LA9/GetRecentChargeEaChargeHandler.cs b/MedusaPluginChargeMachine/Handlers/LA9/GetRecentChargeEaChargeHandler.cs index b51afa6..1748af4 100644 --- a/MedusaPluginChargeMachine/Handlers/LA9/GetRecentChargeEaChargeHandler.cs +++ b/MedusaPluginChargeMachine/Handlers/LA9/GetRecentChargeEaChargeHandler.cs @@ -1,5 +1,6 @@ using Abstractions.Handlers; using Abstractions.SerializationTypes; +using Abstractions.Services; using MedusaPluginChargeMachine.Models.Request; using MedusaPluginChargeMachine.Models.Response; using MedusaPluginChargeMachine.Services; @@ -7,7 +8,7 @@ using Microsoft.EntityFrameworkCore; namespace MedusaPluginChargeMachine.Handlers.LA9; -public class GetRecentChargeEaChargeHandler(ISessionService sessionService, ChargeMachineDbContext db) +public class GetRecentChargeEaChargeHandler(ISessionService sessionService, ICardService cardService, ChargeMachineDbContext db) : Handler { public override void Configure() @@ -42,11 +43,11 @@ public class GetRecentChargeEaChargeHandler(ISessionService sessionService, Char var items = rows.Select(h => new GetRecentChargeItem { - RcvTime = new XrpcString(h.OrderDate.ToString("yyyyMMddHHmmss")), + RcvTime = new XrpcString(h.OrderDate.ToLocalTime().ToString("yyyy-MM-dd HH:mm")), ChrgPrice = new XrpcInt(h.ChargeAmount), - CardNo = new XrpcString(MaskCardId(h.CardId)), - AccCode = new XrpcString(""), - RcvStatus = new XrpcInt(0), + CardNo = new XrpcString(cardService.ConvertUidToKonamiId(h.CardId)), + AccCode = new XrpcString("-"), //TODO maybe later when we add a arcade filter which is per PCBID we can safly show the access code + RcvStatus = new XrpcString("0"), FontColor = new XrpcString("#FFFFFF") }).ToList(); @@ -54,11 +55,11 @@ public class GetRecentChargeEaChargeHandler(ISessionService sessionService, Char { items.Add(new GetRecentChargeItem { - RcvTime = new XrpcString(""), + RcvTime = new XrpcString("-"), ChrgPrice = new XrpcInt(0), - CardNo = new XrpcString(""), - AccCode = new XrpcString(""), - RcvStatus = new XrpcInt(0), + CardNo = new XrpcString("-"), + AccCode = new XrpcString("-"), + RcvStatus = new XrpcString("0"), FontColor = new XrpcString("#FFFFFF") }); } @@ -73,16 +74,10 @@ public class GetRecentChargeEaChargeHandler(ISessionService sessionService, Char private string? ResolveCardId(GetRecentChargeRequest req) { - if (req.SessionId is not null) - { - try { return sessionService.GetSession(req.SessionId).refId; } - catch { /* fall through to cardid */ } - } + if (req.SessionId is null) return req.CardId; + try { return sessionService.GetSession(req.SessionId).refId; } + catch { /* fall through to cardid */ } return req.CardId; } - private static string MaskCardId(string cardId) => - cardId.Length <= 4 - ? new string('*', cardId.Length) - : new string('*', cardId.Length - 4) + cardId[^4..]; } diff --git a/MedusaPluginChargeMachine/Models/Request/GetLastLogRequest.cs b/MedusaPluginChargeMachine/Models/Request/GetLastLogRequest.cs index 0672c30..7de258f 100644 --- a/MedusaPluginChargeMachine/Models/Request/GetLastLogRequest.cs +++ b/MedusaPluginChargeMachine/Models/Request/GetLastLogRequest.cs @@ -7,4 +7,19 @@ public class GetLastLogRequest { [XmlElement("sessid")] public string? SessionId { get; set; } + + [XmlElement("ectype")] + public string? EcType { get; set; } + + [XmlElement("targetdate")] + public string? TargetDate { get; set; } + + [XmlElement("perpage")] + public string? PerPage { get; set; } + + [XmlElement("page")] + public string? Page { get; set; } + + [XmlElement("version")] + public string? Version { get; set; } } diff --git a/MedusaPluginChargeMachine/Models/Response/GetLastLogEaChargeResponse.cs b/MedusaPluginChargeMachine/Models/Response/GetLastLogEaChargeResponse.cs index 2f08b71..91b9265 100644 --- a/MedusaPluginChargeMachine/Models/Response/GetLastLogEaChargeResponse.cs +++ b/MedusaPluginChargeMachine/Models/Response/GetLastLogEaChargeResponse.cs @@ -56,7 +56,7 @@ public record GetLastLogResultItem public XrpcInt ChargeNum { get; set; } [XmlElement("cardtype")] - public XrpcInt CardType { get; set; } + public XrpcString CardType { get; set; } [XmlElement("cardno")] public XrpcString CardNo { get; set; } diff --git a/MedusaPluginChargeMachine/Models/Response/GetRecentChargeResponse.cs b/MedusaPluginChargeMachine/Models/Response/GetRecentChargeResponse.cs index f4f3668..6c8118d 100644 --- a/MedusaPluginChargeMachine/Models/Response/GetRecentChargeResponse.cs +++ b/MedusaPluginChargeMachine/Models/Response/GetRecentChargeResponse.cs @@ -32,7 +32,7 @@ public record GetRecentChargeItem public XrpcString AccCode { get; set; } [XmlElement("rcvstatus")] - public XrpcInt RcvStatus { get; set; } + public XrpcString RcvStatus { get; set; } [XmlElement("fontcolor")] public XrpcString FontColor { get; set; }