[#3] Windows: Add option to export selected member or delivery only
All checks were successful
Test / Run tests (push) Successful in 2m23s

This commit is contained in:
2024-07-30 14:24:53 +02:00
parent f69d2809f3
commit db4de5b5fe
6 changed files with 149 additions and 60 deletions

View File

@ -19,6 +19,10 @@ using System.Net.Http;
namespace Elwig.Services {
public static class MemberService {
public enum ExportSubject {
All, AllActive, FromFilters, Selected,
};
public static async Task InitInputs(this MemberAdminViewModel vm) {
using var ctx = new AppDbContext();
vm.MgNrString = $"{await ctx.NextMgNr()}";
@ -359,19 +363,26 @@ namespace Elwig.Services {
Mouse.OverrideCursor = null;
}
public static async Task GenerateMemberList(this MemberAdminViewModel vm, int modeWho, ExportMode exportMode) {
public static async Task GenerateMemberList(this MemberAdminViewModel vm, ExportSubject subject, ExportMode mode) {
using var ctx = new AppDbContext();
IQueryable<Member> query;
List<string> filterNames = [];
if (modeWho == 0) {
if (subject == ExportSubject.All) {
query = ctx.Members;
} else if (subject == ExportSubject.AllActive) {
query = ctx.Members.Where(m => m.IsActive);
filterNames.Add("aktive Mitglieder");
} else if (modeWho == 1) {
} else if (subject == ExportSubject.FromFilters) {
var (f, q, _) = await vm.GetFilters(ctx);
query = q;
filterNames.AddRange(f);
} else if (subject == ExportSubject.Selected) {
var mgnr = vm.SelectedMember?.MgNr;
if (mgnr == null) return;
query = ctx.Members.Where(m => m.MgNr == mgnr);
filterNames.Add($"{mgnr}");
} else {
query = ctx.Members;
throw new ArgumentException("Invalid value for ExportSubject");
}
if (vm.MemberListOrderByMgNr) {
@ -393,7 +404,7 @@ namespace Elwig.Services {
.ThenBy(m => m.MgNr);
}
if (exportMode == ExportMode.SaveList) {
if (mode == ExportMode.SaveList) {
var d = new SaveFileDialog() {
FileName = $"{MemberList.Name}.ods",
DefaultExt = "ods",
@ -411,9 +422,9 @@ namespace Elwig.Services {
}
Mouse.OverrideCursor = null;
}
} else if (exportMode == ExportMode.Export) {
} else if (mode == ExportMode.Export) {
var d = new SaveFileDialog() {
FileName = $"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",
DefaultExt = ".elwig.zip",
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
Title = $"{MemberList.Name} speichern unter - Elwig"
@ -433,7 +444,7 @@ namespace Elwig.Services {
}
Mouse.OverrideCursor = null;
}
} else if (exportMode == ExportMode.Upload && App.Config.SyncUrl != null) {
} else if (mode == ExportMode.Upload && App.Config.SyncUrl != null) {
Mouse.OverrideCursor = Cursors.AppStarting;
try {
var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip";
@ -467,7 +478,7 @@ namespace Elwig.Services {
try {
var data = await MemberListData.FromQuery(query, filterNames);
using var doc = new MemberList(string.Join(" / ", filterNames), data);
await Utils.ExportDocument(doc, exportMode);
await Utils.ExportDocument(doc, mode);
} catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}