[#3] Windows: Add option to export selected member or delivery only
All checks were successful
Test / Run tests (push) Successful in 2m23s
All checks were successful
Test / Run tests (push) Successful in 2m23s
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user