1
0
mirror of synced 2024-12-23 19:44:51 +01:00
GC-local-server-rewrite/Application/Game/Card/Read/ReadCardBDataQuery.cs

39 lines
1.5 KiB
C#
Raw Normal View History

using Domain.Enums;
2023-02-13 17:38:19 +01:00
using Microsoft.Extensions.Logging;
namespace Application.Game.Card.Read;
public record ReadCardBDataQuery(long CardId) : IRequestWrapper<string>;
2023-02-16 17:38:01 +01:00
public class ReadBDataQueryHandler : RequestHandlerBase<ReadCardBDataQuery, string>
{
2023-02-13 17:38:19 +01:00
private const string CARD_BDATA_XPATH = "/root/card_bdata";
2023-02-16 17:38:01 +01:00
private readonly ILogger<ReadBDataQueryHandler> logger;
2023-02-13 17:38:19 +01:00
2023-02-16 17:38:01 +01:00
public ReadBDataQueryHandler(ICardDependencyAggregate aggregate, ILogger<ReadBDataQueryHandler> logger) : base(aggregate)
{
2023-02-13 17:38:19 +01:00
this.logger = logger;
}
2023-02-13 17:38:19 +01:00
public override async Task<ServiceResult<string>> Handle(ReadCardBDataQuery request, CancellationToken cancellationToken)
{
2023-02-13 17:38:19 +01:00
var exists = await CardDbContext.CardMains.AnyAsync(card => card.CardId == request.CardId, cancellationToken: cancellationToken);
if (!exists)
{
logger.LogWarning("Card id: {CardId} does not exist!", request.CardId);
return ServiceResult.Failed<string>(
new ServiceError($"Card id: {request.CardId} does not exist!", (int)CardReturnCode.CardNotRegistered));
}
var bdata = await CardDbContext.CardBdata.FirstOrDefaultAsync(
card => card.CardId == request.CardId, cancellationToken: cancellationToken);
var result = bdata?.CardBDatumToDto().SerializeCardData(CARD_BDATA_XPATH)
?? new object().SerializeCardData(CARD_BDATA_XPATH);
return new ServiceResult<string>(result);
}
}