53 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|