using System; using System.IO; using System.Text.Json; using ShortcutsHelper.Models; namespace ShortcutsHelper.Services { public class ConfigurationService { private const string ConfigFileName = "shortcuts_config.json"; private static string ConfigFilePath => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ShortcutsHelper", ConfigFileName); public AppConfiguration LoadConfiguration() { try { if (File.Exists(ConfigFilePath)) { string json = File.ReadAllText(ConfigFilePath); return JsonSerializer.Deserialize(json) ?? new AppConfiguration(); } } catch (Exception ex) { Console.WriteLine($"Error al cargar configuración: {ex.Message}"); } return new AppConfiguration(); } public void SaveConfiguration(AppConfiguration config) { try { string directory = Path.GetDirectoryName(ConfigFilePath)!; if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } var options = new JsonSerializerOptions { WriteIndented = true }; string json = JsonSerializer.Serialize(config, options); File.WriteAllText(ConfigFilePath, json); } catch (Exception ex) { Console.WriteLine($"Error al guardar configuración: {ex.Message}"); } } public ApplicationSettings GetApplicationSettings(AppConfiguration config, string applicationName) { if (config.Applications.TryGetValue(applicationName, out var settings)) { return settings; } // Crear configuración por defecto para nueva aplicación var defaultSettings = new ApplicationSettings(); config.Applications[applicationName] = defaultSettings; return defaultSettings; } public void UpdateApplicationSettings(AppConfiguration config, string applicationName, ApplicationSettings settings) { config.Applications[applicationName] = settings; } } }