diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs
index d56280f..73832a0 100644
--- a/Elwig/App.xaml.cs
+++ b/Elwig/App.xaml.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.Configuration;
using System.Data;
using System.Linq;
-using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;
@@ -12,16 +9,27 @@ using Elwig.Helpers;
namespace Elwig {
public partial class App : Application {
+ public static readonly string DataPath = @"C:\ProgramData\Elwig\";
+ public static readonly string ExePath = @"C:\Program Files\Elwig\";
+ public static readonly Config Config = new(DataPath + "config.ini");
+
public static bool IsPrintingReady => Documents.Html.IsReady && Documents.Pdf.IsReady;
public static System.Windows.Threading.Dispatcher MainDispatcher { get; private set; }
public App() : base() {
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), "Elwig"));
+ Directory.CreateDirectory(DataPath);
MainDispatcher = Dispatcher;
}
protected override void OnStartup(StartupEventArgs evt) {
+ using (var ctx = new AppDbContext()) {
+ if (!ctx.Database.CanConnect()) {
+ MessageBox.Show($"Invalid Database:\n\n{Config.DatabasePath}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error);
+ Shutdown();
+ }
+ }
Utils.RunBackground("HTML Initialization", () => Documents.Html.Init(PrintingReadyChanged));
Utils.RunBackground("PDF Initialization", () => Documents.Pdf.Init(PrintingReadyChanged));
base.OnStartup(evt);
diff --git a/Elwig/Documents/Html.cs b/Elwig/Documents/Html.cs
index f93c9b8..fae40f8 100644
--- a/Elwig/Documents/Html.cs
+++ b/Elwig/Documents/Html.cs
@@ -8,6 +8,7 @@ using System.Threading.Tasks;
namespace Elwig.Documents {
public static class Html {
+
private static RazorLightEngine? Engine = null;
public static bool IsReady => Engine != null;
diff --git a/Elwig/Documents/Pdf.cs b/Elwig/Documents/Pdf.cs
index 9983cb1..a9432df 100644
--- a/Elwig/Documents/Pdf.cs
+++ b/Elwig/Documents/Pdf.cs
@@ -18,14 +18,14 @@ using Elwig.Windows;
namespace Elwig.Documents {
public static class Pdf {
- private static readonly string CHROMIUM = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
+ private static readonly string Chromium = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
private static IBrowser? Browser = null;
public static bool IsReady => Browser != null;
public static async Task Init(Action evtHandler) {
Browser = await Puppeteer.LaunchAsync(new LaunchOptions {
Headless = true,
- ExecutablePath = CHROMIUM,
+ ExecutablePath = Chromium,
});
evtHandler();
}
diff --git a/Elwig/Elwig.csproj b/Elwig/Elwig.csproj
index dbaf881..14aa95f 100644
--- a/Elwig/Elwig.csproj
+++ b/Elwig/Elwig.csproj
@@ -14,15 +14,15 @@
+
-
-
-
-
-
+
+
+
+
-
+
diff --git a/Elwig/Helpers/AppDbContext.cs b/Elwig/Helpers/AppDbContext.cs
index 3b392f3..bf0fb46 100644
--- a/Elwig/Helpers/AppDbContext.cs
+++ b/Elwig/Helpers/AppDbContext.cs
@@ -3,6 +3,7 @@ using Elwig.Models;
namespace Elwig.Helpers {
public class AppDbContext : DbContext {
+
public DbSet Countries { get; set; }
public DbSet Members { get; set; }
public DbSet BillingAddresses { get; set; }
@@ -22,7 +23,7 @@ namespace Elwig.Helpers {
public DbSet WineVarieties { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
- optionsBuilder.UseSqlite("Data Source=\"C:\\Users\\lorenz\\Desktop\\wgprod.sqlite3\"; foreign keys=true");
+ optionsBuilder.UseSqlite($"Data Source=\"{App.Config.DatabasePath}\"; Foreign Keys=True; Mode=ReadWrite; Cache=Default");
optionsBuilder.UseLazyLoadingProxies();
base.OnConfiguring(optionsBuilder);
}
diff --git a/Elwig/Helpers/Config.cs b/Elwig/Helpers/Config.cs
new file mode 100644
index 0000000..6d67c95
--- /dev/null
+++ b/Elwig/Helpers/Config.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Text;
+using IniParser;
+using IniParser.Model;
+
+namespace Elwig.Helpers {
+ public class Config {
+
+ private readonly string FileName;
+ public string DatabasePath;
+
+ public Config(string filename) {
+ FileName = filename;
+ Read();
+ }
+
+ public void Read() {
+ var parser = new FileIniDataParser();
+ IniData? ini = null;
+ try {
+ ini = parser.ReadFile(FileName, Encoding.UTF8);
+ } catch {}
+
+ if (ini == null || !ini.TryGetKey("database.path", out string db)) {
+ DatabasePath = App.DataPath + "database.sqlite3";
+ } else if (db.Length > 1 && db[1] == ':') {
+ DatabasePath = db;
+ } else {
+ DatabasePath = App.DataPath + db;
+ }
+ }
+
+ public void Write() {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Elwig/Windows/MainWindow.xaml.cs b/Elwig/Windows/MainWindow.xaml.cs
index 19ddd33..3cf6b4e 100644
--- a/Elwig/Windows/MainWindow.xaml.cs
+++ b/Elwig/Windows/MainWindow.xaml.cs
@@ -19,7 +19,6 @@ namespace Elwig.Windows {
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
- Context.Countries.Load();
Button4.IsEnabled = App.IsPrintingReady;
}
diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs
index 9c1c979..37866f5 100644
--- a/Elwig/Windows/MemberAdminWindow.xaml.cs
+++ b/Elwig/Windows/MemberAdminWindow.xaml.cs
@@ -1,5 +1,4 @@
using Microsoft.EntityFrameworkCore;
-using ModernWpf.Controls;
using System;
using System.Collections.Generic;
using System.ComponentModel;