using System; using System.Collections.Generic; using System.IO; using System.Text; using Newtonsoft.Json; namespace DesktopBot.Models { /// /// Gestisce la persistenza delle istanze di bot in un file JSON locale. /// Percorso: %AppData%\TradingBot\bots.json /// public static class BotInstanceStore { private static readonly string StorePath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TradingBot", "bots.json" ); /// Carica tutti i bot salvati dal disco. Ritorna lista vuota se il file non esiste. public static List Load() { try { if (!File.Exists(StorePath)) return new List(); var json = File.ReadAllText(StorePath, Encoding.UTF8); return JsonConvert.DeserializeObject>(json) ?? new List(); } catch { return new List(); } } /// Salva tutti i bot su disco. public static void Save(IEnumerable bots) { try { var dir = Path.GetDirectoryName(StorePath); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); var json = JsonConvert.SerializeObject(new List(bots), Formatting.Indented); File.WriteAllText(StorePath, json, Encoding.UTF8); } catch { // Logging silenzioso: non bloccare la UI per errori di I/O } } } }