Files
Encelado/DesktopBot/ViewModels/BotConfigViewModel.cs
T
2026-06-09 18:29:41 +02:00

86 lines
2.2 KiB
C#

using System;
using System.Windows.Input;
using DesktopBot.Engine;
using DesktopBot.Models;
using DesktopBot.Services;
namespace DesktopBot.ViewModels
{
/// <summary>
/// ViewModel per la configurazione del bot
/// </summary>
public class BotConfigViewModel : BaseViewModel
{
private readonly ITradingService _tradingService;
private readonly AutomatedBotEngine _botEngine;
private BotConfiguration _config = new BotConfiguration();
private bool _isRunning;
private string _statusMessage;
public BotConfiguration Config
{
get => _config;
set => SetProperty(ref _config, value);
}
public bool IsRunning
{
get => _isRunning;
set => SetProperty(ref _isRunning, value);
}
public string StatusMessage
{
get => _statusMessage;
set => SetProperty(ref _statusMessage, value);
}
public ICommand StartBotCommand { get; }
public ICommand StopBotCommand { get; }
public BotConfigViewModel(ITradingService tradingService, AutomatedBotEngine botEngine)
{
_tradingService = tradingService;
_botEngine = botEngine;
StartBotCommand = new RelayCommand(
async _ => await StartBotAsync(),
_ => !IsRunning
);
StopBotCommand = new RelayCommand(
_ => StopBot(),
_ => IsRunning
);
}
public void LoadConfiguration()
{
Config = new BotConfiguration();
}
private async System.Threading.Tasks.Task StartBotAsync()
{
try
{
IsRunning = true;
StatusMessage = $"Bot avviato - {Config.Symbol} - Strategia: {Config.Strategy}";
await _botEngine.StartAsync(Config);
}
catch (Exception ex)
{
StatusMessage = $"Errore: {ex.Message}";
IsRunning = false;
}
}
private void StopBot()
{
_botEngine.Stop();
IsRunning = false;
StatusMessage = "Bot arrestato";
}
}
}