This commit is contained in:
2024-07-12 22:20:43 +07:00
parent 6718d08448
commit 67630c2deb
7 changed files with 62 additions and 60 deletions

View File

@@ -158,6 +158,46 @@ namespace Managing.Application.ManageBot
return new SimpleBot(botName, _tradingBotLogger, workflow, this);
}
public async Task<string> StopBot(string botName)
{
if (_botTasks.TryGetValue(botName, out var botWrapper))
{
if (botWrapper.BotInstance is IBot bot)
{
await Task.Run(() =>
bot.Stop()); // Assuming Stop is an asynchronous process wrapped in Task.Run for synchronous methods
return bot.GetStatus();
}
}
return Enums.BotStatus.Down.ToString();
}
public Task<bool> DeleteBot(string botName)
{
if (_botTasks.TryRemove(botName, out _))
{
_botRepository.DeleteBotBackup(botName);
return Task.FromResult(true);
}
return Task.FromResult(false);
}
public Task<string> RestartBot(string botName)
{
if (_botTasks.TryGetValue(botName, out var botWrapper))
{
if (botWrapper.BotInstance is IBot bot)
{
bot.Restart();
return Task.FromResult(bot.GetStatus());
}
}
return Task.FromResult(Enums.BotStatus.Down.ToString());
}
public ITradingBot CreateScalpingBot(string accountName, MoneyManagement moneyManagement, string name,
Enums.Ticker ticker, string scenario, Enums.Timeframe interval, bool isForWatchingOnly)
{

View File

@@ -8,25 +8,16 @@ namespace Managing.Application.ManageBot;
public class DeleteBotCommandHandler : IRequestHandler<DeleteBotCommand, bool>
{
private readonly ILogger<DeleteBotCommandHandler> _log;
private readonly ITaskCache _taskCache;
private readonly IBotService _botService;
public DeleteBotCommandHandler(ITaskCache taskCache, ILogger<DeleteBotCommandHandler> log)
public DeleteBotCommandHandler(ILogger<DeleteBotCommandHandler> log, IBotService botService)
{
_taskCache = taskCache;
_log = log;
_botService = botService;
}
public Task<bool> Handle(DeleteBotCommand request, CancellationToken cancellationToken)
{
try
{
_taskCache.Invalidate(request.Name);
return Task.FromResult(true);
}
catch (Exception e)
{
_log.LogError(e.Message);
return Task.FromResult(false);
}
return _botService.DeleteBot(request.Name);
}
}
}

View File

@@ -8,32 +8,16 @@ namespace Managing.Application.ManageBot
{
public class RestartBotCommandHandler : IRequestHandler<RestartBotCommand, string>
{
private readonly ITaskCache _taskCache;
private readonly IBotService _botService;
public RestartBotCommandHandler(ITaskCache taskCache)
public RestartBotCommandHandler(IBotService botService)
{
_taskCache = taskCache;
_botService = botService;
}
public Task<string> Handle(RestartBotCommand request, CancellationToken cancellationToken)
{
switch (request.BotType)
{
case BotType.SimpleBot:
var simpleBot = _taskCache.Get<IBot>(request.Name);
simpleBot.Restart();
return Task.FromResult(simpleBot.GetStatus());
case BotType.ScalpingBot:
var scalpingBot = _taskCache.Get<ITradingBot>(request.Name);
scalpingBot.Restart();
return Task.FromResult(scalpingBot.GetStatus());
case BotType.FlippingBot:
var flippingBot = _taskCache.Get<ITradingBot>(request.Name);
flippingBot.Restart();
return Task.FromResult(flippingBot.GetStatus());
default:
return Task.FromResult(BotStatus.Down.ToString());
}
return _botService.RestartBot(request.Name);
}
}
}
}

View File

@@ -8,32 +8,16 @@ namespace Managing.Application.ManageBot
{
public class StopBotCommandHandler : IRequestHandler<StopBotCommand, string>
{
private readonly ITaskCache _taskCache;
private readonly IBotService _botService;
public StopBotCommandHandler(ITaskCache taskCache)
public StopBotCommandHandler(IBotService botService)
{
_taskCache = taskCache;
_botService = botService;
}
public Task<string> Handle(StopBotCommand request, CancellationToken cancellationToken)
{
switch (request.BotType)
{
case BotType.SimpleBot:
var simpleBot = _taskCache.Get<IBot>(request.Name);
simpleBot.Stop();
return Task.FromResult(simpleBot.GetStatus());
case BotType.ScalpingBot:
var scalpingBot = _taskCache.Get<ITradingBot>(request.Name);
scalpingBot.Stop();
return Task.FromResult(scalpingBot.GetStatus());
case BotType.FlippingBot:
var flippingBot = _taskCache.Get<ITradingBot>(request.Name);
flippingBot.Stop();
return Task.FromResult(flippingBot.GetStatus());
default:
return Task.FromResult(BotStatus.Down.ToString());
}
return _botService.StopBot(request.Name);
}
}
}
}