Compare commits
3 Commits
4e2eca295d
...
main
Author | SHA1 | Date | |
---|---|---|---|
4653a4f129 | |||
07f9a0f522 | |||
7e21d9e2e4 |
24
CHANGELOG.md
24
CHANGELOG.md
@@ -2,6 +2,26 @@
|
|||||||
Changelog
|
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}
|
[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)
|
* 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)
|
* Abhängigkeiten aktualisiert. (466c8a322c)
|
||||||
* Angepasste Fehlermeldung, wenn Importieren fehlschlägt. (ab7c7404e2)
|
* 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>
|
<UseWPF>true</UseWPF>
|
||||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||||
<Version>1.0.0.2</Version>
|
<Version>1.0.0.3</Version>
|
||||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
@@ -498,10 +498,7 @@ namespace Elwig.Helpers {
|
|||||||
public static async Task<bool> SendEmail(Member member, string subject, string text, IEnumerable<Document> docs) {
|
public static async Task<bool> SendEmail(Member member, string subject, string text, IEnumerable<Document> docs) {
|
||||||
if (App.Config.Smtp == null)
|
if (App.Config.Smtp == null)
|
||||||
return false;
|
return false;
|
||||||
|
return await Task.Run(async () => {
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
|
||||||
|
|
||||||
var success = await Task.Run(async () => {
|
|
||||||
SmtpClient? client = null;
|
SmtpClient? client = null;
|
||||||
try {
|
try {
|
||||||
client = await GetSmtpClient();
|
client = await GetSmtpClient();
|
||||||
@@ -529,18 +526,15 @@ namespace Elwig.Helpers {
|
|||||||
}
|
}
|
||||||
return true;
|
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) {
|
if (mode == ExportMode.Print && !App.Config.Debug) {
|
||||||
await doc.Generate();
|
await doc.Generate();
|
||||||
await doc.Print();
|
await doc.Print();
|
||||||
} else if (mode == ExportMode.Email && emailData is (Member, string, string) e) {
|
} else if (mode == ExportMode.Email && emailData is (Member, string, string) e) {
|
||||||
await doc.Generate();
|
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)
|
if (success)
|
||||||
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
|
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
@@ -567,9 +561,7 @@ namespace Elwig.Helpers {
|
|||||||
Log = "Application",
|
Log = "Application",
|
||||||
Source = ".NET Runtime",
|
Source = ".NET Runtime",
|
||||||
};
|
};
|
||||||
return log.Entries.Cast<EventLogEntry>()
|
return [.. log.Entries.OfType<EventLogEntry>().Where(e => e.InstanceId == 1026).Where(e => e.Message.StartsWith("Application: Elwig.exe"))];
|
||||||
.Where(e => e.Message.StartsWith("Application: Elwig.exe"))
|
|
||||||
.ToList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetEntityIdetifierForPk(params object?[] primaryKey) {
|
public static int GetEntityIdetifierForPk(params object?[] primaryKey) {
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace Elwig.Windows {
|
namespace Elwig.Windows {
|
||||||
public partial class LogWindow : Window {
|
public partial class LogWindow : Window {
|
||||||
@@ -11,28 +13,34 @@ namespace Elwig.Windows {
|
|||||||
WindowState = WindowState.Maximized;
|
WindowState = WindowState.Maximized;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
private async void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||||
var log = Utils.GetLogEntries();
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
EventList.ItemsSource = log
|
await Task.Run(async () => {
|
||||||
.Select(e => new {
|
var list = Utils.GetLogEntries()
|
||||||
Event = e,
|
.Select(e => new {
|
||||||
Lines = e.Message.Split('\n').ToArray(),
|
Event = e,
|
||||||
})
|
Lines = e.Message.Split('\n').ToArray(),
|
||||||
.Select(e => new {
|
})
|
||||||
e.Event,
|
.Select(e => new {
|
||||||
Exception = e.Lines.FirstOrDefault(l => l.StartsWith("Exception Info: "))?[16..].Trim().Split(':', 2),
|
e.Event,
|
||||||
Location = e.Lines.FirstOrDefault(l => l.StartsWith(" at Elwig."))?[5..].Trim(),
|
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,
|
.Select(e => new {
|
||||||
e.Exception,
|
e.Event,
|
||||||
ExceptionName = e.Exception?[0].Trim(),
|
e.Exception,
|
||||||
ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null,
|
ExceptionName = e.Exception?[0].Trim(),
|
||||||
e.Location,
|
ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null,
|
||||||
})
|
e.Location,
|
||||||
.OrderByDescending(e => e.Event.TimeGenerated)
|
})
|
||||||
.ToList();
|
.OrderByDescending(e => e.Event.TimeGenerated)
|
||||||
EventList.SelectedIndex = 0;
|
.ToList();
|
||||||
|
await App.MainDispatcher.BeginInvoke(() => {
|
||||||
|
EventList.ItemsSource = list;
|
||||||
|
EventList.SelectedIndex = 0;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EventList_SelectionChanged(object sender, RoutedEventArgs evt) {
|
private void EventList_SelectionChanged(object sender, RoutedEventArgs evt) {
|
||||||
|
Reference in New Issue
Block a user