Files
managing-apps/src/Managing.Application/ManageBot/BackupBotCommandHandler.cs
2024-06-26 19:14:32 +07:00

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;
}
}
}