64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
using Managing.Domain.Bots;
|
|
using MediatR;
|
|
using static Managing.Common.Enums;
|
|
using Managing.Application.Abstractions;
|
|
|
|
namespace Managing.Application.ManageBot
|
|
{
|
|
public class BackupBotCommandHandler : IRequestHandler<BackupBotCommand, bool>
|
|
{
|
|
private readonly ITaskCache _taskCache;
|
|
private readonly IBotService _botService;
|
|
|
|
public BackupBotCommandHandler(ITaskCache taskCache, IBotService botService)
|
|
{
|
|
_taskCache = taskCache;
|
|
_botService = botService;
|
|
}
|
|
|
|
public Task<bool> Handle(BackupBotCommand request, CancellationToken cancellationToken)
|
|
{
|
|
var botBackup = new BotBackup
|
|
{
|
|
Name = request.Name,
|
|
BotType = request.BotType,
|
|
Data = ""
|
|
};
|
|
|
|
switch (request.BotType)
|
|
{
|
|
case BotType.SimpleBot:
|
|
var simpleBot = _taskCache.Get<IBot>(request.Name);
|
|
botBackup.Data = simpleBot.GetBackup();
|
|
break;
|
|
case BotType.ScalpingBot:
|
|
var scalpingBot = _taskCache.Get<ITradingBot>(request.Name);
|
|
botBackup.Data = scalpingBot.GetBackup();
|
|
break;
|
|
case BotType.FlippingBot:
|
|
var flippingBot = _taskCache.Get<ITradingBot>(request.Name);
|
|
botBackup.Data = flippingBot.GetBackup();
|
|
break;
|
|
default:
|
|
return Task.FromResult(false);
|
|
}
|
|
|
|
_botService.SaveBotBackup(botBackup);
|
|
|
|
return Task.FromResult(true);
|
|
}
|
|
}
|
|
|
|
public class BackupBotCommand : IRequest<bool>
|
|
{
|
|
public string Name { get; }
|
|
public BotType BotType { get; }
|
|
|
|
public BackupBotCommand(BotType botType, string name)
|
|
{
|
|
BotType = botType;
|
|
Name = name;
|
|
}
|
|
}
|
|
}
|