Compare commits
6 Commits
b184d5661b
...
main
Author | SHA1 | Date | |
---|---|---|---|
4653a4f129 | |||
07f9a0f522 | |||
7e21d9e2e4 | |||
4e2eca295d | |||
1f165055c1 | |||
7b953fa73e |
24
CHANGELOG.md
24
CHANGELOG.md
@@ -2,6 +2,26 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
[v1.0.0.3][v1.0.0.3] (2025-08-11) {#v1.0.0.3}
|
||||
---------------------------------------------
|
||||
|
||||
### Neue Funktionen {#v1.0.0.3-features}
|
||||
|
||||
* Im Haupt-Fenster (`MainWindow`) ist es nun möglich die gesamte Datenbank zu hochzuladen bzw. herunterzuladen. ([#69][i69])
|
||||
|
||||
### Sonstiges {#v1.0.0.3-misc}
|
||||
|
||||
* Die Intigrität von Elwig-Export-Dateien (`.elwig.zip`) und anderen `.zip` Dateien wir nun überprüft. (d3157e4d48)
|
||||
* Die Herkunftshierarchie wird nun auch automatisch synchronisiert (benötigt für Stamm-KG bei Mitglied, Ried/KG bei Flächenbindung, und Herkunft bei Lieferung). ([#70][i70], b6c03892b1)
|
||||
* Abhängigkeiten aktualisiert. (1f165055c1, 4e2eca295d)
|
||||
|
||||
[v1.0.0.3]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.0.3
|
||||
[i69]: https://git.necronda.net/winzer/elwig/issues/69
|
||||
[i70]: https://git.necronda.net/winzer/elwig/issues/70
|
||||
|
||||
|
||||
|
||||
|
||||
[v1.0.0.2][v1.0.0.2] (2025-08-05) {#v1.0.0.2}
|
||||
---------------------------------------------
|
||||
|
||||
@@ -9,6 +29,8 @@ Changelog
|
||||
|
||||
* Explizit native SQLite-Bibliothek hinzugefügt. (77c3f388e7)
|
||||
|
||||
[v1.0.0.2]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.0.2
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -20,6 +42,8 @@ Changelog
|
||||
* Abhängigkeiten aktualisiert. (466c8a322c)
|
||||
* Angepasste Fehlermeldung, wenn Importieren fehlschlägt. (ab7c7404e2)
|
||||
|
||||
[v1.0.0.1]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.0.1
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<UseWPF>true</UseWPF>
|
||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||
<Version>1.0.0.2</Version>
|
||||
<Version>1.0.0.3</Version>
|
||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
@@ -28,13 +28,13 @@
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.8" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="9.0.8" />
|
||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3351.48" />
|
||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3405.78" />
|
||||
<PackageReference Include="NJsonSchema" Version="11.4.0" />
|
||||
<PackageReference Include="PdfiumViewer" Version="2.13.0" />
|
||||
<PackageReference Include="PdfiumViewer.Native.x86_64.no_v8-no_xfa" Version="2018.4.8.256" />
|
||||
<PackageReference Include="RazorLight" Version="2.3.1" />
|
||||
<PackageReference Include="ScottPlot.WPF" Version="5.0.55" />
|
||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.0" />
|
||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.1" />
|
||||
<PackageReference Include="System.IO.Hashing" Version="9.0.8" />
|
||||
<PackageReference Include="System.IO.Ports" Version="9.0.8" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.8" />
|
||||
|
@@ -498,10 +498,7 @@ namespace Elwig.Helpers {
|
||||
public static async Task<bool> SendEmail(Member member, string subject, string text, IEnumerable<Document> docs) {
|
||||
if (App.Config.Smtp == null)
|
||||
return false;
|
||||
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
|
||||
var success = await Task.Run(async () => {
|
||||
return await Task.Run(async () => {
|
||||
SmtpClient? client = null;
|
||||
try {
|
||||
client = await GetSmtpClient();
|
||||
@@ -529,18 +526,15 @@ namespace Elwig.Helpers {
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
Mouse.OverrideCursor = null;
|
||||
return success;
|
||||
}
|
||||
|
||||
public static async Task ExportDocument(Document doc, ExportMode mode, string? filename = null, (Member, string, string)? emailData = null) {
|
||||
public static async Task ExportDocument(Document doc, ExportMode mode, string? filename = null, (Member Member, string Subject, string Text)? emailData = null) {
|
||||
if (mode == ExportMode.Print && !App.Config.Debug) {
|
||||
await doc.Generate();
|
||||
await doc.Print();
|
||||
} else if (mode == ExportMode.Email && emailData is (Member, string, string) e) {
|
||||
await doc.Generate();
|
||||
var success = await SendEmail(e.Item1, e.Item2, e.Item3, [doc]);
|
||||
var success = await SendEmail(e.Member, e.Subject, e.Text, [doc]);
|
||||
if (success)
|
||||
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
|
||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
@@ -567,9 +561,7 @@ namespace Elwig.Helpers {
|
||||
Log = "Application",
|
||||
Source = ".NET Runtime",
|
||||
};
|
||||
return log.Entries.Cast<EventLogEntry>()
|
||||
.Where(e => e.Message.StartsWith("Application: Elwig.exe"))
|
||||
.ToList();
|
||||
return [.. log.Entries.OfType<EventLogEntry>().Where(e => e.InstanceId == 1026).Where(e => e.Message.StartsWith("Application: Elwig.exe"))];
|
||||
}
|
||||
|
||||
public static int GetEntityIdetifierForPk(params object?[] primaryKey) {
|
||||
|
@@ -731,6 +731,7 @@ namespace Elwig.Services {
|
||||
.Select(p => p.Delivery)
|
||||
.Distinct()
|
||||
.Include(d => d.Parts).ThenInclude(p => p.PartModifiers)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.Rd)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.Kg!.Gl)
|
||||
.AsSplitQuery()
|
||||
.ToListAsync();
|
||||
@@ -758,6 +759,7 @@ namespace Elwig.Services {
|
||||
.Select(p => p.Delivery)
|
||||
.Distinct()
|
||||
.Include(d => d.Parts).ThenInclude(p => p.PartModifiers)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.Rd)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.Kg!.Gl)
|
||||
.AsSplitQuery()
|
||||
.ToListAsync();
|
||||
|
@@ -1,7 +1,9 @@
|
||||
using Elwig.Helpers;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace Elwig.Windows {
|
||||
public partial class LogWindow : Window {
|
||||
@@ -11,28 +13,34 @@ namespace Elwig.Windows {
|
||||
WindowState = WindowState.Maximized;
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
var log = Utils.GetLogEntries();
|
||||
EventList.ItemsSource = log
|
||||
.Select(e => new {
|
||||
Event = e,
|
||||
Lines = e.Message.Split('\n').ToArray(),
|
||||
})
|
||||
.Select(e => new {
|
||||
e.Event,
|
||||
Exception = e.Lines.FirstOrDefault(l => l.StartsWith("Exception Info: "))?[16..].Trim().Split(':', 2),
|
||||
Location = e.Lines.FirstOrDefault(l => l.StartsWith(" at Elwig."))?[5..].Trim(),
|
||||
})
|
||||
.Select(e => new {
|
||||
e.Event,
|
||||
e.Exception,
|
||||
ExceptionName = e.Exception?[0].Trim(),
|
||||
ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null,
|
||||
e.Location,
|
||||
})
|
||||
.OrderByDescending(e => e.Event.TimeGenerated)
|
||||
.ToList();
|
||||
EventList.SelectedIndex = 0;
|
||||
private async void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
var list = Utils.GetLogEntries()
|
||||
.Select(e => new {
|
||||
Event = e,
|
||||
Lines = e.Message.Split('\n').ToArray(),
|
||||
})
|
||||
.Select(e => new {
|
||||
e.Event,
|
||||
Exception = e.Lines.FirstOrDefault(l => l.StartsWith("Exception Info: "))?[16..].Trim().Split(':', 2),
|
||||
Location = e.Lines.FirstOrDefault(l => l.StartsWith(" at Elwig."))?[5..].Trim(),
|
||||
})
|
||||
.Select(e => new {
|
||||
e.Event,
|
||||
e.Exception,
|
||||
ExceptionName = e.Exception?[0].Trim(),
|
||||
ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null,
|
||||
e.Location,
|
||||
})
|
||||
.OrderByDescending(e => e.Event.TimeGenerated)
|
||||
.ToList();
|
||||
await App.MainDispatcher.BeginInvoke(() => {
|
||||
EventList.ItemsSource = list;
|
||||
EventList.SelectedIndex = 0;
|
||||
});
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
private void EventList_SelectionChanged(object sender, RoutedEventArgs evt) {
|
||||
|
@@ -22,9 +22,9 @@
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
<PackageReference Include="Appium.WebDriver" Version="4.4.5" />
|
||||
<PackageReference Include="NReco.PdfRenderer" Version="1.6.0" />
|
||||
<PackageReference Include="NUnit" Version="4.3.2" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.9.2">
|
||||
<PackageReference Include="NUnit" Version="4.4.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="5.1.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.10.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
Reference in New Issue
Block a user