Add card read, use service error for not registered and not reissue
This commit is contained in:
parent
7093997658
commit
805611027c
@ -21,8 +21,4 @@
|
|||||||
<PackageReference Include="Throw" Version="1.3.1" />
|
<PackageReference Include="Throw" Version="1.3.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Game\Card\Read" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
namespace Application.Common.Models;
|
using Domain.Enums;
|
||||||
|
|
||||||
|
namespace Application.Common.Models;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// All errors contained in ServiceResult objects must return an error of this type
|
/// All errors contained in ServiceResult objects must return an error of this type
|
||||||
@ -36,7 +38,7 @@ public class ServiceError
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Default error for when we receive an exception
|
/// Default error for when we receive an exception
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static ServiceError DefaultError => new("An unknown exception occured.", 999);
|
public static ServiceError DefaultError => new("An unknown exception occured.", (int)CardReturnCode.Unknown);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Default validation error. Use this for invalid parameters in controller actions and service methods.
|
/// Default validation error. Use this for invalid parameters in controller actions and service methods.
|
||||||
@ -56,9 +58,11 @@ public class ServiceError
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static ServiceError CustomMessage(string errorMessage)
|
public static ServiceError CustomMessage(string errorMessage)
|
||||||
{
|
{
|
||||||
return new ServiceError(errorMessage, 997);
|
return new ServiceError(errorMessage, (int)CardReturnCode.Unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ServiceError NotReissue => new ServiceError("Not reissue, registering a new card", (int)CardReturnCode.NotReissue);
|
||||||
|
|
||||||
public static ServiceError UserNotFound => new("User with this id does not exist", 996);
|
public static ServiceError UserNotFound => new("User with this id does not exist", 996);
|
||||||
|
|
||||||
public static ServiceError UserFailedToCreate => new("Failed to create User.", 995);
|
public static ServiceError UserFailedToCreate => new("Failed to create User.", 995);
|
||||||
|
@ -26,7 +26,7 @@ public class ServiceResult<T> : ServiceResult
|
|||||||
|
|
||||||
public class ServiceResult
|
public class ServiceResult
|
||||||
{
|
{
|
||||||
public bool Succeeded => Error == null;
|
public bool Succeeded => Error is null;
|
||||||
|
|
||||||
public ServiceError? Error { get; set; }
|
public ServiceError? Error { get; set; }
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ public class CardReissueCommandHandler : CardRequestHandlerBase<CardReissueComma
|
|||||||
public override Task<ServiceResult<string>> Handle(CardReissueCommand request, CancellationToken cancellationToken)
|
public override Task<ServiceResult<string>> Handle(CardReissueCommand request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
// TODO: Support actual reissue
|
// TODO: Support actual reissue
|
||||||
var result = $"{(int)CardReturnCode.NotReissue}";
|
return Task.FromResult(ServiceResult.Failed<string>(ServiceError.NotReissue));
|
||||||
return Task.FromResult(new ServiceResult<string>(result));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
33
Application/Game/Card/Read/ReadCardQuery.cs
Normal file
33
Application/Game/Card/Read/ReadCardQuery.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using Application.Common.Extensions;
|
||||||
|
using Application.Common.Models;
|
||||||
|
using Application.Interfaces;
|
||||||
|
using Domain.Enums;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
namespace Application.Game.Card.Read;
|
||||||
|
|
||||||
|
public record ReadCardQuery(long CardId) : IRequestWrapper<string>;
|
||||||
|
|
||||||
|
public class ReadCardQueryHandler : CardRequestHandlerBase<ReadCardQuery, string>
|
||||||
|
{
|
||||||
|
private readonly ILogger<ReadCardQueryHandler> logger;
|
||||||
|
|
||||||
|
public ReadCardQueryHandler(ICardDependencyAggregate aggregate, ILogger<ReadCardQueryHandler> logger) : base(aggregate) {
|
||||||
|
this.logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task<ServiceResult<string>> Handle(ReadCardQuery request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var card = await CardDbContext.CardMains.FirstOrDefaultAsync(card => card.CardId == request.CardId, cancellationToken: cancellationToken);
|
||||||
|
if (card is null)
|
||||||
|
{
|
||||||
|
logger.LogInformation("Card with {CardId} does not exist! Registering a new one...", request.CardId);
|
||||||
|
return ServiceResult.Failed<string>(new ServiceError($"Card id: {request.CardId} does not exist!", (int)CardReturnCode.CardNotRegistered));
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = card.SerializeCardData("/root/card");
|
||||||
|
|
||||||
|
return new ServiceResult<string>(result);
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,9 @@
|
|||||||
using Application.Common.Models;
|
using Application.Common.Models;
|
||||||
using Application.Game.Card;
|
using Application.Game.Card;
|
||||||
using Application.Game.Card.Management;
|
using Application.Game.Card.Management;
|
||||||
|
using Application.Game.Card.Read;
|
||||||
using Application.Game.Card.Session;
|
using Application.Game.Card.Session;
|
||||||
|
using Application.Game.Card.Write;
|
||||||
using Domain;
|
using Domain;
|
||||||
using Domain.Enums;
|
using Domain.Enums;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@ -36,6 +38,7 @@ public class CardController : BaseController<CardController>
|
|||||||
switch (cardRequestType)
|
switch (cardRequestType)
|
||||||
{
|
{
|
||||||
case CardRequestType.ReadCard:
|
case CardRequestType.ReadCard:
|
||||||
|
result = await Mediator.Send(new ReadCardQuery(request.CardId));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.ReadCardDetail:
|
case CardRequestType.ReadCardDetail:
|
||||||
break;
|
break;
|
||||||
@ -80,29 +83,37 @@ public class CardController : BaseController<CardController>
|
|||||||
result = await Mediator.Send(new GetSessionCommand(request.CardId, request.Mac));
|
result = await Mediator.Send(new GetSessionCommand(request.CardId, request.Mac));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteCard:
|
case CardRequestType.WriteCard:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteCardDetail:
|
case CardRequestType.WriteCardDetail:
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteCardBData:
|
case CardRequestType.WriteCardBData:
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteAvatar:
|
case CardRequestType.WriteAvatar:
|
||||||
|
result = await Mediator.Send(new WriteAvatarCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteItem:
|
case CardRequestType.WriteItem:
|
||||||
|
result = await Mediator.Send(new WriteItemCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteTitle:
|
case CardRequestType.WriteTitle:
|
||||||
|
result = await Mediator.Send(new WriteTitleCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteMusicDetail:
|
case CardRequestType.WriteMusicDetail:
|
||||||
|
result = await Mediator.Send(new WriteMusicDetailCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteNavigator:
|
case CardRequestType.WriteNavigator:
|
||||||
|
result = await Mediator.Send(new WriteNavigatorCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteCoin:
|
case CardRequestType.WriteCoin:
|
||||||
|
result = await Mediator.Send(new WriteCoinCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteSkin:
|
case CardRequestType.WriteSkin:
|
||||||
|
result = await Mediator.Send(new WriteSkinCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteUnlockKeynum:
|
case CardRequestType.WriteUnlockKeynum:
|
||||||
|
result = await Mediator.Send(new WriteUnlockKeynumCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.WriteSoundEffect:
|
case CardRequestType.WriteSoundEffect:
|
||||||
|
result = await Mediator.Send(new WriteSoundEffectCommand(request.CardId, request.Data));
|
||||||
break;
|
break;
|
||||||
case CardRequestType.StartOnlineMatching:
|
case CardRequestType.StartOnlineMatching:
|
||||||
break;
|
break;
|
||||||
@ -130,7 +141,8 @@ public class CardController : BaseController<CardController>
|
|||||||
return Ok(result.Data);
|
return Ok(result.Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
var errorMessage = $"{(int)CardReturnCode.Unknown}\n" +
|
// Here error is not null since Succeeded => Error is null;
|
||||||
|
var errorMessage = $"{result.Error!.Code}\n" +
|
||||||
$"{result.Error!.Message}";
|
$"{result.Error!.Message}";
|
||||||
return Ok(errorMessage);
|
return Ok(errorMessage);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user