Medusa.net/Medusa.Core/Handlers/Common/Card/InquireCardManagmentHandler.cs
2024-08-15 20:06:56 +02:00

53 lines
2.0 KiB
C#

using Medusa.Core.Attributes;
using Medusa.Core.Services;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace Medusa.Core.Handlers.Common.Card
{
[Handler("cardmng", "inquire")]
public class InquireCardManagmentHandler(ICardService cardService, XDocument body) : IHandler
{
private readonly XDocument _body = body;
private readonly ICardService _cardService = cardService;
public static List<(string konamiId, string cardId, string pincode)> CardIds = [];
public Task<XDocument> HandleAsync(string model)
{
var cardId = _body.Root?.Element("cardmng")?.Attribute("cardid")?.Value;
if (string.IsNullOrEmpty(cardId))
{
var noCardId = new XElement("cardmng", new XAttribute("status", "111"));
return Task.FromResult(new XDocument(new XElement("response", noCardId)));
}
var konamiId = _cardService.ConvertUidToKonamiId(cardId);
if (string.IsNullOrEmpty(konamiId))
{
var noKonamiId = new XElement("cardmng", new XAttribute("status", "111"));
return Task.FromResult(new XDocument(new XElement("response", noKonamiId)));
}
var existingCard = CardIds.FirstOrDefault(x => x.cardId == cardId && x.konamiId == konamiId);
var cardManagment = new XElement("cardmng", new XAttribute("binded", "1"), new XAttribute("dataid", "675678776"),
new XAttribute("exflag", "1"), new XAttribute("expired", "0"), new XAttribute("newflag", "0"),
new XAttribute("refid", "87656787"), new XAttribute("status", "0"));
var document = new XDocument(new XElement("response", cardManagment));
if (existingCard is (null, null, null))
{
cardManagment = new XElement("cardmng", new XAttribute("status", "112"));
document = new XDocument(new XElement("response", cardManagment));
}
return Task.FromResult(document);
}
}
}