using System;
using System.IO;
using Электронная_Фармация.Properties;
namespace Электронная_Фармация.Classes
{
///
/// Shared application paths and API settings.
///
public static class AppConfig
{
public const string DefaultApiBaseUrl = "https://24pharmdata.ru";
private const string LegacyApiBaseUrl = "http://195.34.241.84:9988";
private const string ApiBaseUrlEnvVar = "ELF_API_BASE_URL";
///
/// Replaces known dead API URLs in saved user settings.
///
public static void MigrateLegacySettings()
{
var current = Settings.Default.ApiBaseUrl;
if (string.IsNullOrWhiteSpace(current))
{
return;
}
var normalized = NormalizeApiBaseUrl(current);
if (string.Equals(normalized, LegacyApiBaseUrl, StringComparison.OrdinalIgnoreCase) ||
string.Equals(normalized, "http://195.34.241.84:9988", StringComparison.OrdinalIgnoreCase))
{
Settings.Default.ApiBaseUrl = DefaultApiBaseUrl;
Settings.Default.stringToken = string.Empty;
Settings.Default.Save();
AppDebugLog.Info("AppConfig", $"ApiBaseUrl мигрирован: {LegacyApiBaseUrl} -> {DefaultApiBaseUrl}");
}
}
public static string ApiBaseUrl
{
get
{
var fromSettings = Settings.Default.ApiBaseUrl;
if (!string.IsNullOrWhiteSpace(fromSettings))
{
return NormalizeApiBaseUrl(fromSettings);
}
var fromEnv = Environment.GetEnvironmentVariable(ApiBaseUrlEnvVar);
if (!string.IsNullOrWhiteSpace(fromEnv))
{
return NormalizeApiBaseUrl(fromEnv);
}
return DefaultApiBaseUrl;
}
}
public static string NormalizeApiBaseUrl(string url)
{
if (string.IsNullOrWhiteSpace(url))
{
return DefaultApiBaseUrl;
}
url = url.Trim().TrimEnd('/');
if (!url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) &&
!url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
{
url = "http://" + url;
}
return url;
}
public static string SqliteDbPath
{
get
{
var baseDir = AppDomain.CurrentDomain.BaseDirectory;
var root = Path.Combine(baseDir, "efClient.db");
var data = Path.Combine(baseDir, "Data", "efClient.db");
if (File.Exists(root))
{
return root;
}
if (File.Exists(data))
{
return data;
}
return root;
}
}
public static string SqliteConnectionString
{
get { return $"Data Source={SqliteDbPath};Version=3;New=False;"; }
}
public static string LocationId
{
get { return Settings.Default.LocationId ?? string.Empty; }
}
public static void SetLocationId(string locationId)
{
Settings.Default.LocationId = (locationId ?? string.Empty).Trim();
Settings.Default.Save();
}
public static string InvoiceExportPath
{
get { return Settings.Default.InvoiceExportPath ?? string.Empty; }
}
public static void SetInvoiceExportPath(string path)
{
Settings.Default.InvoiceExportPath = (path ?? string.Empty).Trim();
Settings.Default.Save();
}
}
}