ShortcutsHelper/Services/ConfigurationService.cs

73 lines
2.4 KiB
C#

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<AppConfiguration>(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;
}
}
}