using Managing.Application.Abstractions; using Managing.Application.ManageBot; using Managing.Domain.Bots; using Managing.Domain.Workflows; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Managing.Application.Bots { public class SimpleBot : Bot { public readonly ILogger Logger; private readonly IBotService _botService; private readonly IBackupBotService _backupBotService; private Workflow _workflow; public SimpleBot(string name, ILogger logger, Workflow workflow, IBotService botService, IBackupBotService backupBotService) : base(name) { Logger = logger; _botService = botService; _backupBotService = backupBotService; _workflow = workflow; Interval = 100; } public override void Start() { Task.Run(() => InitWorker(Run)); base.Start(); } public async Task Run() { await Task.Run( async () => { Logger.LogInformation(Identifier); Logger.LogInformation(DateTime.Now.ToString()); await _workflow.Execute(); await SaveBackup(); Logger.LogInformation("__________________________________________________"); }); } public override async Task SaveBackup() { var data = JsonConvert.SerializeObject(_workflow); await _backupBotService.SaveOrUpdateBotBackup(User, Identifier, Status, new TradingBotBackup()); } public override void LoadBackup(BotBackup backup) { _workflow = new Workflow(); } } }