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" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Game\Card\Read" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace Application.Common.Models;
|
||||
using Domain.Enums;
|
||||
|
||||
namespace Application.Common.Models;
|
||||
|
||||
/// <summary>
|
||||
/// All errors contained in ServiceResult objects must return an error of this type
|
||||
@ -36,7 +38,7 @@ public class ServiceError
|
||||
/// <summary>
|
||||
/// Default error for when we receive an exception
|
||||
/// </summary>
|
||||
public static ServiceError DefaultError => new("An unknown exception occured.", 999);
|
||||
public static ServiceError DefaultError => new("An unknown exception occured.", (int)CardReturnCode.Unknown);
|
||||
|
||||
/// <summary>
|
||||
/// Default validation error. Use this for invalid parameters in controller actions and service methods.
|
||||
@ -56,9 +58,11 @@ public class ServiceError
|
||||
/// </summary>
|
||||
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 UserFailedToCreate => new("Failed to create User.", 995);
|
||||
|
@ -26,7 +26,7 @@ public class ServiceResult<T> : ServiceResult
|
||||
|
||||
public class ServiceResult
|
||||
{
|
||||
public bool Succeeded => Error == null;
|
||||
public bool Succeeded => Error is null;
|
||||
|
||||
public ServiceError? Error { get; set; }
|
||||
|
||||
|
@ -15,7 +15,6 @@ public class CardReissueCommandHandler : CardRequestHandlerBase<CardReissueComma
|
||||
public override Task<ServiceResult<string>> Handle(CardReissueCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
// TODO: Support actual reissue
|
||||
var result = $"{(int)CardReturnCode.NotReissue}";
|
||||
return Task.FromResult(new ServiceResult<string>(result));
|
||||
return Task.FromResult(ServiceResult.Failed<string>(ServiceError.NotReissue));
|
||||
}
|
||||
}
|
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.Game.Card;
|
||||
using Application.Game.Card.Management;
|
||||
using Application.Game.Card.Read;
|
||||
using Application.Game.Card.Session;
|
||||
using Application.Game.Card.Write;
|
||||
using Domain;
|
||||
using Domain.Enums;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@ -36,6 +38,7 @@ public class CardController : BaseController<CardController>
|
||||
switch (cardRequestType)
|
||||
{
|
||||
case CardRequestType.ReadCard:
|
||||
result = await Mediator.Send(new ReadCardQuery(request.CardId));
|
||||
break;
|
||||
case CardRequestType.ReadCardDetail:
|
||||
break;
|
||||
@ -80,29 +83,37 @@ public class CardController : BaseController<CardController>
|
||||
result = await Mediator.Send(new GetSessionCommand(request.CardId, request.Mac));
|
||||
break;
|
||||
case CardRequestType.WriteCard:
|
||||
|
||||
break;
|
||||
case CardRequestType.WriteCardDetail:
|
||||
break;
|
||||
case CardRequestType.WriteCardBData:
|
||||
break;
|
||||
case CardRequestType.WriteAvatar:
|
||||
result = await Mediator.Send(new WriteAvatarCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteItem:
|
||||
result = await Mediator.Send(new WriteItemCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteTitle:
|
||||
result = await Mediator.Send(new WriteTitleCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteMusicDetail:
|
||||
result = await Mediator.Send(new WriteMusicDetailCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteNavigator:
|
||||
result = await Mediator.Send(new WriteNavigatorCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteCoin:
|
||||
result = await Mediator.Send(new WriteCoinCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteSkin:
|
||||
result = await Mediator.Send(new WriteSkinCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteUnlockKeynum:
|
||||
result = await Mediator.Send(new WriteUnlockKeynumCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.WriteSoundEffect:
|
||||
result = await Mediator.Send(new WriteSoundEffectCommand(request.CardId, request.Data));
|
||||
break;
|
||||
case CardRequestType.StartOnlineMatching:
|
||||
break;
|
||||
@ -130,7 +141,8 @@ public class CardController : BaseController<CardController>
|
||||
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}";
|
||||
return Ok(errorMessage);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user