using Managing.Domain.Bots; using MediatR; using static Managing.Common.Enums; using Managing.Application.Abstractions; namespace Managing.Application.ManageBot { public class BackupBotCommandHandler : IRequestHandler { private readonly ITaskCache _taskCache; private readonly IBotService _botService; public BackupBotCommandHandler(ITaskCache taskCache, IBotService botService) { _taskCache = taskCache; _botService = botService; } public Task 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(request.Name); botBackup.Data = simpleBot.GetBackup(); break; case BotType.ScalpingBot: var scalpingBot = _taskCache.Get(request.Name); botBackup.Data = scalpingBot.GetBackup(); break; case BotType.FlippingBot: var flippingBot = _taskCache.Get(request.Name); botBackup.Data = flippingBot.GetBackup(); break; default: return Task.FromResult(false); } _botService.SaveBotBackup(botBackup); return Task.FromResult(true); } } public class BackupBotCommand : IRequest { public string Name { get; } public BotType BotType { get; } public BackupBotCommand(BotType botType, string name) { BotType = botType; Name = name; } } }