[file:] better folder structuring
This commit is contained in:
194
DataStore/Settings.cs
Normal file
194
DataStore/Settings.cs
Normal file
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Logof_Client;
|
||||
|
||||
public class Settings
|
||||
{
|
||||
public static Settings _instance = new();
|
||||
public AddressSets addressSets = new();
|
||||
public Customers customers = new();
|
||||
|
||||
public string settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient", "config.json");
|
||||
|
||||
public Settings()
|
||||
{
|
||||
_instance = this;
|
||||
}
|
||||
|
||||
|
||||
public static void Save()
|
||||
{
|
||||
if (!Directory.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient")))
|
||||
Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient"));
|
||||
if (!string.IsNullOrEmpty(Global._instance.config_path)) _instance.settingsPath = Global._instance.config_path;
|
||||
|
||||
var json = JsonConvert.SerializeObject(_instance);
|
||||
File.WriteAllText(_instance.settingsPath, json);
|
||||
}
|
||||
|
||||
public static void Load()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Global._instance.config_path)) _instance.settingsPath = Global._instance.config_path;
|
||||
|
||||
try
|
||||
{
|
||||
var contents = File.ReadAllText(_instance.settingsPath);
|
||||
_instance = JsonConvert.DeserializeObject<Settings>(contents);
|
||||
MainWindow._instance.RefreshCustomerItems();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
Console.WriteLine(ex.StackTrace);
|
||||
Console.WriteLine("Error while reading settings. Generating new...");
|
||||
_instance = new Settings();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Global
|
||||
{
|
||||
public static Global _instance;
|
||||
|
||||
public Global()
|
||||
{
|
||||
_instance = this;
|
||||
}
|
||||
|
||||
public string config_path { get; set; } = Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient",
|
||||
"config.json");
|
||||
|
||||
public string wiki_storage_path { get; set; } = Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient",
|
||||
"wiki");
|
||||
|
||||
public List<Country> countries { get; set; } = new();
|
||||
public string font_path { get; set; } = Path.Combine(AppContext.BaseDirectory, "assets", "fonts");
|
||||
|
||||
public static void Save()
|
||||
{
|
||||
if (!Directory.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient")))
|
||||
Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
"logofclient"));
|
||||
var json = JsonConvert.SerializeObject(_instance, Formatting.Indented);
|
||||
File.WriteAllText(
|
||||
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "logofclient",
|
||||
"global.config"), json);
|
||||
}
|
||||
|
||||
public static void Load()
|
||||
{
|
||||
// if (!File.Exists(Path.Combine(
|
||||
// Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "logofclient",
|
||||
// "global.config")))
|
||||
// File.Create(Path.Combine(
|
||||
// Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "logofclient",
|
||||
// "global.config"));
|
||||
try
|
||||
{
|
||||
var contents = File.ReadAllText(Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "logofclient",
|
||||
"global.config"));
|
||||
_instance = JsonConvert.DeserializeObject<Global>(contents);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
Console.WriteLine(ex.StackTrace);
|
||||
Console.WriteLine("Error while reading global settings. Generating new...");
|
||||
_instance = new Global();
|
||||
Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Customers
|
||||
{
|
||||
public List<Customer> customers = new();
|
||||
public int current { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class Customer
|
||||
{
|
||||
public Customer()
|
||||
{
|
||||
var highestID = 0;
|
||||
foreach (var customer in Settings._instance.customers.customers)
|
||||
if (customer.ID > highestID)
|
||||
highestID = customer.ID;
|
||||
|
||||
ID = highestID + 1;
|
||||
}
|
||||
|
||||
public string name { get; set; } = "";
|
||||
public string description { get; set; } = "";
|
||||
public string sender_address { get; set; } = "";
|
||||
public AddressPatch patch { get; set; }
|
||||
public char separator { get; set; } = ',';
|
||||
public int ID { get; }
|
||||
|
||||
|
||||
public static int GetIDByCustomerListItem(string item_content)
|
||||
{
|
||||
var id = item_content.Split(" - ")[0];
|
||||
return int.Parse(id);
|
||||
}
|
||||
}
|
||||
|
||||
public class AddressSets
|
||||
{
|
||||
public List<KasAddressList> addresses = new();
|
||||
|
||||
public KasAddressList GetAddressSetByID(int ID)
|
||||
{
|
||||
foreach (var i in addresses)
|
||||
if (i.ID == ID)
|
||||
return i;
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class Country
|
||||
{
|
||||
public Country(string name, string translation, List<string> alternatives)
|
||||
{
|
||||
this.name = name;
|
||||
this.translation = translation;
|
||||
this.alternatives = alternatives;
|
||||
}
|
||||
|
||||
public Country(string name)
|
||||
{
|
||||
this.name = name;
|
||||
translation = "";
|
||||
alternatives = new List<string>();
|
||||
}
|
||||
|
||||
public Country()
|
||||
{
|
||||
}
|
||||
|
||||
public string? name { get; set; }
|
||||
public string translation { get; set; }
|
||||
public List<string> alternatives { get; set; }
|
||||
|
||||
public static Country GetByName(string name)
|
||||
{
|
||||
foreach (var country in Global._instance.countries)
|
||||
if (country.name == name)
|
||||
return country;
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user