SGI/Configuracao/ConfiguracaoService.cs

71 lines
2.4 KiB
C#

using System;
using System.IO;
using System.Text.Json;
using System.Windows;
namespace UI.Configuracao
{
public class DBConfig
{
public string Servidor { get; set; } = "localhost";
public string Banco { get; set; } = "";
public string Usuario { get; set; } = "";
public string Senha { get; set; } = "";
public bool Integrada { get; set; } = true;
public string Sgbd { get; set; } = "SQL Server";
public string Provedor { get; set; } = "System.Data.SqlClient";
}
public static class ConfiguracaoService
{
private static readonly string CaminhoConfig =
Path.Combine(@"C:\Levelcode\LevelcodeSGI\Config", "settingsdb.json");
public static DBConfig Carregar()
{
try
{
if (File.Exists(CaminhoConfig))
{
string json = File.ReadAllText(CaminhoConfig);
return JsonSerializer.Deserialize<DBConfig>(json) ?? new DBConfig();
}
}
catch (Exception ex)
{
MessageBox.Show($"Erro ao carregar configurações:\n{ex.Message}",
"Aviso", MessageBoxButton.OK, MessageBoxImage.Warning);
}
return new DBConfig();
}
public static void Salvar(DBConfig config)
{
try
{
string pasta = Path.GetDirectoryName(CaminhoConfig)!;
if (!Directory.Exists(pasta))
Directory.CreateDirectory(pasta);
var options = new JsonSerializerOptions { WriteIndented = true };
string json = JsonSerializer.Serialize(config, options);
File.WriteAllText(CaminhoConfig, json);
}
catch (Exception ex)
{
MessageBox.Show($"Erro ao salvar configurações:\n{ex.Message}",
"Erro", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
public static string GerarConnectionString(DBConfig config)
{
if (config.Integrada)
return $"Server={config.Servidor};Database={config.Banco};Integrated Security=True;TrustServerCertificate=True;";
else
return $"Server={config.Servidor};Database={config.Banco};User Id={config.Usuario};Password={config.Senha};TrustServerCertificate=True;";
}
}
}