1
0
mirror of synced 2024-12-19 01:35:53 +01:00
GC-local-server-rewrite/Application/Game/Card/Write/WriteCardCommand.cs
2023-02-16 16:53:02 +08:00

46 lines
1.6 KiB
C#

using Application.Common.Helpers;
using Microsoft.Extensions.Logging;
namespace Application.Game.Card.Write;
public record WriteCardCommand(long CardId, string Data) : IRequestWrapper<string>;
public class WriteCardCommandHandler : CardRequestHandlerBase<WriteCardCommand, string>
{
private readonly ILogger<WriteCardCommandHandler> logger;
public WriteCardCommandHandler(ICardDependencyAggregate aggregate, ILogger<WriteCardCommandHandler> logger) : base(aggregate)
{
this.logger = logger;
}
public override async Task<ServiceResult<string>> Handle(WriteCardCommand request, CancellationToken cancellationToken)
{
var dto = request.Data.DeserializeCardData<CardDto>();
dto.CardId = request.CardId;
var card = await CardDbContext.CardMains.FirstOrDefaultAsync(card => card.CardId == request.CardId, cancellationToken: cancellationToken);
if (card is null)
{
logger.LogInformation("Creating new card {CardId}", request.CardId);
card = dto.CardDtoToCardMain();
card.Created = TimeHelper.CurrentTimeToString();
CardDbContext.CardMains.Add(card);
}
else
{
logger.LogInformation("Updating {CardId}", request.CardId);
card.Fcol1 = dto.Fcol1;
card.Fcol2 = dto.Fcol2;
card.Fcol3 = dto.Fcol3;
card.ScoreI1 = dto.ScoreI1;
card.Modified = TimeHelper.CurrentTimeToString();
CardDbContext.CardMains.Update(card);
}
await CardDbContext.SaveChangesAsync(cancellationToken);
return new ServiceResult<string>(request.Data);
}
}