Elwig: Add InteractionService to centrally manage MessageBox and SaveFileDialogs
Test / Run tests (push) Successful in 2m50s
Test / Run tests (push) Successful in 2m50s
This commit is contained in:
+18
-21
@@ -5,6 +5,7 @@ using Elwig.Helpers.Export;
|
|||||||
using Elwig.Helpers.Printing;
|
using Elwig.Helpers.Printing;
|
||||||
using Elwig.Helpers.Weighing;
|
using Elwig.Helpers.Weighing;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Elwig.Windows;
|
using Elwig.Windows;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
@@ -91,11 +92,11 @@ namespace Elwig {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await AppDbUpdater.CheckDb();
|
await AppDbUpdater.CheckDb();
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
if (Config.UpdateUrl != null && Utils.HasInternetConnectivity()) {
|
if (Config.UpdateUrl != null && Utils.HasInternetConnectivity()) {
|
||||||
await CheckForUpdates();
|
await CheckForUpdates();
|
||||||
}
|
}
|
||||||
MessageBox.Show($"Invalid Database:\n\n{e.Message}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Fehlerhafte Datenbank", "Fehlerhafte Datenbank", exc);
|
||||||
Shutdown();
|
Shutdown();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -110,8 +111,8 @@ namespace Elwig {
|
|||||||
.GetAwaiter().GetResult();
|
.GetAwaiter().GetResult();
|
||||||
try {
|
try {
|
||||||
Client = new(ctx);
|
Client = new(ctx);
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show($"Fehler beim Laden der Mandantendaten:\n\n{e.Message}", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Fehler", "Fehler beim Laden der Mandantendaten", exc);
|
||||||
Shutdown();
|
Shutdown();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -145,18 +146,17 @@ namespace Elwig {
|
|||||||
foreach (var s in Config.Scales) {
|
foreach (var s in Config.Scales) {
|
||||||
try {
|
try {
|
||||||
list.Add(Scale.FromConfig(s));
|
list.Add(Scale.FromConfig(s));
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
list.Add(new InvalidScale(s.Id));
|
list.Add(new InvalidScale(s.Id));
|
||||||
if (s.Required)
|
if (s.Required)
|
||||||
MessageBox.Show($"Verbindung zu Waage {s.Id} konnte nicht hergestellt werden:\n\n{e.Message}", "Waagenfehler",
|
InteractionService.ShowException("Waagenfehler", $"Verbindung zu Waage {s.Id} konnte nicht hergestellt werden", exc);
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Scales = list;
|
Scales = list;
|
||||||
|
|
||||||
if (Config.Branch != null) {
|
if (Config.Branch != null) {
|
||||||
if (!branches.ContainsKey(Config.Branch.ToLower())) {
|
if (!branches.ContainsKey(Config.Branch.ToLower())) {
|
||||||
MessageBox.Show("Ungültige Zweigstelle in Konfigurationsdatei!", "Ungültige Zweigstelle", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowError("Ungültige Zweigstelle", "Ungültige Zweigstelle in Konfigurationsdatei!");
|
||||||
Shutdown();
|
Shutdown();
|
||||||
} else {
|
} else {
|
||||||
SetBranch(branches[Config.Branch.ToLower()]);
|
SetBranch(branches[Config.Branch.ToLower()]);
|
||||||
@@ -164,7 +164,7 @@ namespace Elwig {
|
|||||||
} else if (branches.Count == 1) {
|
} else if (branches.Count == 1) {
|
||||||
SetBranch(branches.First().Value);
|
SetBranch(branches.First().Value);
|
||||||
} else {
|
} else {
|
||||||
MessageBox.Show("Erkennen der lokalen Zweigstelle nicht möglich!", "Ungültige Zweigstelle", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowError("Ungültige Zweigstelle", "Erkennen der lokalen Zweigstelle nicht möglich!");
|
||||||
Shutdown();
|
Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,14 +254,13 @@ namespace Elwig {
|
|||||||
if (Scales[i] is InvalidScale) {
|
if (Scales[i] is InvalidScale) {
|
||||||
try {
|
try {
|
||||||
Scales[i] = Scale.FromConfig(s);
|
Scales[i] = Scale.FromConfig(s);
|
||||||
MessageBox.Show($"Verbindung zu Waage {s.Id} wieder hergestellt!", $"Waage {s.Id}", MessageBoxButton.OK, MessageBoxImage.Information);
|
InteractionService.ShowInformation($"Waage {s.Id}", $"Verbindung zu Waage {s.Id} wieder hergestellt!");
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
Scales[i] = new InvalidScale(s.Id);
|
Scales[i] = new InvalidScale(s.Id);
|
||||||
MessageBox.Show($"Verbindung zu Waage {s.Id} konnte nicht hergestellt werden:\n\n{e.Message}", "Waagenfehler",
|
InteractionService.ShowException("Waagenfehler", $"Verbindung zu Waage {s.Id} konnte nicht hergestellt werden", exc);
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
} else if (Scales[i] is IEventScale) {
|
} else if (Scales[i] is IEventScale) {
|
||||||
MessageBox.Show($"Verbindung zu Waage {s.Id} wieder hergestellt!", $"Waage {s.Id}", MessageBoxButton.OK, MessageBoxImage.Information);
|
InteractionService.ShowInformation($"Waage {s.Id}", $"Verbindung zu Waage {s.Id} wieder hergestellt!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -272,7 +271,7 @@ namespace Elwig {
|
|||||||
for (var i = 0; i < Config.Scales.Count; i++) {
|
for (var i = 0; i < Config.Scales.Count; i++) {
|
||||||
var s = Config.Scales[i];
|
var s = Config.Scales[i];
|
||||||
if ((s.Connection?.StartsWith($"serial://{name}:") ?? false) && Scales[i] is not InvalidScale) {
|
if ((s.Connection?.StartsWith($"serial://{name}:") ?? false) && Scales[i] is not InvalidScale) {
|
||||||
MessageBox.Show($"Verbindung zu Waage {s.Id} unterbrochen!", $"Waagen {s.Id}", MessageBoxButton.OK, MessageBoxImage.Warning);
|
InteractionService.ShowWarning($"Waagen {s.Id}", $"Verbindung zu Waage {s.Id} unterbrochen!");
|
||||||
if (Scales[i] is ICommandScale) {
|
if (Scales[i] is ICommandScale) {
|
||||||
try {
|
try {
|
||||||
Scales[i].Dispose();
|
Scales[i].Dispose();
|
||||||
@@ -307,11 +306,9 @@ namespace Elwig {
|
|||||||
});
|
});
|
||||||
} else if (showAlert) {
|
} else if (showAlert) {
|
||||||
if (latest == null) {
|
if (latest == null) {
|
||||||
MessageBox.Show("Informationen konnten nicht abgerufen werden!", "Nach Updates suchen",
|
InteractionService.ShowError("Nach Updates suchen", "Informationen konnten nicht abgerufen werden!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
} else {
|
} else {
|
||||||
MessageBox.Show($"Elwig ist auf dem aktuellsten Stand! (Version: {latest.Value.Version})", "Nach Updates suchen",
|
InteractionService.ShowInformation("Nach Updates suchen", $"Elwig ist auf dem aktuellsten Stand! (Version: {latest.Value.Version})");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -321,11 +318,11 @@ namespace Elwig {
|
|||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
await Database.Import(filename);
|
await Database.Import(filename);
|
||||||
});
|
});
|
||||||
MessageBox.Show("Das Ersetzen war erfolgreich!\n\nBitte starten Sie Elwig neu!", "Datenbank ersetzen", MessageBoxButton.OK, MessageBoxImage.Information);
|
InteractionService.ShowInformation("Datenbank ersetzen", "Das Ersetzen war erfolgreich!\n\nBitte starten Sie Elwig neu!");
|
||||||
ForceShutdown = true;
|
ForceShutdown = true;
|
||||||
Current.Shutdown();
|
Current.Shutdown();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show("Fehler beim Ersetzen:\n\n" + exc.Message, "Datenbank ersetzen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank ersetzen", "Fehler beim Ersetzen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
|
using Elwig.Services;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -51,7 +52,7 @@ namespace Elwig.Dialogs {
|
|||||||
File.Delete(fileName);
|
File.Delete(fileName);
|
||||||
return;
|
return;
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Process.Start(fileName);
|
Process.Start(fileName);
|
||||||
DialogResult = true;
|
DialogResult = true;
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
using Elwig.Models.Dtos;
|
using Elwig.Models.Dtos;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Microsoft.Data.Sqlite;
|
using Microsoft.Data.Sqlite;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using ScottPlot.TickGenerators.Financial;
|
|
||||||
using ScottPlot.TickGenerators.TimeUnits;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
@@ -12,8 +11,6 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Media.Converters;
|
|
||||||
|
|
||||||
namespace Elwig.Helpers {
|
namespace Elwig.Helpers {
|
||||||
|
|
||||||
@@ -162,8 +159,8 @@ namespace Elwig.Helpers {
|
|||||||
LogFile = new(file) {
|
LogFile = new(file) {
|
||||||
AutoFlush = true
|
AutoFlush = true
|
||||||
};
|
};
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show($"Unable to open database log file:\n\n{e.Message}", "Database Log", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Database Log", $"Unable to open database log file", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SavedLastWriteTime = LastWriteTime;
|
SavedLastWriteTime = LastWriteTime;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -8,7 +9,6 @@ using System.IO.Compression;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Elwig.Helpers.Export {
|
namespace Elwig.Helpers.Export {
|
||||||
public static class ElwigData {
|
public static class ElwigData {
|
||||||
@@ -208,16 +208,11 @@ namespace Elwig.Helpers.Export {
|
|||||||
exc is FileNotFoundException ||
|
exc is FileNotFoundException ||
|
||||||
exc is IOException) {
|
exc is IOException) {
|
||||||
data.RemoveAt(data.Count - 1);
|
data.RemoveAt(data.Count - 1);
|
||||||
var str = $"Die Elwig-Export-Datei '{Path.GetFileName(filename)}' konnte nicht verarbeitet werden und wird übersprungen.\n\n" + exc.Message;
|
InteractionService.ShowException("Fehler beim Importieren", $"Die Elwig-Export-Datei '{Path.GetFileName(filename)}' konnte nicht verarbeitet werden und wird übersprungen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Fehler beim Importieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
await AddImportedFiles(Path.GetFileName(filename));
|
await AddImportedFiles(Path.GetFileName(filename));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
data.RemoveAt(data.Count - 1);
|
data.RemoveAt(data.Count - 1);
|
||||||
var str = $"Die Elwig-Export-Datei '{Path.GetFileName(filename)}' konnte nicht verarbeitet werden. Soll sie in Zukunft übersprungen werden?\n\n" + exc.Message;
|
if (InteractionService.AskException("Fehler beim Importieren", $"Die Elwig-Export-Datei '{Path.GetFileName(filename)}' konnte nicht verarbeitet werden. Soll sie in Zukunft übersprungen werden?", exc)) {
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
var r = MessageBox.Show(str, "Fehler beim Importieren", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.No);
|
|
||||||
if (r == MessageBoxResult.Yes) {
|
|
||||||
await AddImportedFiles(Path.GetFileName(filename));
|
await AddImportedFiles(Path.GetFileName(filename));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -411,7 +406,7 @@ namespace Elwig.Helpers.Export {
|
|||||||
}
|
}
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
|
|
||||||
MessageBox.Show(
|
InteractionService.ShowInformation("Importieren erfolgreich",
|
||||||
$"Das importieren der Daten war erfolgreich!\n" +
|
$"Das importieren der Daten war erfolgreich!\n" +
|
||||||
$"Folgendes wurde importiert:\n" +
|
$"Folgendes wurde importiert:\n" +
|
||||||
string.Join("\n", [
|
string.Join("\n", [
|
||||||
@@ -433,25 +428,18 @@ namespace Elwig.Helpers.Export {
|
|||||||
$" ({d.New} neu, {d.Overwritten} überschr., {d.NotImported} nicht importiert)\n" +
|
$" ({d.New} neu, {d.Overwritten} überschr., {d.NotImported} nicht importiert)\n" +
|
||||||
$" Zwst.: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" +
|
$" Zwst.: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" +
|
||||||
$" Filter: {d.Filters}")
|
$" Filter: {d.Filters}")
|
||||||
]),
|
]));
|
||||||
"Importieren erfolgreich",
|
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\nEvtl. muss die Datenbank manuell auf dieses Gerät kopieren werden.\n\n" + exc.Message;
|
InteractionService.ShowException("Fehler beim Importieren", "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\nEvtl. muss die Datenbank manuell auf dieses Gerät kopieren werden", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Fehler beim Importieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
GC.Collect();
|
GC.Collect();
|
||||||
GC.WaitForPendingFinalizers();
|
GC.WaitForPendingFinalizers();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool ImportQuestion(string branch, string device, string subject, bool duplicate, int number) {
|
private static bool ImportQuestion(string branch, string device, string subject, bool duplicate, int number) {
|
||||||
return MessageBox.Show(
|
return InteractionService.AskQuestion($"{subject} importieren",
|
||||||
$"Sollen {number} {(duplicate ? "" : "neue ")}{subject} durch die Zweigstelle\n" +
|
$"Sollen {number} {(duplicate ? "" : "neue ")}{subject} durch die Zweigstelle\n" +
|
||||||
$"{branch} (Gerät {device}) {(duplicate ? "überschrieben" : "importiert")} werden?",
|
$"{branch} (Gerät {device}) {(duplicate ? "überschrieben" : "importiert")} werden?", true);
|
||||||
$"{subject} importieren",
|
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes
|
|
||||||
) == MessageBoxResult.Yes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<WbKg> wbKgs, IEnumerable<string> filters) {
|
public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<WbKg> wbKgs, IEnumerable<string> filters) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
using Elwig.Services;
|
||||||
using Elwig.Windows;
|
using Elwig.Windows;
|
||||||
using System;
|
using System;
|
||||||
using System.Drawing.Printing;
|
using System.Drawing.Printing;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Elwig.Helpers.Printing {
|
namespace Elwig.Helpers.Printing {
|
||||||
public static class Pdf {
|
public static class Pdf {
|
||||||
@@ -46,8 +46,8 @@ namespace Elwig.Helpers.Printing {
|
|||||||
PrinterSettings = settings,
|
PrinterSettings = settings,
|
||||||
};
|
};
|
||||||
printDoc.Print();
|
printDoc.Print();
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show("Beim Drucken ist ein Fehler aufgetreten:\n\n" + e.Message, "Fehler beim Drucken", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Fehler beim Drucken", "Beim Drucken ist ein Fehler aufgetreten", exc);
|
||||||
}
|
}
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-21
@@ -3,12 +3,12 @@ using Elwig.Documents;
|
|||||||
using Elwig.Helpers.Billing;
|
using Elwig.Helpers.Billing;
|
||||||
using Elwig.Models;
|
using Elwig.Models;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using iText.Layout.Element;
|
using iText.Layout.Element;
|
||||||
using LinqKit;
|
using LinqKit;
|
||||||
using MailKit.Net.Smtp;
|
using MailKit.Net.Smtp;
|
||||||
using MailKit.Security;
|
using MailKit.Security;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Win32;
|
|
||||||
using MimeKit;
|
using MimeKit;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
@@ -213,8 +213,8 @@ namespace Elwig.Helpers {
|
|||||||
Task.Run(async () => {
|
Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
await a();
|
await a();
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(e.ToString(), title, MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(title, exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -537,7 +537,7 @@ namespace Elwig.Helpers {
|
|||||||
subject, docs.Select(d => d.Title).ToArray()
|
subject, docs.Select(d => d.Title).ToArray()
|
||||||
)]);
|
)]);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
if (client != null)
|
if (client != null)
|
||||||
@@ -551,8 +551,7 @@ namespace Elwig.Helpers {
|
|||||||
public static async Task ExportDocument(Document doc, ExportMode mode, string? filename = null, (Member Member, string Subject, string Text)? 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) {
|
||||||
if (doc.IsPreview) {
|
if (doc.IsPreview) {
|
||||||
MessageBox.Show("Dieses Dokument ist als vorläufig markiert und kann daher nicht ausgedruckt werden!",
|
InteractionService.ShowError("Vorläufiges Dokument", "Dieses Dokument ist als vorläufig markiert und kann daher nicht ausgedruckt werden!");
|
||||||
"Vorläufiges Dokument", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
@@ -561,8 +560,7 @@ namespace Elwig.Helpers {
|
|||||||
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) {
|
||||||
if (doc.IsPreview) {
|
if (doc.IsPreview) {
|
||||||
MessageBox.Show("Dieses Dokument ist als vorläufig markiert und kann daher nicht verschickt werden!",
|
InteractionService.ShowError("Vorläufiges Dokument", "Dieses Dokument ist als vorläufig markiert und kann daher nicht verschickt werden!");
|
||||||
"Vorläufiges Dokument", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
@@ -570,25 +568,18 @@ namespace Elwig.Helpers {
|
|||||||
}
|
}
|
||||||
var success = await SendEmail(e.Member, e.Subject, e.Text, [doc]);
|
var success = await SendEmail(e.Member, e.Subject, e.Text, [doc]);
|
||||||
if (success)
|
if (success)
|
||||||
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!\n\nEs kann einige Minuten dauern, bis die E-Mail im Posteingang des Empfängers aufscheint.", "E-Mail verschickt",
|
InteractionService.ShowInformation("E-Mail verschickt", "Die E-Mail wurde erfolgreich verschickt!\n\nEs kann einige Minuten dauern, bis die E-Mail im Posteingang des Empfängers aufscheint.");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
} else if (mode == ExportMode.SavePdf) {
|
} else if (mode == ExportMode.SavePdf) {
|
||||||
if (doc.IsPreview) {
|
if (doc.IsPreview) {
|
||||||
MessageBox.Show("Dieses Dokument ist als vorläufig markiert und sollte daher nicht langfristig gespeichert werden!",
|
InteractionService.ShowWarning("Vorläufiges Dokument", "Dieses Dokument ist als vorläufig markiert und sollte daher nicht langfristig gespeichert werden!");
|
||||||
"Vorläufiges Dokument", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
||||||
}
|
}
|
||||||
var d = new SaveFileDialog() {
|
filename = InteractionService.SaveFile(doc.Title, NormalizeFileName(filename ?? doc.Title), "pdf");
|
||||||
FileName = $"{NormalizeFileName(filename ?? doc.Title)}.pdf",
|
if (filename != null) {
|
||||||
DefaultExt = "pdf",
|
|
||||||
Filter = "PDF-Datei (*.pdf)|*.pdf",
|
|
||||||
Title = $"{doc.Title} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
await doc.Generate(ctx);
|
await doc.Generate(ctx);
|
||||||
}
|
}
|
||||||
doc.SaveTo(d.FileName);
|
doc.SaveTo(filename);
|
||||||
Process.Start("explorer.exe", d.FileName);
|
Process.Start("explorer.exe", filename);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
using Elwig.Services;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Elwig.Helpers.Weighing {
|
namespace Elwig.Helpers.Weighing {
|
||||||
public class AveryEventScale : Scale, IEventScale, IDisposable {
|
public class AveryEventScale : Scale, IEventScale, IDisposable {
|
||||||
@@ -60,9 +60,8 @@ namespace Elwig.Helpers.Weighing {
|
|||||||
} catch (TimeoutException) {
|
} catch (TimeoutException) {
|
||||||
await Task.Delay(500);
|
await Task.Delay(500);
|
||||||
await Reconnect();
|
await Reconnect();
|
||||||
} catch (Exception ex) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show($"Beim Wiegen ist ein Fehler Aufgetreten:\n\n{ex.Message} ({ex.GetType().Name})", "Waagenfehler",
|
InteractionService.ShowException("Waagenfehler", "Beim Wiegen ist ein Fehler Aufgetreten", exc, showExcType: true);
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
using Elwig.Services;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Ports;
|
using System.IO.Ports;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Elwig.Helpers.Weighing {
|
namespace Elwig.Helpers.Weighing {
|
||||||
public abstract class Scale : IDisposable {
|
public abstract class Scale : IDisposable {
|
||||||
@@ -42,11 +42,10 @@ namespace Elwig.Helpers.Weighing {
|
|||||||
if (cnx.StartsWith("serial:")) {
|
if (cnx.StartsWith("serial:")) {
|
||||||
try {
|
try {
|
||||||
Serial = Utils.OpenSerialConnection(cnx);
|
Serial = Utils.OpenSerialConnection(cnx);
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
if (!softFail) throw;
|
if (!softFail) throw;
|
||||||
if (!failSilent)
|
if (!failSilent)
|
||||||
MessageBox.Show($"Verbindung zu Waage konnte nicht hergestellt werden:\n\n{e.Message}", "Waagenfehler",
|
InteractionService.ShowException("Waagenfehler", "Verbindung zu Waage konnte nicht hergestellt werden", exc, isError: false);
|
||||||
MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
||||||
}
|
}
|
||||||
Stream = Serial?.BaseStream ?? Stream.Null;
|
Stream = Serial?.BaseStream ?? Stream.Null;
|
||||||
} else if (cnx.StartsWith("tcp:")) {
|
} else if (cnx.StartsWith("tcp:")) {
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Elwig.Documents;
|
using Elwig.Documents;
|
||||||
using Elwig.Helpers.Export;
|
using Elwig.Helpers.Export;
|
||||||
using Elwig.Models.Dtos;
|
using Elwig.Models.Dtos;
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System;
|
using System;
|
||||||
@@ -261,21 +260,16 @@ namespace Elwig.Services {
|
|||||||
.ThenBy(a => a.Member.MgNr);
|
.ThenBy(a => a.Member.MgNr);
|
||||||
|
|
||||||
if (mode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile(DeliveryAncmtList.Name, DeliveryAncmtList.Name, "ods");
|
||||||
FileName = $"{DeliveryAncmtList.Name}.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"{DeliveryAncmtList.Name} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
var data = await DeliveryAncmtListData.FromQuery(query, filterNames);
|
var data = await DeliveryAncmtListData.FromQuery(query, filterNames);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(data);
|
await ods.AddTable(data);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -288,7 +282,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new DeliveryAncmtList(string.Join(" / ", filterNames), data);
|
using var doc = new DeliveryAncmtList(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, mode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using Elwig.Helpers.Export;
|
|||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
using Elwig.Models.Dtos;
|
using Elwig.Models.Dtos;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -733,7 +732,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = await DeliveryNote.Initialize(year, did);
|
using var doc = await DeliveryNote.Initialize(year, did);
|
||||||
await Utils.ExportDocument(doc, mode, doc.Delivery.LsNr, (doc.Member, $"{DeliveryNote.Name} Nr. {doc.Delivery.LsNr}", $"Im Anhang finden Sie den {DeliveryNote.Name} Nr. {doc.Delivery.LsNr}"));
|
await Utils.ExportDocument(doc, mode, doc.Delivery.LsNr, (doc.Member, $"{DeliveryNote.Name} Nr. {doc.Delivery.LsNr}", $"Im Anhang finden Sie den {DeliveryNote.Name} Nr. {doc.Delivery.LsNr}"));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -773,35 +772,24 @@ namespace Elwig.Services {
|
|||||||
.ThenBy(p => p.DPNr);
|
.ThenBy(p => p.DPNr);
|
||||||
|
|
||||||
if (mode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile(DeliveryJournal.Name, DeliveryJournal.Name, "ods");
|
||||||
FileName = $"{DeliveryJournal.Name}.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"{DeliveryJournal.Name} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
var data = await DeliveryJournalData.FromQuery(query, filterNames);
|
var data = await DeliveryJournalData.FromQuery(query, filterNames);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(data);
|
await ods.AddTable(data);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (mode == ExportMode.Export) {
|
} else if (mode == ExportMode.Export) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile(DeliveryJournal.Name, subject == ExportSubject.Selected ? $"Lieferung_{vm.SelectedDelivery?.LsNr}" : $"Lieferungen_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}", "elwig.zip");
|
||||||
FileName = subject == ExportSubject.Selected ? $"Lieferung_{vm.SelectedDelivery?.LsNr}.elwig.zip" : $"Lieferungen_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip",
|
if (filename != null) {
|
||||||
DefaultExt = "elwig.zip",
|
if (!filename.EndsWith(".elwig.zip")) filename += ".elwig.zip";
|
||||||
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
|
||||||
Title = $"{DeliveryJournal.Name} speichern unter - Elwig",
|
|
||||||
AddExtension = false,
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
if (!d.FileName.EndsWith(".elwig.zip")) d.FileName += ".elwig.zip";
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
@@ -817,9 +805,9 @@ namespace Elwig.Services {
|
|||||||
.DistinctBy(k => k.KgNr)
|
.DistinctBy(k => k.KgNr)
|
||||||
.OrderBy(k => k.KgNr)
|
.OrderBy(k => k.KgNr)
|
||||||
.ToList();
|
.ToList();
|
||||||
await ElwigData.Export(d.FileName, list, wbKgs, filterNames);
|
await ElwigData.Export(filename, list, wbKgs, filterNames);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -838,7 +826,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data);
|
using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, mode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -869,7 +857,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data);
|
using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, mode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -888,21 +876,16 @@ namespace Elwig.Services {
|
|||||||
throw new ArgumentException("Invalid value for ExportSubject");
|
throw new ArgumentException("Invalid value for ExportSubject");
|
||||||
}
|
}
|
||||||
|
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Lieferstatistik pro Ort", $"Lieferstatistik-{vm.FilterSeason ?? Utils.CurrentLastSeason}", "ods");
|
||||||
FileName = $"Lieferstatistik-{vm.FilterSeason ?? Utils.CurrentLastSeason}.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Lieferstatistik pro Ort speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
var tbl = await WineLocalityStatisticsData.FromQuery(query, filterNames);
|
var tbl = await WineLocalityStatisticsData.FromQuery(query, filterNames);
|
||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -936,17 +919,12 @@ namespace Elwig.Services {
|
|||||||
filterNames.Remove("abgewertet");
|
filterNames.Remove("abgewertet");
|
||||||
|
|
||||||
if (mode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile(DeliveryDepreciationList.Name, $"{DeliveryDepreciationList.Name}-{vm.FilterSeason ?? Utils.CurrentLastSeason}", "ods");
|
||||||
FileName = $"{DeliveryDepreciationList.Name}-{vm.FilterSeason ?? Utils.CurrentLastSeason}.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"{DeliveryDepreciationList.Name} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
var tblTotal = await DeliveryJournalData.FromQuery(query, filterNames);
|
var tblTotal = await DeliveryJournalData.FromQuery(query, filterNames);
|
||||||
tblTotal.FullName = DeliveryDepreciationList.Name;
|
tblTotal.FullName = DeliveryDepreciationList.Name;
|
||||||
tblTotal.Name = "Gesamt";
|
tblTotal.Name = "Gesamt";
|
||||||
@@ -958,7 +936,7 @@ namespace Elwig.Services {
|
|||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -971,7 +949,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new DeliveryDepreciationList(string.Join(" / ", filterNames), data);
|
using var doc = new DeliveryDepreciationList(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, mode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -1001,23 +979,18 @@ namespace Elwig.Services {
|
|||||||
.ThenBy(p => p.AttrId)
|
.ThenBy(p => p.AttrId)
|
||||||
.ThenBy(p => p.CultId);
|
.ThenBy(p => p.CultId);
|
||||||
|
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Liefermengen", "Liefermengen", "ods");
|
||||||
FileName = $"Liefermengen.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Liefermengen speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
var tblTotal = await MemberDeliveryData.FromQuery(query, filterNames);
|
var tblTotal = await MemberDeliveryData.FromQuery(query, filterNames);
|
||||||
var tbl = await MemberDeliveryPerVarietyData.FromQuery(query, filterNames);
|
var tbl = await MemberDeliveryPerVarietyData.FromQuery(query, filterNames);
|
||||||
await ods.AddTable(tblTotal);
|
await ods.AddTable(tblTotal);
|
||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -1219,9 +1192,9 @@ namespace Elwig.Services {
|
|||||||
attrid = $"'{attr.AttrId}'";
|
attrid = $"'{attr.AttrId}'";
|
||||||
}
|
}
|
||||||
var dids = await vm.GetDidsFromFilters();
|
var dids = await vm.GetDidsFromFilters();
|
||||||
var res = MessageBox.Show($"Soll wirklich für {dids.Length:N0} Teillieferung(en) das Attribut\n'{attributeName}' gesetz werden?",
|
if (!InteractionService.AskContinue("Massenaktion: Attribut setzen",
|
||||||
"Massenaktion: Attribut setzen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
$"Soll wirklich für {dids.Length:N0} Teillieferung(en) das Attribut\n'{attributeName}' gesetz werden?"))
|
||||||
if (res != MessageBoxResult.OK) return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
@@ -1234,7 +1207,7 @@ namespace Elwig.Services {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
});
|
});
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
} finally {
|
} finally {
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -1249,9 +1222,9 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dids = await vm.GetDidsFromFilters();
|
var dids = await vm.GetDidsFromFilters();
|
||||||
var res = MessageBox.Show($"Soll wirklich für {dids.Length:N0} Teillieferung(en) der Zu-/Abschlag\n'{modifierName}' hinzugefügt werden?",
|
if (!InteractionService.AskContinue("Massenaktion: Zu-/Abschlag hinzufügen",
|
||||||
"Massenaktion: Zu-/Abschlag hinzufügen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
$"Soll wirklich für {dids.Length:N0} Teillieferung(en) der Zu-/Abschlag\n'{modifierName}' hinzugefügt werden?"))
|
||||||
if (res != MessageBoxResult.OK) return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
@@ -1265,7 +1238,7 @@ namespace Elwig.Services {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
});
|
});
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
} finally {
|
} finally {
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -1280,9 +1253,9 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dids = await vm.GetDidsFromFilters();
|
var dids = await vm.GetDidsFromFilters();
|
||||||
var res = MessageBox.Show($"Soll wirklich für {dids.Length:N0} Teillieferung(en) der Zu-/Abschlag\n'{modifierName}' entfernt werden?",
|
if (!InteractionService.AskContinue("Massenaktion: Zu-/Abschlag entfernen",
|
||||||
"Massenaktion: Zu-/Abschlag entfernen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
$"Soll wirklich für {dids.Length:N0} Teillieferung(en) der Zu-/Abschlag\n'{modifierName}' entfernt werden?"))
|
||||||
if (res != MessageBoxResult.OK) return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
@@ -1295,7 +1268,7 @@ namespace Elwig.Services {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
});
|
});
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
} finally {
|
} finally {
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace Elwig.Services {
|
||||||
|
public static class InteractionService {
|
||||||
|
|
||||||
|
public static Func<string, string, string, string?>? Override;
|
||||||
|
|
||||||
|
public static readonly Dictionary<string, string> ExtensionFilters = new() {
|
||||||
|
["pdf"] = "PDF-Datei (*.pdf)|*.pdf",
|
||||||
|
["ods"] = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
||||||
|
["vcf"] = "vCard-Datei (*.vcf)|*.vcf",
|
||||||
|
["xml"] = "EBICS-Datei (*.xml)|*.xml",
|
||||||
|
["csv"] = "CSV-Datei (*.csv)|*.csv",
|
||||||
|
["sql.zip"] = "Komprimierte SQL-Datei (*.sql.zip)|*.sql.zip",
|
||||||
|
["elwig.zip"] = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
||||||
|
};
|
||||||
|
|
||||||
|
public static void ShowInformation(string title, string text) {
|
||||||
|
if (Override != null) {
|
||||||
|
Override("information", title, text);
|
||||||
|
} else {
|
||||||
|
MessageBox.Show(text, title, MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool AskContinue(string title, string text) {
|
||||||
|
if (Override != null) {
|
||||||
|
return Override("continue", title, text) != null;
|
||||||
|
} else {
|
||||||
|
return MessageBox.Show(text, title, MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel) == MessageBoxResult.OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool AskConfirmation(string title, string text) {
|
||||||
|
if (Override != null) {
|
||||||
|
return Override("confirm", title, text) != null;
|
||||||
|
} else {
|
||||||
|
return MessageBox.Show(text, title, MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No) == MessageBoxResult.Yes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool AskQuestion(string title, string text, bool defaultResult) {
|
||||||
|
if (Override != null) {
|
||||||
|
return Override("question", title, text) != null;
|
||||||
|
} else {
|
||||||
|
return MessageBox.Show(text, title, MessageBoxButton.YesNo, MessageBoxImage.Question, defaultResult ? MessageBoxResult.Yes : MessageBoxResult.No) == MessageBoxResult.Yes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowWarning(string title, string text) {
|
||||||
|
if (Override != null) {
|
||||||
|
Override("warning", title, text);
|
||||||
|
} else {
|
||||||
|
MessageBox.Show(text, title, MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowError(string title, string text) {
|
||||||
|
if (Override != null) {
|
||||||
|
Override("error", title, text);
|
||||||
|
} else {
|
||||||
|
MessageBox.Show(text, title, MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowException(Exception exc, bool showExcType = false, bool isError = true) {
|
||||||
|
ShowException("Fehler", exc, showExcType, isError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowException(string title, Exception exc, bool showExcType = false, bool isError = true) {
|
||||||
|
ShowException(title, exc, showExcType, isError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowException(string title, string? text, Exception exc, bool showExcType = false, bool isError = true) {
|
||||||
|
text = text == null ? "" : text + (text.EndsWith('.') || text.EndsWith('!') || text.EndsWith('?') ? "" : ":") + "\n\n";
|
||||||
|
text += exc.Message + (showExcType ? $" ({exc.GetType().Name})" : "");
|
||||||
|
if (exc.InnerException != null) text += "\n\n" + exc.InnerException.Message;
|
||||||
|
if (isError) {
|
||||||
|
ShowError(title, text);
|
||||||
|
} else {
|
||||||
|
ShowWarning(title, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ShowDbException(string title, Exception exc) {
|
||||||
|
ShowException(title, "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!", exc);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool AskException(string title, string? text, Exception exc) {
|
||||||
|
text = text == null ? "" : text + (text.EndsWith('.') || text.EndsWith('!') || text.EndsWith('?') ? "" : ":") + "\n\n";
|
||||||
|
text += exc.Message;
|
||||||
|
if (exc.InnerException != null) text += "\n\n" + exc.InnerException.Message;
|
||||||
|
if (Override != null) {
|
||||||
|
return Override("error", title, text) != null;
|
||||||
|
} else {
|
||||||
|
return MessageBox.Show(text, title, MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.No) == MessageBoxResult.Yes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string? SaveFile(string title, string defaultFileName, string extension) {
|
||||||
|
if (Override != null) {
|
||||||
|
return Override("save", title, $"{defaultFileName}.{extension}");
|
||||||
|
} else {
|
||||||
|
var d = new SaveFileDialog() {
|
||||||
|
FileName = $"{defaultFileName}.{extension}",
|
||||||
|
DefaultExt = extension,
|
||||||
|
Filter = ExtensionFilters.GetValueOrDefault(extension, ""),
|
||||||
|
Title = $"{title} speichern unter - Elwig",
|
||||||
|
AddExtension = !extension.Contains('.'),
|
||||||
|
};
|
||||||
|
return d.ShowDialog() == true ? d.FileName : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,12 +6,10 @@ using Elwig.Models.Dtos;
|
|||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
using Elwig.ViewModels;
|
using Elwig.ViewModels;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Win32;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace Elwig.Services {
|
namespace Elwig.Services {
|
||||||
@@ -398,7 +396,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new MemberDataSheet(m);
|
using var doc = new MemberDataSheet(m);
|
||||||
await Utils.ExportDocument(doc, mode, emailData: (m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt"));
|
await Utils.ExportDocument(doc, mode, emailData: (m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt"));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -416,7 +414,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new DeliveryConfirmation(year, m, null);
|
using var doc = new DeliveryConfirmation(year, m, null);
|
||||||
await Utils.ExportDocument(doc, mode, emailData: (m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}"));
|
await Utils.ExportDocument(doc, mode, emailData: (m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}"));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -429,7 +427,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = await CreditNote.Initialize(year, avnr, m.MgNr, null);
|
using var doc = await CreditNote.Initialize(year, avnr, m.MgNr, null);
|
||||||
await Utils.ExportDocument(doc, mode, emailData: (m, $"{CreditNote.Name} {doc.Payment.Variant.Name}", $"Im Anhang finden Sie die Traubengutschrift {doc.Payment.Variant.Name}"));
|
await Utils.ExportDocument(doc, mode, emailData: (m, $"{CreditNote.Name} {doc.Payment.Variant.Name}", $"Im Anhang finden Sie die Traubengutschrift {doc.Payment.Variant.Name}"));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -477,33 +475,23 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile(MemberList.Name, MemberList.Name, "ods");
|
||||||
FileName = $"{MemberList.Name}.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"{MemberList.Name} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
var data = await MemberListData.FromQuery(query, filterNames, filterNames.Where(f => f.StartsWith("Flächenbindung")).Select(f => f.Split(' ')[^1]));
|
var data = await MemberListData.FromQuery(query, filterNames, filterNames.Where(f => f.StartsWith("Flächenbindung")).Select(f => f.Split(' ')[^1]));
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(data);
|
await ods.AddTable(data);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (mode == ExportMode.Vcf) {
|
} else if (mode == ExportMode.Vcf) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Kontakte", "Mitglieder", "vcf");
|
||||||
FileName = "Mitglieder.vcf",
|
if (filename != null) {
|
||||||
DefaultExt = "vcf",
|
|
||||||
Filter = "vCard-Datei (*.vcf)|*.vcf",
|
|
||||||
Title = "Kontakte speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
@@ -512,24 +500,18 @@ namespace Elwig.Services {
|
|||||||
.Include(m => m.TelephoneNumbers)
|
.Include(m => m.TelephoneNumbers)
|
||||||
.Include(m => m.EmailAddresses)
|
.Include(m => m.EmailAddresses)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
using var exporter = new VCard(d.FileName);
|
using var exporter = new VCard(filename);
|
||||||
await exporter.ExportAsync(members);
|
await exporter.ExportAsync(members);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (mode == ExportMode.Export) {
|
} else if (mode == ExportMode.Export) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile(MemberList.Name, subject == ExportSubject.Selected ? $"Mitglied_{vm.SelectedMember?.MgNr}" : $"Mitglieder_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}", "elwig.zip");
|
||||||
FileName = subject == ExportSubject.Selected ? $"Mitglied_{vm.SelectedMember?.MgNr}.elwig.zip" : $"Mitglieder_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip",
|
if (filename != null) {
|
||||||
DefaultExt = "elwig.zip",
|
if (!filename.EndsWith(".elwig.zip")) filename += ".elwig.zip";
|
||||||
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
|
||||||
Title = $"{MemberList.Name} speichern unter - Elwig",
|
|
||||||
AddExtension = false,
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
if (!d.FileName.EndsWith(".elwig.zip")) d.FileName += ".elwig.zip";
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
@@ -550,9 +532,9 @@ namespace Elwig.Services {
|
|||||||
.Distinct()
|
.Distinct()
|
||||||
.OrderBy(k => k.KgNr)
|
.OrderBy(k => k.KgNr)
|
||||||
.ToList();
|
.ToList();
|
||||||
await ElwigData.Export(d.FileName, members, areaComs, wbKgs, filterNames);
|
await ElwigData.Export(filename, members, areaComs, wbKgs, filterNames);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -571,7 +553,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = new MemberList(string.Join(" / ", filterNames), data);
|
using var doc = new MemberList(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, mode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ using Elwig.Models.Dtos;
|
|||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
using Elwig.ViewModels;
|
using Elwig.ViewModels;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Win32;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -190,23 +189,18 @@ namespace Elwig.Services {
|
|||||||
|
|
||||||
public static async Task GenerateSummary(PaymentVar v, ExportMode mode) {
|
public static async Task GenerateSummary(PaymentVar v, ExportMode mode) {
|
||||||
if (mode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile($"Variantendaten {v.Name}", $"Variantendaten-{v.Name.Trim().Replace(' ', '-')}", "ods");
|
||||||
FileName = $"Variantendaten-{v.Name.Trim().Replace(' ', '-')}.ods",
|
if (filename == null)
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Variantendaten {v.Name} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == false)
|
|
||||||
return;
|
return;
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
var data = await PaymentVariantSummaryData.ForPaymentVariant(v, ctx.PaymentVariantSummaryRows);
|
var data = await PaymentVariantSummaryData.ForPaymentVariant(v, ctx.PaymentVariantSummaryRows);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(data);
|
await ods.AddTable(data);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -217,7 +211,7 @@ namespace Elwig.Services {
|
|||||||
using var doc = await PaymentVariantSummary.Initialize(v.Year, v.AvNr);
|
using var doc = await PaymentVariantSummary.Initialize(v.Year, v.AvNr);
|
||||||
await Utils.ExportDocument(doc, mode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -230,31 +224,26 @@ namespace Elwig.Services {
|
|||||||
|
|
||||||
var withoutIban = v.Credits.Count(c => c.Member.Iban == null);
|
var withoutIban = v.Credits.Count(c => c.Member.Iban == null);
|
||||||
if (withoutIban > 0) {
|
if (withoutIban > 0) {
|
||||||
var r = MessageBox.Show($"Achtung: Für {withoutIban:N0} Mitglieder ist kein IBAN hinterlegt.\n\nDiese werden NICHT exportiert.",
|
if (!InteractionService.AskContinue("Mitglieder ohne IBAN",
|
||||||
"Mitglieder ohne IBAN", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
$"Achtung: Für {withoutIban:N0} Mitglieder ist kein IBAN hinterlegt.\n\nDiese werden NICHT exportiert."))
|
||||||
if (r != MessageBoxResult.OK) return;
|
return;
|
||||||
}
|
}
|
||||||
var withNegAmount = v.Credits.Count(c => c.Amount <= 0);
|
var withNegAmount = v.Credits.Count(c => c.Amount <= 0);
|
||||||
if (withNegAmount > 0) {
|
if (withNegAmount > 0) {
|
||||||
var r = MessageBox.Show($"Achtung: Es gibt {withNegAmount:N0} Traubengutschriften mit negativem Betrag.\n\nDiese werden NICHT exportiert.",
|
if (!InteractionService.AskContinue("Traubengutschriften mit negativem Betrag",
|
||||||
"Traubengutschriften mit negativem Betrag", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.OK);
|
$"Achtung: Es gibt {withNegAmount:N0} Traubengutschriften mit negativem Betrag.\n\nDiese werden NICHT exportiert."))
|
||||||
if (r != MessageBoxResult.OK) return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Überweisungsdaten", $"{App.Client.NameToken}-Überweisungsdaten-{v.Year}-{v.Name.Trim().Replace(' ', '-')}", Ebics.FileExtension);
|
||||||
FileName = $"{App.Client.NameToken}-Überweisungsdaten-{v.Year}-{v.Name.Trim().Replace(' ', '-')}.{Ebics.FileExtension}",
|
if (filename != null) {
|
||||||
DefaultExt = Ebics.FileExtension,
|
|
||||||
Filter = "EBICS-Datei (*.xml)|*.xml",
|
|
||||||
Title = $"Überweisungsdaten speichern unter - Elwig",
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
using var e = new Ebics(v, d.FileName, App.Client.ExportEbicsVersion, (Ebics.AddressMode)App.Client.ExportEbicsAddress);
|
using var e = new Ebics(v, filename, App.Client.ExportEbicsVersion, (Ebics.AddressMode)App.Client.ExportEbicsAddress);
|
||||||
await e.ExportAsync(Transaction.FromPaymentVariant(v));
|
await e.ExportAsync(Transaction.FromPaymentVariant(v));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -262,22 +251,17 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async Task GenerateAccountingList(int year, int avnr, string name) {
|
public static async Task GenerateAccountingList(int year, int avnr, string name) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Buchungsliste", $"{App.Client.NameToken}-Buchungsliste-{year}-{name.Trim().Replace(' ', '-')}", "ods");
|
||||||
FileName = $"{App.Client.NameToken}-Buchungsliste-{year}-{name.Trim().Replace(' ', '-')}.ods",
|
if (filename != null) {
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Buchungsliste speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
var tbl = await CreditNoteData.ForPaymentVariant(ctx, year, avnr);
|
var tbl = await CreditNoteData.ForPaymentVariant(ctx, year, avnr);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -383,11 +367,10 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (membersLess.Count > 0) {
|
if (membersLess.Count > 0) {
|
||||||
var res = MessageBox.Show($"Achtung: Bei {membersLess.Count:N0} Mitglied(ern) ist der Soll-Betrag der Auszahlung (\"Gesamtbetrag\") kleiner als bei der letzten Auszahlung. Das sollte nicht vorkommen!\n\n" +
|
if (!InteractionService.AskContinue("Kleinerer Gesamtbetrag",
|
||||||
|
$"Achtung: Bei {membersLess.Count:N0} Mitglied(ern) ist der Soll-Betrag der Auszahlung (\"Gesamtbetrag\") kleiner als bei der letzten Auszahlung. Das sollte nicht vorkommen!\n\n" +
|
||||||
$"{string.Join(", ", membersLess.Select(m => $"{m.AdministrativeName} ({m.MgNr})"))}\n\n" +
|
$"{string.Join(", ", membersLess.Select(m => $"{m.AdministrativeName} ({m.MgNr})"))}\n\n" +
|
||||||
"Soll trotzdem forgefahren werden?",
|
"Soll trotzdem forgefahren werden?"))
|
||||||
"Kleinerer Gesamtbetrag", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (res != MessageBoxResult.OK)
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,9 +384,8 @@ namespace Elwig.Services {
|
|||||||
membersNeg = await ctx.Credits.Where(c => c.Year == year && c.AvNr == avnr && c.AmountValue < 0).Select(c => c.Member).ToListAsync();
|
membersNeg = await ctx.Credits.Where(c => c.Year == year && c.AvNr == avnr && c.AmountValue < 0).Select(c => c.Member).ToListAsync();
|
||||||
}
|
}
|
||||||
if (membersNeg.Count > 0) {
|
if (membersNeg.Count > 0) {
|
||||||
var res = MessageBox.Show($"Achtung: Bei {membersNeg.Count:N0} Mitglied(ern) ist der Auszahlungsbetrag negativ!\n\n" +
|
InteractionService.ShowWarning("Negativer Auszahlungsbetrag", $"Achtung: Bei {membersNeg.Count:N0} Mitglied(ern) ist der Auszahlungsbetrag negativ!\n\n" +
|
||||||
$"{string.Join(", ", membersNeg.Select(m => $"{m.AdministrativeName} ({m.MgNr})"))}",
|
$"{string.Join(", ", membersNeg.Select(m => $"{m.AdministrativeName} ({m.MgNr})"))}");
|
||||||
"Negativer Auszahlungsbetrag", MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ using System.Linq;
|
|||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace Elwig.Services {
|
namespace Elwig.Services {
|
||||||
public static class SyncService {
|
public static class SyncService {
|
||||||
@@ -42,22 +41,20 @@ namespace Elwig.Services {
|
|||||||
.OrderBy(k => k.KgNr)
|
.OrderBy(k => k.KgNr)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (members.Count == 0) {
|
if (members.Count == 0) {
|
||||||
MessageBox.Show("Es wurden keine Mitglieder zum Hochladen ausgewählt!", "Mitglieder hochladen",
|
InteractionService.ShowError("Mitglieder hochladen", "Es wurden keine Mitglieder zum Hochladen ausgewählt!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
} else {
|
} else {
|
||||||
var exportedAt = DateTime.Now;
|
var exportedAt = DateTime.Now;
|
||||||
await ElwigData.Export(path, members, areaComs, wbKgs, filterNames);
|
await ElwigData.Export(path, members, areaComs, wbKgs, filterNames);
|
||||||
await Utils.UploadExportData(path, url, username, password);
|
await Utils.UploadExportData(path, url, username, password);
|
||||||
await UpdateExportedAt(members, areaComs, [], exportedAt);
|
await UpdateExportedAt(members, areaComs, [], exportedAt);
|
||||||
MessageBox.Show($"Hochladen von {members.Count:N0} Mitgliedern erfolgreich!", "Mitglieder hochgeladen",
|
InteractionService.ShowInformation("Mitglieder hochgeladen", $"Hochladen von {members.Count:N0} Mitgliedern erfolgreich!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Mitglieder hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Mitglieder hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Mitglieder hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Mitglieder hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Mitglieder hochladen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,22 +75,20 @@ namespace Elwig.Services {
|
|||||||
.OrderBy(k => k.KgNr)
|
.OrderBy(k => k.KgNr)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (list.Count == 0) {
|
if (list.Count == 0) {
|
||||||
MessageBox.Show("Es wurden keine Lieferungen zum Hochladen ausgewählt!", "Lieferungen hochladen",
|
InteractionService.ShowError("Lieferungen hochladen", "Es wurden keine Lieferungen zum Hochladen ausgewählt!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
} else {
|
} else {
|
||||||
var exportedAt = DateTime.Now;
|
var exportedAt = DateTime.Now;
|
||||||
await ElwigData.Export(path, list, wbKgs, filterNames);
|
await ElwigData.Export(path, list, wbKgs, filterNames);
|
||||||
await Utils.UploadExportData(path, url, username, password);
|
await Utils.UploadExportData(path, url, username, password);
|
||||||
await UpdateExportedAt([], [], list, exportedAt);
|
await UpdateExportedAt([], [], list, exportedAt);
|
||||||
MessageBox.Show($"Hochladen von {list.Count:N0} Lieferungen erfolgreich!", "Lieferungen hochgeladen",
|
InteractionService.ShowInformation("Lieferungen hochgeladen", $"Hochladen von {list.Count:N0} Lieferungen erfolgreich!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Lieferungen hochladen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,8 +127,7 @@ namespace Elwig.Services {
|
|||||||
.OrderBy(k => k.KgNr)
|
.OrderBy(k => k.KgNr)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (members.Count == 0 && deliveries.Count == 0) {
|
if (members.Count == 0 && deliveries.Count == 0) {
|
||||||
MessageBox.Show("Es gibt keine geänderten Mitglieder oder Lieferungen, die hochgeladen werden könnten!", "Mitglieder und Lieferungen hochladen",
|
InteractionService.ShowInformation("Mitglieder und Lieferungen hochladen", "Es gibt keine geänderten Mitglieder oder Lieferungen, die hochgeladen werden könnten!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
} else {
|
} else {
|
||||||
var exportedAt = DateTime.Now;
|
var exportedAt = DateTime.Now;
|
||||||
await (new ElwigData.ElwigExport {
|
await (new ElwigData.ElwigExport {
|
||||||
@@ -144,15 +138,14 @@ namespace Elwig.Services {
|
|||||||
}).Export(path);
|
}).Export(path);
|
||||||
await Utils.UploadExportData(path, url, username, password);
|
await Utils.UploadExportData(path, url, username, password);
|
||||||
await UpdateExportedAt(members, areaComs, deliveries, exportedAt);
|
await UpdateExportedAt(members, areaComs, deliveries, exportedAt);
|
||||||
MessageBox.Show($"Hochladen von {members.Count:N0} Mitgliedern, {areaComs.Count:N0} Flächenbindungsverträgen, und {deliveries.Count:N0} Lieferungen erfolgreich!", "Mitglieder und Lieferungen hochladen",
|
InteractionService.ShowInformation("Mitglieder und Lieferungen hochladen", $"Hochladen von {members.Count:N0} Mitgliedern, {areaComs.Count:N0} Flächenbindungsverträgen, und {deliveries.Count:N0} Lieferungen erfolgreich!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Mitglieder und Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Mitglieder und Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Mitglieder und Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Mitglieder und Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Mitglieder und Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Mitglieder und Lieferungen hochladen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,22 +166,20 @@ namespace Elwig.Services {
|
|||||||
.DistinctBy(k => k.KgNr)
|
.DistinctBy(k => k.KgNr)
|
||||||
.ToList();
|
.ToList();
|
||||||
if (deliveries.Count == 0) {
|
if (deliveries.Count == 0) {
|
||||||
MessageBox.Show("Es gibt keine Lieferungen, die hochgeladen werden können!", "Lieferungen hochladen",
|
InteractionService.ShowError("Lieferungen hochladen", "Es gibt keine Lieferungen, die hochgeladen werden können!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
} else {
|
} else {
|
||||||
var exportedAt = DateTime.Now;
|
var exportedAt = DateTime.Now;
|
||||||
await ElwigData.Export(path, deliveries, wbKgs, [$"{year}", $"Zweigstelle {App.BranchName}"]);
|
await ElwigData.Export(path, deliveries, wbKgs, [$"{year}", $"Zweigstelle {App.BranchName}"]);
|
||||||
await Utils.UploadExportData(path, url, username, password);
|
await Utils.UploadExportData(path, url, username, password);
|
||||||
await UpdateExportedAt([], [], deliveries, exportedAt);
|
await UpdateExportedAt([], [], deliveries, exportedAt);
|
||||||
MessageBox.Show($"Hochladen von {deliveries.Count:N0} Lieferungen erfolgreich!", "Lieferungen hochladen",
|
InteractionService.ShowInformation("Lieferungen hochladen", $"Hochladen von {deliveries.Count:N0} Lieferungen erfolgreich!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Lieferungen hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Lieferungen hochladen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,11 +218,11 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
await ElwigData.Import(paths, ElwigData.ImportMode.FromBranches);
|
await ElwigData.Import(paths, ElwigData.ImportMode.FromBranches);
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Daten herunterladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Daten herunterladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Daten herunterladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Daten herunterladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Daten herunterladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Daten herunterladen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using Elwig.Services;
|
||||||
|
|
||||||
namespace Elwig.Windows {
|
namespace Elwig.Windows {
|
||||||
public abstract class AdministrationWindow : ContextWindow {
|
public abstract class AdministrationWindow : ContextWindow {
|
||||||
@@ -109,9 +110,7 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private void OnClosing(object? sender, CancelEventArgs evt) {
|
private void OnClosing(object? sender, CancelEventArgs evt) {
|
||||||
if ((IsCreating || IsEditing) && HasChanged) {
|
if ((IsCreating || IsEditing) && HasChanged) {
|
||||||
var r = MessageBox.Show("Soll das Fenster wirklich geschlossen werden?", "Schließen bestätigen",
|
if (!InteractionService.AskConfirmation("Schließen bestätigen", "Soll das Fenster wirklich geschlossen werden?")) {
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
if (r != MessageBoxResult.Yes) {
|
|
||||||
evt.Cancel = true;
|
evt.Cancel = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -390,7 +389,7 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
protected bool InputLostFocus(TextBox input, ValidationResult res, string? msg = null) {
|
protected bool InputLostFocus(TextBox input, ValidationResult res, string? msg = null) {
|
||||||
if (DoShowWarningWindows && !res.IsValid && !IsClosing && (IsEditing || IsCreating))
|
if (DoShowWarningWindows && !res.IsValid && !IsClosing && (IsEditing || IsCreating))
|
||||||
MessageBox.Show(res.ErrorContent?.ToString(), msg ?? res.ErrorContent?.ToString(), MessageBoxButton.OK, MessageBoxImage.Warning);
|
InteractionService.ShowWarning(msg ?? res.ErrorContent?.ToString() ?? "", res.ErrorContent?.ToString() ?? "");
|
||||||
return res.IsValid;
|
return res.IsValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -246,9 +246,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Flächenbindung löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Flächenbindung löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -298,9 +296,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Flächenbindung aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Elwig.Dialogs;
|
using Elwig.Dialogs;
|
||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -184,9 +185,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
await ctx.SaveChangesAsync();
|
await ctx.SaveChangesAsync();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Saison anlegen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Saison anlegen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -197,19 +196,14 @@ namespace Elwig.Windows {
|
|||||||
private async void SeasonRemoveButton_Click(object sender, RoutedEventArgs evt) {
|
private async void SeasonRemoveButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (SeasonList.SelectedItem is not Season s)
|
if (SeasonList.SelectedItem is not Season s)
|
||||||
return;
|
return;
|
||||||
var r = MessageBox.Show(
|
if (InteractionService.AskContinue("Saison löschen", $"Soll die Saison {s.Year} wirklich unwiderruflich gelöscht werden?")) {
|
||||||
$"Soll die Saison {s.Year} wirklich unwiderruflich gelöscht werden?",
|
|
||||||
"Saison löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (r == MessageBoxResult.OK) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
try {
|
try {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
ctx.Remove(s);
|
ctx.Remove(s);
|
||||||
await ctx.SaveChangesAsync();
|
await ctx.SaveChangesAsync();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Saison löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Saison löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -300,9 +301,7 @@ namespace Elwig.Windows {
|
|||||||
try {
|
try {
|
||||||
await Save();
|
await Save();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Stammdaten aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Stammdaten aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ using Elwig.Helpers.Billing;
|
|||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
using ScottPlot.Plottables;
|
using ScottPlot.Plottables;
|
||||||
using ScottPlot;
|
using ScottPlot;
|
||||||
|
using Elwig.Services;
|
||||||
|
|
||||||
namespace Elwig.Windows {
|
namespace Elwig.Windows {
|
||||||
public partial class ChartWindow : ContextWindow {
|
public partial class ChartWindow : ContextWindow {
|
||||||
@@ -82,9 +83,7 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
|
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
|
||||||
if (HasChanged) {
|
if (HasChanged) {
|
||||||
var r = MessageBox.Show("Soll das Fenster wirklich geschlossen werden? Nicht gespeicherte Änderungen werden NICHT übernommen!", "Schließen bestätigen",
|
if (!InteractionService.AskConfirmation("Schließen bestätigen", "Soll das Fenster wirklich geschlossen werden? Nicht gespeicherte Änderungen werden NICHT übernommen!")) {
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
if (r != MessageBoxResult.Yes) {
|
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -110,18 +109,17 @@ namespace Elwig.Windows {
|
|||||||
..paymentEntries,
|
..paymentEntries,
|
||||||
..await data.GetQualityGraphEntries(ctx, Season, paymentEntries.Any() ? paymentEntries.Max(e => e.Id) : 0)
|
..await data.GetQualityGraphEntries(ctx, Season, paymentEntries.Any() ? paymentEntries.Max(e => e.Id) : 0)
|
||||||
];
|
];
|
||||||
} catch (KeyNotFoundException ex) {
|
} catch (KeyNotFoundException exc) {
|
||||||
var key = ex.Message.Split('\'')[1].Split('\'')[0];
|
var key = exc.Message.Split('\'')[1].Split('\'')[0];
|
||||||
MessageBox.Show($"Fehler beim Laden der Auszahlungsvariante:\n\n" +
|
InteractionService.ShowError("Fehler",
|
||||||
$"Mit unbekanntem Attribut '{key}' kann nicht umgegangen werden.", "Fehler",
|
$"Fehler beim Laden der Auszahlungsvariante:\n\n" +
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
$"Mit unbekanntem Attribut '{key}' kann nicht umgegangen werden.");
|
||||||
} catch (ArgumentException) {
|
} catch (ArgumentException) {
|
||||||
MessageBox.Show($"Fehler beim Laden der Auszahlungsvariante:\n\n" +
|
InteractionService.ShowError("Fehler",
|
||||||
$"Die Daten der Auszahlungsvariante entsprechen nicht dem benötigtem Format.", "Fehler",
|
$"Fehler beim Laden der Auszahlungsvariante:\n\n" +
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
$"Die Daten der Auszahlungsvariante entsprechen nicht dem benötigtem Format.");
|
||||||
} catch (Exception ex) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show("Fehler beim Laden der Auszahlungsvariante:\n\n" + ex.Message, "Fehler",
|
InteractionService.ShowException("Fehler", "Fehler beim Laden der Auszahlungsvariante", exc);
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Vaributes = await Utils.GetVaributeList(ctx, Year);
|
Vaributes = await Utils.GetVaributeList(ctx, Year);
|
||||||
GraphEntries.ForEach(e => {
|
GraphEntries.ForEach(e => {
|
||||||
@@ -622,11 +620,7 @@ namespace Elwig.Windows {
|
|||||||
private void DeleteButton_Click(object sender, RoutedEventArgs e) {
|
private void DeleteButton_Click(object sender, RoutedEventArgs e) {
|
||||||
if (SelectedGraphEntry == null) return;
|
if (SelectedGraphEntry == null) return;
|
||||||
|
|
||||||
var r = MessageBox.Show(
|
if (InteractionService.AskConfirmation("Kurve löschen", $"Soll die Kurve {SelectedGraphEntry.Id} (verwendet in folgenden Verträgen: {SelectedGraphEntry.VaributeStringSimple}) wirklich gelöscht werden?")) {
|
||||||
$"Soll die Kurve {SelectedGraphEntry.Id} (verwendet in folgenden Verträgen: {SelectedGraphEntry.VaributeStringSimple}) wirklich gelöscht werden?",
|
|
||||||
"Kurve löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
|
|
||||||
if (r == MessageBoxResult.Yes) {
|
|
||||||
GraphEntries.Remove(SelectedGraphEntry);
|
GraphEntries.Remove(SelectedGraphEntry);
|
||||||
SetHasChanged();
|
SetHasChanged();
|
||||||
GraphList.Items.Refresh();
|
GraphList.Items.Refresh();
|
||||||
@@ -651,9 +645,7 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank gespeichert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Auszahlungsvariante speichern", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -664,9 +656,9 @@ namespace Elwig.Windows {
|
|||||||
await b.Calculate(false);
|
await b.Calculate(false);
|
||||||
});
|
});
|
||||||
} catch (KeyNotFoundException exc) {
|
} catch (KeyNotFoundException exc) {
|
||||||
MessageBox.Show(exc.Message, "Noch nicht alle Preise festgelegt", MessageBoxButton.OK, MessageBoxImage.Information);
|
InteractionService.ShowInformation("Noch nicht alle Preise festgelegt", exc.Message);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Berechnungsfehler", exc);
|
||||||
}
|
}
|
||||||
|
|
||||||
LockContext = false;
|
LockContext = false;
|
||||||
@@ -773,9 +765,7 @@ namespace Elwig.Windows {
|
|||||||
if (ge != SelectedGraphEntry && ge.Abgewertet == SelectedGraphEntry?.Abgewertet) {
|
if (ge != SelectedGraphEntry && ge.Abgewertet == SelectedGraphEntry?.Abgewertet) {
|
||||||
var toRemove = ge.Vaributes.Where(c => c.Listing.Equals(varibute)).ToList();
|
var toRemove = ge.Vaributes.Where(c => c.Listing.Equals(varibute)).ToList();
|
||||||
if (toRemove.Count == 0) continue;
|
if (toRemove.Count == 0) continue;
|
||||||
var r = MessageBox.Show($"Achtung: {string.Join(", ", toRemove)} ist bereits in Kurve {ge.Id} in Verwendung!\nSoll die Zuweisung dort entfernt werden?", "Entfernen bestätigen",
|
if (!InteractionService.AskConfirmation("Entfernen bestätigen", $"Achtung: {string.Join(", ", toRemove)} ist bereits in Kurve {ge.Id} in Verwendung!\nSoll die Zuweisung dort entfernt werden?")) {
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
if (r != MessageBoxResult.Yes) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ge.Vaributes.RemoveAll(c => c.Listing.Equals(varibute));
|
ge.Vaributes.RemoveAll(c => c.Listing.Equals(varibute));
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ using Elwig.Models.Entities;
|
|||||||
using Elwig.Services;
|
using Elwig.Services;
|
||||||
using Elwig.ViewModels;
|
using Elwig.ViewModels;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Win32;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -137,8 +136,9 @@ namespace Elwig.Windows {
|
|||||||
if (ViewModel.IsReceipt) {
|
if (ViewModel.IsReceipt) {
|
||||||
NewDeliveryButton_Click(null, null);
|
NewDeliveryButton_Click(null, null);
|
||||||
if (await ctx.FetchSeasons(Utils.CurrentYear).SingleOrDefaultAsync() == null) {
|
if (await ctx.FetchSeasons(Utils.CurrentYear).SingleOrDefaultAsync() == null) {
|
||||||
MessageBox.Show("Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.\n\n(Stammdaten -> Saisons -> Neu anlegen...)",
|
InteractionService.ShowWarning("Saison noch nicht erstellt",
|
||||||
"Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Warning);
|
"Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.\n\n" +
|
||||||
|
"(Stammdaten -> Saisons -> Neu anlegen...)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,9 +164,7 @@ namespace Elwig.Windows {
|
|||||||
private async void Menu_DeliveryNote_Email_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_DeliveryNote_Email_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (DeliveryList.SelectedItem is not Delivery d)
|
if (DeliveryList.SelectedItem is not Delivery d)
|
||||||
return;
|
return;
|
||||||
var res = MessageBox.Show("Soll eine E-Mail verschickt werden?", "Lieferschein verschicken",
|
if (!InteractionService.AskQuestion("Lieferschein verschicken", "Soll eine E-Mail verschickt werden?", true))
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes);
|
|
||||||
if (res != MessageBoxResult.Yes)
|
|
||||||
return;
|
return;
|
||||||
await DeliveryService.GenerateDeliveryNote(d.Year, d.DId, ExportMode.Email);
|
await DeliveryService.GenerateDeliveryNote(d.Year, d.DId, ExportMode.Email);
|
||||||
}
|
}
|
||||||
@@ -174,16 +172,11 @@ namespace Elwig.Windows {
|
|||||||
private async void Menu_Bki_SaveList_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Bki_SaveList_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (sender is not MenuItem m) return;
|
if (sender is not MenuItem m) return;
|
||||||
var year = int.Parse(m.Header.ToString()?.Split(" ")[^1] ?? Utils.CurrentLastSeason.ToString());
|
var year = int.Parse(m.Header.ToString()?.Split(" ")[^1] ?? Utils.CurrentLastSeason.ToString());
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Traubentransportscheinliste (BKI)", $"{App.Client.NameToken}-Traubentransportscheinliste-{year}", Bki.FileExtension);
|
||||||
FileName = $"{App.Client.NameToken}-Traubentransportscheinliste-{year}.{Bki.FileExtension}",
|
if (filename != null) {
|
||||||
DefaultExt = Bki.FileExtension,
|
|
||||||
Filter = "CSV-Datei (*.csv)|*.csv",
|
|
||||||
Title = $"Traubentransportscheinliste (BKI) speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
using var file = new Bki(d.FileName);
|
using var file = new Bki(filename);
|
||||||
await file.ExportAsync(year);
|
await file.ExportAsync(year);
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -641,11 +634,10 @@ namespace Elwig.Windows {
|
|||||||
try {
|
try {
|
||||||
var res = await s.Weigh();
|
var res = await s.Weigh();
|
||||||
OnWeighingResult(s, res);
|
OnWeighingResult(s, res);
|
||||||
} catch (Exception ex) {
|
} catch (Exception exc) {
|
||||||
ViewModel.LastScaleError = ex.Message.Split(": ")[^1];
|
ViewModel.LastScaleError = exc.Message.Split(": ")[^1];
|
||||||
OnWeighingResult(s, new());
|
OnWeighingResult(s, new());
|
||||||
MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{ex.Message}", "Waagenfehler",
|
InteractionService.ShowException("Waagenfehler", "Beim Wiegen ist ein Fehler aufgetreten", exc);
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
ViewModel.ManualWeighingReason = null;
|
ViewModel.ManualWeighingReason = null;
|
||||||
ManualWeighingInput.IsChecked = false;
|
ManualWeighingInput.IsChecked = false;
|
||||||
@@ -801,9 +793,7 @@ namespace Elwig.Windows {
|
|||||||
);
|
);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Lieferung aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
FinishButton.IsEnabled = true;
|
FinishButton.IsEnabled = true;
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -839,9 +829,7 @@ namespace Elwig.Windows {
|
|||||||
);
|
);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Lieferung aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
FinishButton.IsEnabled = true;
|
FinishButton.IsEnabled = true;
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -871,9 +859,8 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void CancelCreatingButton_Click(object sender, RoutedEventArgs evt) {
|
private async void CancelCreatingButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (IsCreating && HasChanged) {
|
if (IsCreating && HasChanged) {
|
||||||
var r = MessageBox.Show("Soll der Vorgang wirklich abgebrochen werden?", "Abbrechen bestätigen",
|
if (!InteractionService.AskConfirmation("Abbrechen bestätigen", "Soll der Vorgang wirklich abgebrochen werden?"))
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
return;
|
||||||
if (r != MessageBoxResult.Yes) return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
@@ -954,9 +941,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Lieferung aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -1003,18 +988,13 @@ namespace Elwig.Windows {
|
|||||||
if (DeliveryList.SelectedItem is not Delivery d)
|
if (DeliveryList.SelectedItem is not Delivery d)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var r = MessageBox.Show(
|
if (InteractionService.AskContinue("Lieferung löschen", $"Soll die Lieferung {d.LsNr} ({d.Member.AdministrativeName}, MgNr. {d.Member.MgNr}) wirklich unwiderruflich gelöscht werden?")) {
|
||||||
$"Soll die Lieferung {d.LsNr} ({d.Member.AdministrativeName}, MgNr. {d.Member.MgNr}) wirklich unwiderruflich gelöscht werden?",
|
|
||||||
"Lieferung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (r == MessageBoxResult.OK) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
try {
|
try {
|
||||||
await DeliveryService.DeleteDelivery(d.LsNr);
|
await DeliveryService.DeleteDelivery(d.LsNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Lieferung löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Lieferung löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -1042,9 +1022,7 @@ namespace Elwig.Windows {
|
|||||||
);
|
);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Lieferung aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
return;
|
return;
|
||||||
@@ -1281,8 +1259,7 @@ namespace Elwig.Windows {
|
|||||||
UpdateWineQualityLevels();
|
UpdateWineQualityLevels();
|
||||||
if (!ViewModel.WineVar?.IsQuw ?? false) {
|
if (!ViewModel.WineVar?.IsQuw ?? false) {
|
||||||
App.MainDispatcher.BeginInvoke(() => {
|
App.MainDispatcher.BeginInvoke(() => {
|
||||||
MessageBox.Show("Die eingegebene Sorte darf nicht als Qualitätswein\nübernommen werden!", "Kein Qualitätswein",
|
InteractionService.ShowWarning("Kein Qualitätswein", "Die eingegebene Sorte darf nicht als Qualitätswein\nübernommen werden!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Warning);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -309,10 +309,7 @@ namespace Elwig.Windows {
|
|||||||
private async void DeleteDeliveryAncmtButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void DeleteDeliveryAncmtButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
if (ViewModel.SelectedDeliveryAncmt is not DeliveryAncmt a)
|
if (ViewModel.SelectedDeliveryAncmt is not DeliveryAncmt a)
|
||||||
return;
|
return;
|
||||||
var r = MessageBox.Show(
|
if (InteractionService.AskContinue("Anmeldung löschen", "Soll die Anmeldung wirklich unwiderruflich gelöscht werden?")) {
|
||||||
$"Soll die Anmeldung wirklich unwiderruflich gelöscht werden?",
|
|
||||||
"Anmeldung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (r == MessageBoxResult.OK) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
try {
|
try {
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
@@ -322,9 +319,7 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Anmeldung löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Anmeldung löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -347,9 +342,7 @@ namespace Elwig.Windows {
|
|||||||
(year, dsnr, mgnr, sortid) = await ViewModel.UpdateDeliveryAncmt(s?.Year, s?.DsNr, s?.MgNr, s?.SortId, s?.Type);
|
(year, dsnr, mgnr, sortid) = await ViewModel.UpdateDeliveryAncmt(s?.Year, s?.DsNr, s?.MgNr, s?.SortId, s?.Type);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Anmeldung aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Anmeldung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
return;
|
return;
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -177,10 +177,7 @@ namespace Elwig.Windows {
|
|||||||
private async void DeleteDeliveryScheduleButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void DeleteDeliveryScheduleButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
if (ViewModel.SelectedDeliverySchedule is not DeliverySchedule s)
|
if (ViewModel.SelectedDeliverySchedule is not DeliverySchedule s)
|
||||||
return;
|
return;
|
||||||
var r = MessageBox.Show(
|
if (InteractionService.AskContinue("Leseplan löschen", $"Soll der Leseplan \"{s.Description}\" vom {s.Date:dd.MM.yyyy} wirklich unwiderruflich gelöscht werden?")) {
|
||||||
$"Soll der Leseplan \"{s.Description}\" vom {s.Date:dd.MM.yyyy} wirklich unwiderruflich gelöscht werden?",
|
|
||||||
"Leseplan löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (r == MessageBoxResult.OK) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
try {
|
try {
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
@@ -190,9 +187,7 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Leseplan löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Leseplan löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -212,9 +207,7 @@ namespace Elwig.Windows {
|
|||||||
await ViewModel.UpdateDeliverySchedule(ViewModel.SelectedDeliverySchedule?.Year, ViewModel.SelectedDeliverySchedule?.DsNr);
|
await ViewModel.UpdateDeliverySchedule(ViewModel.SelectedDeliverySchedule?.Year, ViewModel.SelectedDeliverySchedule?.DsNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Leseplan aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Leseplan aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
return;
|
return;
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using Elwig.Helpers;
|
|||||||
using Elwig.Helpers.Billing;
|
using Elwig.Helpers.Billing;
|
||||||
using Elwig.Models.Dtos;
|
using Elwig.Models.Dtos;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using MailKit.Net.Smtp;
|
using MailKit.Net.Smtp;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
@@ -690,7 +691,7 @@ namespace Elwig.Windows {
|
|||||||
PrintButton.IsEnabled = PrintDocument != null && !hasPreviewDocs;
|
PrintButton.IsEnabled = PrintDocument != null && !hasPreviewDocs;
|
||||||
EmailButton.IsEnabled = EmailDocuments != null && !hasPreviewDocs && App.Config.Smtp != null;
|
EmailButton.IsEnabled = EmailDocuments != null && !hasPreviewDocs && App.Config.Smtp != null;
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
} finally {
|
} finally {
|
||||||
UnlockInputs();
|
UnlockInputs();
|
||||||
GenerateButton.IsEnabled = true;
|
GenerateButton.IsEnabled = true;
|
||||||
@@ -774,7 +775,7 @@ namespace Elwig.Windows {
|
|||||||
throw new NotImplementedException("Invalid DocType");
|
throw new NotImplementedException("Invalid DocType");
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
return [];
|
return [];
|
||||||
} finally {
|
} finally {
|
||||||
App.MainDispatcher.Invoke(() => {
|
App.MainDispatcher.Invoke(() => {
|
||||||
@@ -787,9 +788,9 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
var hasPreviewDocs = memberDocs.Any(m => m.Docs.Any(d => d.Doc.IsPreview));
|
var hasPreviewDocs = memberDocs.Any(m => m.Docs.Any(d => d.Doc.IsPreview));
|
||||||
if (hasPreviewDocs) {
|
if (hasPreviewDocs) {
|
||||||
var res = MessageBox.Show("Einige der ausgewählten Dokumente sind nur als vorläufig zu betrachten und können daher nicht verschickt/ausgedruckt werden!\n\nDies könnte an einer noch nicht festgesetzen Auszahlungsvariante liegen oder daran, dass nicht alle Adressaten/Empfänger eine Traubengutschrift erhalten\n(\"Empfänger von Gutschriften\").\n\nSoll mit dem Generieren fortgefahren werden?",
|
if (!InteractionService.AskContinue("Vorläufige Dokumente",
|
||||||
"Vorläufige Dokumente", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
"Einige der ausgewählten Dokumente sind nur als vorläufig zu betrachten und können daher nicht verschickt/ausgedruckt werden!\n\n" +
|
||||||
if (res != MessageBoxResult.OK) {
|
"Dies könnte an einer noch nicht festgesetzen Auszahlungsvariante liegen oder daran, dass nicht alle Adressaten/Empfänger eine Traubengutschrift erhalten\n(\"Empfänger von Gutschriften\").\n\nSoll mit dem Generieren fortgefahren werden?")) {
|
||||||
throw new OperationCanceledException("Dokumentenerzeugung abgebrochen!");
|
throw new OperationCanceledException("Dokumentenerzeugung abgebrochen!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -892,9 +893,7 @@ namespace Elwig.Windows {
|
|||||||
GenerateButton.IsEnabled = false;
|
GenerateButton.IsEnabled = false;
|
||||||
LockInputs();
|
LockInputs();
|
||||||
|
|
||||||
var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?",
|
if (InteractionService.AskQuestion("Rundschreiben drucken", $"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?", false)) {
|
||||||
"Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
|
|
||||||
if (res == MessageBoxResult.Yes) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
if (App.Config.Debug) {
|
if (App.Config.Debug) {
|
||||||
@@ -932,11 +931,8 @@ namespace Elwig.Windows {
|
|||||||
client = await Task.Run(Utils.GetSmtpClient);
|
client = await Task.Run(Utils.GetSmtpClient);
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|
||||||
var res = MessageBox.Show($"Sollen {EmailDocuments.Count:N0} E-Mails verschickt werden?",
|
if (!InteractionService.AskQuestion("Rundschreiben verschicken", $"Sollen {EmailDocuments.Count:N0} E-Mails verschickt werden?", false))
|
||||||
"Rundschreiben verschicken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
|
|
||||||
if (res != MessageBoxResult.Yes) {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
var subject = EmailSubjectInput.Text;
|
var subject = EmailSubjectInput.Text;
|
||||||
@@ -965,10 +961,9 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
MessageBox.Show("Erfolgreich alle E-Mails verschickt!\n\nEs kann einige Minuten dauern, bis die E-Mails in den Posteingängen der Empfänger aufscheinen.", "Rundschreiben verschicken",
|
InteractionService.ShowInformation("Rundschreiben verschicken", "Erfolgreich alle E-Mails verschickt!\n\nEs kann einige Minuten dauern, bis die E-Mails in den Posteingängen der Empfänger aufscheinen.");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
} finally {
|
} finally {
|
||||||
if (client != null)
|
if (client != null)
|
||||||
await client.DisconnectAsync(true);
|
await client.DisconnectAsync(true);
|
||||||
|
|||||||
@@ -59,9 +59,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
if (App.NumWindows > 1 && !App.Current.Windows.Cast<Window>().Any(w => ((w as AdministrationWindow)?.IsEditing ?? false) || ((w as AdministrationWindow)?.IsCreating ?? false))) {
|
if (App.NumWindows > 1 && !App.Current.Windows.Cast<Window>().Any(w => ((w as AdministrationWindow)?.IsEditing ?? false) || ((w as AdministrationWindow)?.IsCreating ?? false))) {
|
||||||
var res = MessageBox.Show("Es sind noch weitere Fenster geöffnet.\nSollen alle Fenster geschlossen werden?",
|
if (!InteractionService.AskConfirmation("Elwig beenden", "Es sind noch weitere Fenster geöffnet.\nSollen alle Fenster geschlossen werden?")) {
|
||||||
"Elwig beenden", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
if (res != MessageBoxResult.Yes) {
|
|
||||||
evt.Cancel = true;
|
evt.Cancel = true;
|
||||||
} else {
|
} else {
|
||||||
Application.Current.Shutdown();
|
Application.Current.Shutdown();
|
||||||
@@ -84,9 +82,9 @@ namespace Elwig.Windows {
|
|||||||
try {
|
try {
|
||||||
using var client = await Utils.GetSmtpClient();
|
using var client = await Utils.GetSmtpClient();
|
||||||
await client!.DisconnectAsync(true);
|
await client!.DisconnectAsync(true);
|
||||||
MessageBox.Show("E-Mail-Einstellungen erfolgreich überprüft!", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);
|
InteractionService.ShowInformation("Erfolg", "E -Mail-Einstellungen erfolgreich überprüft!");
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -115,17 +113,17 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void Menu_Scale_SetDateTime_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Scale_SetDateTime_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (App.CommandScales.Count == 0) {
|
if (App.CommandScales.Count == 0) {
|
||||||
MessageBox.Show("Es sind keine geeigneten Waagen verfügbar!", "Datum und Uhrzeit setzen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowError("Datum und Uhrzeit setzen", "Es sind keine geeigneten Waagen verfügbar!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
foreach (var s in App.CommandScales) {
|
foreach (var s in App.CommandScales) {
|
||||||
try {
|
try {
|
||||||
await s.SetDateAndTime(DateTime.Now);
|
await s.SetDateAndTime(DateTime.Now);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MessageBox.Show("Datum und Uhrzeit auf entsprechenden Waagen gesetzt!", "Datum und Uhrzeit setzen", MessageBoxButton.OK, MessageBoxImage.Information);
|
InteractionService.ShowInformation("Datum und Uhrzeit setzen", "Datum und Uhrzeit auf entsprechenden Waagen gesetzt!");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Menu_Database_Query_Click(object sender, RoutedEventArgs evt) {
|
private void Menu_Database_Query_Click(object sender, RoutedEventArgs evt) {
|
||||||
@@ -157,29 +155,23 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Database_Backup_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Database_Backup_Click(object sender, RoutedEventArgs evt) {
|
||||||
try {
|
try {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Datenbank-Sicherung", $"database_{Utils.Today:yyyy-MM-dd}", "sql.zip");
|
||||||
Title = "Datenbank sichern - Elwig",
|
if (filename != null) {
|
||||||
FileName = $"database_{Utils.Today:yyyy-MM-dd}.sql.zip",
|
if (!filename.EndsWith(".sql.zip")) filename += ".sql.zip";
|
||||||
DefaultExt = "sql.zip",
|
|
||||||
Filter = "Komprimierte SQL-Datei (*.sql.zip)|*.sql.zip",
|
|
||||||
AddExtension = false,
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
if (!d.FileName.EndsWith(".sql.zip")) d.FileName += ".sql.zip";
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
await Database.ExportSql(d.FileName, true);
|
await Database.ExportSql(filename, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -192,16 +184,13 @@ namespace Elwig.Windows {
|
|||||||
Filter = "SQLite-Datenbank (*.sqlite3, *.sqlite3.zip, *.sql, *.sql.zip)|*.sqlite3;*.sqlite3.zip;*.sql;*.sql.zip",
|
Filter = "SQLite-Datenbank (*.sqlite3, *.sqlite3.zip, *.sql, *.sql.zip)|*.sqlite3;*.sqlite3.zip;*.sql;*.sql.zip",
|
||||||
};
|
};
|
||||||
if (d.ShowDialog() == true) {
|
if (d.ShowDialog() == true) {
|
||||||
var res = MessageBox.Show("Soll die Datenbank wirklich unwiederruflich durch die wiederhergestellte Version ersetzt werden?", "Datenbank wiederherstellen",
|
if (!InteractionService.AskContinue("Datenbank wiederherstellen", "Soll die Datenbank wirklich unwiederruflich durch die wiederhergestellte Version ersetzt werden?"))
|
||||||
MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (res != MessageBoxResult.OK)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await App.ReplaceDatabase(d.FileName);
|
await App.ReplaceDatabase(d.FileName);
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -266,15 +255,15 @@ namespace Elwig.Windows {
|
|||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (files.Count == 0) {
|
if (files.Count == 0) {
|
||||||
MessageBox.Show("Die Datenbank wurde noch nicht vom Hauptgerät hochgeladen!", "Datenbank herunterladen",
|
InteractionService.ShowError("Datenbank herunterladen", "Die Datenbank wurde noch nicht vom Hauptgerät hochgeladen!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var file = files[0];
|
var file = files[0];
|
||||||
|
|
||||||
var res = MessageBox.Show($"Es wurde eine komprimierte Datenbank (ca. {file.Size / 1024 / 1024} MB) vom {file.Timestamp:dd.MM.yyyy, HH:mm} gefunden.\n\nWollen Sie wirklich die aktuelle Datenbank unwiederruflich\nlöschen und durch die gefundene ersetzen?\n\nDas kann zu Datenverlust führen!", "Datenbank herunterladen",
|
if (!InteractionService.AskContinue("Datenbank herunterladen",
|
||||||
MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
$"Es wurde eine komprimierte Datenbank (ca. {file.Size / 1024 / 1024} MB) vom {file.Timestamp:dd.MM.yyyy, HH:mm} gefunden.\n\n" +
|
||||||
if (res != MessageBoxResult.OK)
|
$"Wollen Sie wirklich die aktuelle Datenbank unwiederruflich\nlöschen und durch die gefundene ersetzen?\n\n" +
|
||||||
|
$"Das kann zu Datenverlust führen!"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var filename = Path.Combine(App.TempPath, file.Name);
|
var filename = Path.Combine(App.TempPath, file.Name);
|
||||||
@@ -283,20 +272,21 @@ namespace Elwig.Windows {
|
|||||||
await client.DownloadAsync(file.Url, stream);
|
await client.DownloadAsync(file.Url, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
res = MessageBox.Show("Die Datenbank wurde erfolgreich heruntergeladen!\n\nSoll die Datenbank wirklich unwiederruflich ersetzt werden?\n\nWenn Sie unsicher sind sprechen Sie sich mit dem Benutzer des Hauptgerätes ab!", "Datenbank herunterladen",
|
if (!InteractionService.AskContinue("Datenbank herunterladen",
|
||||||
MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
"Die Datenbank wurde erfolgreich heruntergeladen!\n\n" +
|
||||||
if (res != MessageBoxResult.OK)
|
"Soll die Datenbank wirklich unwiederruflich ersetzt werden?\n\n" +
|
||||||
|
"Wenn Sie unsicher sind sprechen Sie sich mit dem Benutzer des Hauptgerätes ab!"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
await App.MainDispatcher.BeginInvoke(async () => {
|
await App.MainDispatcher.BeginInvoke(async () => {
|
||||||
await App.ReplaceDatabase(filename);
|
await App.ReplaceDatabase(filename);
|
||||||
});
|
});
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Datenbank herunterladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank herunterladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Datenbank herunterladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank herunterladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Datenbank herunterladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank herunterladen", exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -306,9 +296,7 @@ namespace Elwig.Windows {
|
|||||||
if (App.Config.SyncUrl == null)
|
if (App.Config.SyncUrl == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var res = MessageBox.Show("Sind Sie wirklich sicher, dass Sie die Datenbank dieses\nGerätes hochladen möchten? Das sollte nur vom Hauptgerät aus passieren!", "Datenbank hochladen",
|
if (!InteractionService.AskContinue("Datenbank hochladen", "Sind Sie wirklich sicher, dass Sie die Datenbank dieses\nGerätes hochladen möchten? Das sollte nur vom Hauptgerät aus passieren!"))
|
||||||
MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (res != MessageBoxResult.OK)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
@@ -317,14 +305,13 @@ namespace Elwig.Windows {
|
|||||||
var path = Path.Combine(App.TempPath, "database.sql.zip");
|
var path = Path.Combine(App.TempPath, "database.sql.zip");
|
||||||
await Database.ExportSql(path, true);
|
await Database.ExportSql(path, true);
|
||||||
await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword);
|
await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword);
|
||||||
MessageBox.Show($"Hochladen der gesamten Datenbank erfolgreich!", "Datenbank hochladen",
|
InteractionService.ShowInformation("Datenbank hochladen", $"Hochladen der gesamten Datenbank erfolgreich!");
|
||||||
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Datenbank hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (TaskCanceledException exc) {
|
} catch (TaskCanceledException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Datenbank hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank hochladen", "Eventuell Internetverbindung prüfen!", exc);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Datenbank hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Datenbank hochladen", exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -457,13 +444,8 @@ namespace Elwig.Windows {
|
|||||||
private async void OverUnderDeliveryButton_Click(object sender, RoutedEventArgs evt) {
|
private async void OverUnderDeliveryButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (SeasonInput.Value is not int year)
|
if (SeasonInput.Value is not int year)
|
||||||
return;
|
return;
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile($"Über-/Unterlieferungen {year}", $"Über-Unterlieferungen-{year}", "ods");
|
||||||
FileName = $"Über-Unterlieferungen-{year}.ods",
|
if (filename == null)
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Über-/Unterlieferungen {year} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == false)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
@@ -477,11 +459,11 @@ namespace Elwig.Windows {
|
|||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
var tbl1 = await OverUnderDeliveryData.ForSeason(ctx.OverUnderDeliveryRows, year);
|
var tbl1 = await OverUnderDeliveryData.ForSeason(ctx.OverUnderDeliveryRows, year);
|
||||||
var tbl2 = await AreaComUnderDeliveryData.ForSeason(ctx.AreaComUnderDeliveryRows, year);
|
var tbl2 = await AreaComUnderDeliveryData.ForSeason(ctx.AreaComUnderDeliveryRows, year);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(tbl1);
|
await ods.AddTable(tbl1);
|
||||||
await ods.AddTable(tbl2);
|
await ods.AddTable(tbl2);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -490,13 +472,8 @@ namespace Elwig.Windows {
|
|||||||
private async void BreakdownButton_Click(object sender, RoutedEventArgs evt) {
|
private async void BreakdownButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (SeasonInput.Value is not int year)
|
if (SeasonInput.Value is not int year)
|
||||||
return;
|
return;
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile($"Sorten-/Qualitätsaufschlüsselung {year}", $"Aufschlüsselung-{year}", "ods");
|
||||||
FileName = $"Aufschlüsselung-{year}.ods",
|
if (filename == null)
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Sorten-/Qualitätsaufschlüsselung {year} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == false)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
@@ -508,7 +485,7 @@ namespace Elwig.Windows {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
|
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
var tblTotal = await WeightBreakdownData.ForSeason(ctx.WeightBreakDownRows, year);
|
var tblTotal = await WeightBreakdownData.ForSeason(ctx.WeightBreakDownRows, year);
|
||||||
await ods.AddTable(tblTotal);
|
await ods.AddTable(tblTotal);
|
||||||
foreach (var branch in await ctx.FetchBranches().ToListAsync()) {
|
foreach (var branch in await ctx.FetchBranches().ToListAsync()) {
|
||||||
@@ -516,7 +493,7 @@ namespace Elwig.Windows {
|
|||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -525,13 +502,8 @@ namespace Elwig.Windows {
|
|||||||
private async void AreaCommitmentsButton_Click(object sender, RoutedEventArgs evt) {
|
private async void AreaCommitmentsButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (SeasonInput.Value is not int year)
|
if (SeasonInput.Value is not int year)
|
||||||
return;
|
return;
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile($"Flächenbindungen {year}", $"Flächenbindungen-{year}", "ods");
|
||||||
FileName = $"Flächenbindungen-{year}.ods",
|
if (filename == null)
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Flächenbindungen {year} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == false)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
@@ -544,10 +516,10 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
var tbl = await MemberAreaComsData.ForSeason(ctx.MemberAreaComsRows, year);
|
var tbl = await MemberAreaComsData.ForSeason(ctx.MemberAreaComsRows, year);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
@@ -556,13 +528,8 @@ namespace Elwig.Windows {
|
|||||||
private async void BreakdownMemberVarietyButton_Click(object sender, RoutedEventArgs evt) {
|
private async void BreakdownMemberVarietyButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (SeasonInput.Value is not int year)
|
if (SeasonInput.Value is not int year)
|
||||||
return;
|
return;
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile($"Liefermengen/Ertrag {year}", $"Liefermengen-Ertrag-{year}", "ods");
|
||||||
FileName = $"Liefermengen-Ertrag-{year}.ods",
|
if (filename == null)
|
||||||
DefaultExt = "ods",
|
|
||||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
|
||||||
Title = $"Liefermengen/Ertrag {year} speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == false)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
@@ -575,10 +542,10 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
var tbl = await MemberDeliveryYieldsPerVarietyData.ForSeason(ctx.MemberDeliveryPerVariantRows, year);
|
var tbl = await MemberDeliveryYieldsPerVarietyData.ForSeason(ctx.MemberDeliveryPerVariantRows, year);
|
||||||
using var ods = new OdsFile(d.FileName);
|
using var ods = new OdsFile(filename);
|
||||||
await ods.AddTable(tbl);
|
await ods.AddTable(tbl);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|||||||
@@ -399,9 +399,7 @@ namespace Elwig.Windows {
|
|||||||
await MemberService.DeleteMember(m.MgNr, d.DeletePaymentData, d.DeleteDeliveries, d.DeleteAreaComs);
|
await MemberService.DeleteMember(m.MgNr, d.DeletePaymentData, d.DeleteDeliveries, d.DeleteAreaComs);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Mitglied löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Mitglied löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -422,9 +420,7 @@ namespace Elwig.Windows {
|
|||||||
mgnr = await ViewModel.UpdateMember(ViewModel.SelectedMember?.MgNr);
|
mgnr = await ViewModel.UpdateMember(ViewModel.SelectedMember?.MgNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Mitglied aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Mitglied aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
SaveButton.IsEnabled = true;
|
SaveButton.IsEnabled = true;
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
return;
|
return;
|
||||||
@@ -512,7 +508,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -534,9 +530,7 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void Menu_MemberDataSheet_Email_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_MemberDataSheet_Email_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (ViewModel.SelectedMember is not Member m) return;
|
if (ViewModel.SelectedMember is not Member m) return;
|
||||||
var res = MessageBox.Show("Soll eine E-Mail verschickt werden?", "Stammdatenblatt verschicken",
|
if (!InteractionService.AskQuestion("Stammdatenblatt verschicken", "Soll eine E-Mail verschickt werden?", true))
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes);
|
|
||||||
if (res != MessageBoxResult.Yes)
|
|
||||||
return;
|
return;
|
||||||
await MemberService.GenerateMemberDataSheet(m, ExportMode.Email);
|
await MemberService.GenerateMemberDataSheet(m, ExportMode.Email);
|
||||||
}
|
}
|
||||||
@@ -566,9 +560,7 @@ namespace Elwig.Windows {
|
|||||||
var year = (int?)((sender as MenuItem)?.Parent as MenuItem)?.Tag;
|
var year = (int?)((sender as MenuItem)?.Parent as MenuItem)?.Tag;
|
||||||
if (ViewModel.SelectedMember is not Member m || year == null)
|
if (ViewModel.SelectedMember is not Member m || year == null)
|
||||||
return;
|
return;
|
||||||
var res = MessageBox.Show("Soll eine E-Mail verschickt werden?", "Anlieferungsbestätigung verschicken",
|
if (!InteractionService.AskQuestion("Anlieferungsbestätigung verschicken", "Soll eine E-Mail verschickt werden?", true))
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes);
|
|
||||||
if (res != MessageBoxResult.Yes)
|
|
||||||
return;
|
return;
|
||||||
await MemberService.GenerateDeliveryConfirmation(m, (int)year, ExportMode.Email);
|
await MemberService.GenerateDeliveryConfirmation(m, (int)year, ExportMode.Email);
|
||||||
}
|
}
|
||||||
@@ -602,9 +594,7 @@ namespace Elwig.Windows {
|
|||||||
var avnr = (int?)((sender as MenuItem)?.Parent as MenuItem)?.Tag;
|
var avnr = (int?)((sender as MenuItem)?.Parent as MenuItem)?.Tag;
|
||||||
if (ViewModel.SelectedMember is not Member m || year == null || avnr == null)
|
if (ViewModel.SelectedMember is not Member m || year == null || avnr == null)
|
||||||
return;
|
return;
|
||||||
var res = MessageBox.Show("Soll eine E-Mail verschickt werden?", "Traubengutschrift verschicken",
|
if (!InteractionService.AskQuestion("Traubengutschrift verschicken", "Soll eine E-Mail verschickt werden?", true))
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes);
|
|
||||||
if (res != MessageBoxResult.Yes)
|
|
||||||
return;
|
return;
|
||||||
await MemberService.GenerateCreditNote(m, (int)year, (int)avnr, ExportMode.Email);
|
await MemberService.GenerateCreditNote(m, (int)year, (int)avnr, ExportMode.Email);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -192,18 +193,14 @@ namespace Elwig.Windows {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
ControlUtils.SelectItemWithPk(WbGlKgs, k.KgNr);
|
ControlUtils.SelectItemWithPk(WbGlKgs, k.KgNr);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Katastralgemeinde aktivieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Katastralgemeinde aktivieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DeactivateKgButton_Click(object sender, RoutedEventArgs e) {
|
private async void DeactivateKgButton_Click(object sender, RoutedEventArgs e) {
|
||||||
if (WbGlKgs.SelectedItem is not AT_Kg k || k.WbKg == null) return;
|
if (WbGlKgs.SelectedItem is not AT_Kg k || k.WbKg == null) return;
|
||||||
var r = MessageBox.Show(
|
if (!InteractionService.AskConfirmation("Katastralgemeinde deaktivieren", $"Sollen alle Riede und Stammgemeinden-Einträge von der KG {k.Name} wirklich unwiderruflich gelöscht werden?"))
|
||||||
$"Sollen alle Riede und Stammgemeinden-Einträge von der KG {k.Name} wirklich unwiderruflich gelöscht werden?",
|
return;
|
||||||
"Katastralgemeinde deaktivieren", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
if (r != MessageBoxResult.Yes) return;
|
|
||||||
try {
|
try {
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
ctx.Remove(k.WbKg);
|
ctx.Remove(k.WbKg);
|
||||||
@@ -213,9 +210,7 @@ namespace Elwig.Windows {
|
|||||||
ControlUtils.SelectItemWithPk(WbKgs, k.KgNr);
|
ControlUtils.SelectItemWithPk(WbKgs, k.KgNr);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
await ForceContextReload();
|
await ForceContextReload();
|
||||||
var str = "Der Eintrag konnte nicht aus der Datenbank gelöscht werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Katastralgemeinde deaktivieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Katastralgemeinde deaktivieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using Elwig.Helpers;
|
|||||||
using Elwig.Helpers.Billing;
|
using Elwig.Helpers.Billing;
|
||||||
using Elwig.Models.Dtos;
|
using Elwig.Models.Dtos;
|
||||||
using Elwig.Models.Entities;
|
using Elwig.Models.Entities;
|
||||||
|
using Elwig.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -168,9 +169,7 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("GA Nachzeichnen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "GA Nachzeichnen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -184,9 +183,7 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("GA Nachzeichnen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "GA Nachzeichnen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -303,9 +300,7 @@ namespace Elwig.Windows {
|
|||||||
});
|
});
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Benutzerdefinierten Zu-/Abschlag speichern", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Benutzerdefinierten Zu-/Abschlag speichern", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,9 +90,7 @@ namespace Elwig.Windows {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
ControlUtils.SelectItem(PaymentVariantList, v);
|
ControlUtils.SelectItem(PaymentVariantList, v);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Auszahlungsvariante erstellen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Auszahlungsvariante erstellen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -106,9 +104,7 @@ namespace Elwig.Windows {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
ControlUtils.SelectItem(PaymentVariantList, n);
|
ControlUtils.SelectItem(PaymentVariantList, n);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Auszahlungsvariante kopieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Auszahlungsvariante kopieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -116,19 +112,14 @@ namespace Elwig.Windows {
|
|||||||
private async void DeleteButton_Click(object sender, RoutedEventArgs evt) {
|
private async void DeleteButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (PaymentVariantList.SelectedItem is not PaymentVar v || !v.TestVariant)
|
if (PaymentVariantList.SelectedItem is not PaymentVar v || !v.TestVariant)
|
||||||
return;
|
return;
|
||||||
var res = MessageBox.Show(
|
if (!InteractionService.AskContinue("Auszahlungsvariante löschen", $"Soll die Auszahlungsvariante \"{v.Name}\" wirklich unwiderruflich gelöscht werden?"))
|
||||||
$"Soll die Auszahlungsvariante \"{v.Name}\" wirklich unwiderruflich gelöscht werden?",
|
|
||||||
"Auszahlungsvariante löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
|
||||||
if (res != MessageBoxResult.OK)
|
|
||||||
return;
|
return;
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
try {
|
try {
|
||||||
await PaymentVariantService.DeletePaymentVariant(v.Year, v.AvNr);
|
await PaymentVariantService.DeletePaymentVariant(v.Year, v.AvNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Auszahlungsvariante löschen", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Auszahlungsvariante löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
@@ -142,7 +133,7 @@ namespace Elwig.Windows {
|
|||||||
await PaymentVariantService.Calculate(v.Year, v.AvNr);
|
await PaymentVariantService.Calculate(v.Year, v.AvNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Berechnungsfehler", exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
ViewModel.CalculateIsEnabled = true;
|
ViewModel.CalculateIsEnabled = true;
|
||||||
@@ -204,7 +195,7 @@ namespace Elwig.Windows {
|
|||||||
await PaymentVariantService.Commit(v.Year, v.AvNr);
|
await PaymentVariantService.Commit(v.Year, v.AvNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
ViewModel.RevertIsEnabled = true;
|
ViewModel.RevertIsEnabled = true;
|
||||||
@@ -213,11 +204,9 @@ namespace Elwig.Windows {
|
|||||||
private async void RevertButton_Click(object sender, RoutedEventArgs evt) {
|
private async void RevertButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||||
return;
|
return;
|
||||||
var res = MessageBox.Show(
|
if (!InteractionService.AskConfirmation("Traubengutschriften löschen",
|
||||||
"Sollen wirklich alle festgesetzten Traubengutschriften der ausgewählten Auszahlungsvariante unwiderruflich gelöscht werden?\n\n" +
|
"Sollen wirklich alle festgesetzten Traubengutschriften der ausgewählten Auszahlungsvariante unwiderruflich gelöscht werden?\n\n" +
|
||||||
"Dies ist im Allgemeinen nie empfohlen. Handelt es sich um die aktuellste Auszahlungsvariante könnte das eine Ausnahme sein.",
|
"Dies ist im Allgemeinen nie empfohlen. Handelt es sich um die aktuellste Auszahlungsvariante könnte das eine Ausnahme sein."))
|
||||||
"Traubengutschriften löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
|
||||||
if (res != MessageBoxResult.Yes)
|
|
||||||
return;
|
return;
|
||||||
ViewModel.RevertIsEnabled = false;
|
ViewModel.RevertIsEnabled = false;
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
@@ -225,7 +214,7 @@ namespace Elwig.Windows {
|
|||||||
await PaymentVariantService.Revert(v.Year, v.AvNr);
|
await PaymentVariantService.Revert(v.Year, v.AvNr);
|
||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException(exc);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
ViewModel.CommitIsEnabled = true;
|
ViewModel.CommitIsEnabled = true;
|
||||||
@@ -235,7 +224,7 @@ namespace Elwig.Windows {
|
|||||||
if (PaymentVariantList.SelectedItem is not PaymentVar v) {
|
if (PaymentVariantList.SelectedItem is not PaymentVar v) {
|
||||||
return;
|
return;
|
||||||
} else if (v.TransferDate == null) {
|
} else if (v.TransferDate == null) {
|
||||||
MessageBox.Show("Überweisungsdatum muss gesetzt sein!", "Exportieren nicht möglich", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowError("Exportieren nicht möglich", "Überweisungsdatum muss gesetzt sein!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await PaymentVariantService.GenerateEbics(v.Year, v.AvNr);
|
await PaymentVariantService.GenerateEbics(v.Year, v.AvNr);
|
||||||
@@ -256,9 +245,7 @@ namespace Elwig.Windows {
|
|||||||
App.HintContextChange();
|
App.HintContextChange();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
await ForceContextReload();
|
await ForceContextReload();
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
InteractionService.ShowDbException("Auszahlungsvariante aktualisieren", exc);
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
|
||||||
MessageBox.Show(str, "Auszahlungsvariante aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
await EnsureContextRenewed();
|
await EnsureContextRenewed();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
using Elwig.Helpers;
|
using Elwig.Helpers;
|
||||||
using Elwig.Helpers.Export;
|
using Elwig.Helpers.Export;
|
||||||
using Microsoft.Win32;
|
using Elwig.Services;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
@@ -42,9 +42,9 @@ namespace Elwig.Windows {
|
|||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await DisplayQuery(QueryInput.Text);
|
await DisplayQuery(QueryInput.Text);
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
} catch (Exception e) {
|
} catch (Exception exc) {
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
MessageBox.Show(e.Message, "Fehler beim Ausführen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Fehler beim Ausführen", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,21 +85,16 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static async Task SaveQuery(string sqlQuery) {
|
private static async Task SaveQuery(string sqlQuery) {
|
||||||
var d = new SaveFileDialog() {
|
var filename = InteractionService.SaveFile("Datenbank Abfrage", "Abfrage", "csv");
|
||||||
FileName = $"Abfrage.csv",
|
if (filename != null) {
|
||||||
DefaultExt = "csv",
|
|
||||||
Filter = "CSV-Datei (*.csv)|*.csv",
|
|
||||||
Title = $"Datenbank Abfrage speichern unter - Elwig"
|
|
||||||
};
|
|
||||||
if (d.ShowDialog() == true) {
|
|
||||||
Mouse.OverrideCursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
await Task.Run(async () => {
|
await Task.Run(async () => {
|
||||||
try {
|
try {
|
||||||
var (header, rows) = await ExecuteQuery(sqlQuery);
|
var (header, rows) = await ExecuteQuery(sqlQuery);
|
||||||
using var csv = new CsvSimple(d.FileName, ';', Utils.UTF8BOM);
|
using var csv = new CsvSimple(filename, ';', Utils.UTF8BOM);
|
||||||
await csv.ExportAsync(rows.Prepend([.. header.Select(h => h.ColumnName)]));
|
await csv.ExportAsync(rows.Prepend([.. header.Select(h => h.ColumnName)]));
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler beim Ausführen", MessageBoxButton.OK, MessageBoxImage.Error);
|
InteractionService.ShowException("Fehler beim Ausführen", exc);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user