[#3] MemberAdminWindow: Add Export item in menu
This commit is contained in:
@ -8,6 +8,7 @@ using System.Text.Json.Nodes;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Elwig.Helpers.Export {
|
||||
public static class ElwigData {
|
||||
@ -16,6 +17,8 @@ namespace Elwig.Helpers.Export {
|
||||
|
||||
public static readonly string ImportedTxt = Path.Combine(App.DataPath, "imported.txt");
|
||||
|
||||
private static readonly JsonSerializerOptions JsonOpts = new() { Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping };
|
||||
|
||||
public static async Task<string[]> GetImportedFiles() {
|
||||
try {
|
||||
return await File.ReadAllLinesAsync(ImportedTxt, Utils.UTF8);
|
||||
@ -338,7 +341,7 @@ namespace Elwig.Helpers.Export {
|
||||
["parts"] = Deliveries.Value.Deliveries.Sum(d => d.Parts.Count),
|
||||
["filters"] = new JsonArray(Deliveries.Value.Filters.Select(f => (JsonNode)f).ToArray()),
|
||||
};
|
||||
await writer.WriteAsync(obj.ToJsonString());
|
||||
await writer.WriteAsync(obj.ToJsonString(JsonOpts));
|
||||
}
|
||||
|
||||
// TODO encrypt files
|
||||
@ -346,21 +349,21 @@ namespace Elwig.Helpers.Export {
|
||||
var json = zip.CreateEntry("members.json", CompressionLevel.SmallestSize);
|
||||
using var writer = new StreamWriter(json.Open(), Utils.UTF8);
|
||||
foreach (var m in Members.Value.Members) {
|
||||
await writer.WriteLineAsync(m.ToJson().ToJsonString());
|
||||
await writer.WriteLineAsync(m.ToJson().ToJsonString(JsonOpts));
|
||||
}
|
||||
}
|
||||
if (AreaComs != null) {
|
||||
var json = zip.CreateEntry("area_commitments.json", CompressionLevel.SmallestSize);
|
||||
using var writer = new StreamWriter(json.Open(), Utils.UTF8);
|
||||
foreach (var c in AreaComs.Value.AreaComs) {
|
||||
await writer.WriteLineAsync(c.ToJson().ToJsonString());
|
||||
await writer.WriteLineAsync(c.ToJson().ToJsonString(JsonOpts));
|
||||
}
|
||||
}
|
||||
if (Deliveries != null) {
|
||||
var json = zip.CreateEntry("deliveries.json", CompressionLevel.SmallestSize);
|
||||
using var writer = new StreamWriter(json.Open(), Utils.UTF8);
|
||||
foreach (var d in Deliveries.Value.Deliveries) {
|
||||
await writer.WriteLineAsync(d.ToJson().ToJsonString());
|
||||
await writer.WriteLineAsync(d.ToJson().ToJsonString(JsonOpts));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -606,7 +609,7 @@ namespace Elwig.Helpers.Export {
|
||||
Temperature = p["temperature"]?.AsValue().GetValue<double>(),
|
||||
Acid = p["acid"]?.AsValue().GetValue<double>(),
|
||||
ScaleId = p["scale_id"]?.AsValue().GetValue<string>(),
|
||||
WeighingData = p["weighing_data"]?.AsObject().ToJsonString(),
|
||||
WeighingData = p["weighing_data"]?.AsObject().ToJsonString(JsonOpts),
|
||||
WeighingReason = p["weighing_reason"]?.AsValue().GetValue<string>(),
|
||||
}).ToList(), json["parts"]!.AsArray().SelectMany(p => p!["modids"]!.AsArray().Select(m => new DeliveryPartModifier {
|
||||
Year = year,
|
||||
|
Reference in New Issue
Block a user