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:
@@ -6,7 +6,6 @@ using Elwig.Models.Dtos;
|
||||
using Elwig.Models.Entities;
|
||||
using Elwig.ViewModels;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -190,23 +189,18 @@ namespace Elwig.Services {
|
||||
|
||||
public static async Task GenerateSummary(PaymentVar v, ExportMode mode) {
|
||||
if (mode == ExportMode.SaveList) {
|
||||
var d = new SaveFileDialog() {
|
||||
FileName = $"Variantendaten-{v.Name.Trim().Replace(' ', '-')}.ods",
|
||||
DefaultExt = "ods",
|
||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
||||
Title = $"Variantendaten {v.Name} speichern unter - Elwig"
|
||||
};
|
||||
if (d.ShowDialog() == false)
|
||||
var filename = InteractionService.SaveFile($"Variantendaten {v.Name}", $"Variantendaten-{v.Name.Trim().Replace(' ', '-')}", "ods");
|
||||
if (filename == null)
|
||||
return;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
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);
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
InteractionService.ShowException(exc);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -217,7 +211,7 @@ namespace Elwig.Services {
|
||||
using var doc = await PaymentVariantSummary.Initialize(v.Year, v.AvNr);
|
||||
await Utils.ExportDocument(doc, mode);
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
InteractionService.ShowException(exc);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -230,31 +224,26 @@ namespace Elwig.Services {
|
||||
|
||||
var withoutIban = v.Credits.Count(c => c.Member.Iban == null);
|
||||
if (withoutIban > 0) {
|
||||
var r = MessageBox.Show($"Achtung: Für {withoutIban:N0} Mitglieder ist kein IBAN hinterlegt.\n\nDiese werden NICHT exportiert.",
|
||||
"Mitglieder ohne IBAN", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||
if (r != MessageBoxResult.OK) return;
|
||||
if (!InteractionService.AskContinue("Mitglieder ohne IBAN",
|
||||
$"Achtung: Für {withoutIban:N0} Mitglieder ist kein IBAN hinterlegt.\n\nDiese werden NICHT exportiert."))
|
||||
return;
|
||||
}
|
||||
var withNegAmount = v.Credits.Count(c => c.Amount <= 0);
|
||||
if (withNegAmount > 0) {
|
||||
var r = MessageBox.Show($"Achtung: Es gibt {withNegAmount:N0} Traubengutschriften mit negativem Betrag.\n\nDiese werden NICHT exportiert.",
|
||||
"Traubengutschriften mit negativem Betrag", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.OK);
|
||||
if (r != MessageBoxResult.OK) return;
|
||||
if (!InteractionService.AskContinue("Traubengutschriften mit negativem Betrag",
|
||||
$"Achtung: Es gibt {withNegAmount:N0} Traubengutschriften mit negativem Betrag.\n\nDiese werden NICHT exportiert."))
|
||||
return;
|
||||
}
|
||||
|
||||
var d = new SaveFileDialog() {
|
||||
FileName = $"{App.Client.NameToken}-Überweisungsdaten-{v.Year}-{v.Name.Trim().Replace(' ', '-')}.{Ebics.FileExtension}",
|
||||
DefaultExt = Ebics.FileExtension,
|
||||
Filter = "EBICS-Datei (*.xml)|*.xml",
|
||||
Title = $"Überweisungsdaten speichern unter - Elwig",
|
||||
};
|
||||
if (d.ShowDialog() == true) {
|
||||
var filename = InteractionService.SaveFile("Überweisungsdaten", $"{App.Client.NameToken}-Überweisungsdaten-{v.Year}-{v.Name.Trim().Replace(' ', '-')}", Ebics.FileExtension);
|
||||
if (filename != null) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
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));
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
InteractionService.ShowException(exc);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -262,22 +251,17 @@ namespace Elwig.Services {
|
||||
}
|
||||
|
||||
public static async Task GenerateAccountingList(int year, int avnr, string name) {
|
||||
var d = new SaveFileDialog() {
|
||||
FileName = $"{App.Client.NameToken}-Buchungsliste-{year}-{name.Trim().Replace(' ', '-')}.ods",
|
||||
DefaultExt = "ods",
|
||||
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
||||
Title = $"Buchungsliste speichern unter - Elwig"
|
||||
};
|
||||
if (d.ShowDialog() == true) {
|
||||
var filename = InteractionService.SaveFile("Buchungsliste", $"{App.Client.NameToken}-Buchungsliste-{year}-{name.Trim().Replace(' ', '-')}", "ods");
|
||||
if (filename != null) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
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);
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
InteractionService.ShowException(exc);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -383,11 +367,10 @@ namespace Elwig.Services {
|
||||
}
|
||||
}
|
||||
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" +
|
||||
"Soll trotzdem forgefahren werden?",
|
||||
"Kleinerer Gesamtbetrag", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||
if (res != MessageBoxResult.OK)
|
||||
"Soll trotzdem forgefahren werden?"))
|
||||
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();
|
||||
}
|
||||
if (membersNeg.Count > 0) {
|
||||
var res = MessageBox.Show($"Achtung: Bei {membersNeg.Count:N0} Mitglied(ern) ist der Auszahlungsbetrag negativ!\n\n" +
|
||||
$"{string.Join(", ", membersNeg.Select(m => $"{m.AdministrativeName} ({m.MgNr})"))}",
|
||||
"Negativer Auszahlungsbetrag", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
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})"))}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user