Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
1fc736ce16 | |||
ce39797d8b | |||
94a6dd5312 | |||
b67857ae22 | |||
a48ea8e7e2 | |||
0f87446906 | |||
e0fcaf1f53 |
45
CHANGELOG.md
45
CHANGELOG.md
@ -3,10 +3,49 @@ Changelog
|
||||
=========
|
||||
|
||||
|
||||
[v0.12.0][v0.12.0] (2024-09-24) {#v0.12.0}
|
||||
------------------------------------------
|
||||
|
||||
### Behobene Fehler {#v0.12.0-bugfixes}
|
||||
|
||||
* Das Drucken von Dokumenten ist wieder möglich. (94a6dd5312, a48ea8e7e2)
|
||||
|
||||
### Sonstiges {#v0.12.0-misc}
|
||||
|
||||
* Versuch 1: `Database is locked` Fehler beheben. ([#56][i56])
|
||||
|
||||
[v0.12.0]: https://git.necronda.net/winzer/elwig/releases/tag/v0.12.0
|
||||
[i56]: https://git.necronda.net/winzer/elwig/issues/56
|
||||
|
||||
|
||||
|
||||
|
||||
[v0.11.4][v0.11.4] (2024-09-22) {#v0.11.4}
|
||||
------------------------------------------
|
||||
|
||||
> [!WARNING]
|
||||
> Aufgrund eines Fehlers ist in dieser Version das Drucken von Dokumenten nicht möglich!
|
||||
>
|
||||
> Es wird empfohlen die nächste Version zu verwenden.
|
||||
|
||||
### Behobene Fehler {#v0.11.4-bugfixes}
|
||||
|
||||
* In den Tooltips für Gewicht und Flächenbindungen wurden die Abstände wieder hergestellt. (e0fcaf1f53)
|
||||
|
||||
[v0.11.4]: https://git.necronda.net/winzer/elwig/releases/tag/v0.11.4
|
||||
|
||||
|
||||
|
||||
|
||||
[v0.11.3][v0.11.3] (2024-09-22) {#v0.11.3}
|
||||
------------------------------------------
|
||||
|
||||
### Sonstiges {#v0.11.3-misc}
|
||||
> [!WARNING]
|
||||
> Aufgrund eines Fehlers ist in dieser Version das Drucken von Dokumenten nicht möglich!
|
||||
>
|
||||
> Es wird empfohlen Version 0.12.0 zu verwenden.
|
||||
|
||||
### Behobene Fehler {#v0.11.3-bugfixes}
|
||||
|
||||
* Im Mitglieder-Fenster (`MemberAdminWindow`) wurde das Berechnen der Mitgliederdaten pro Jahr und Mitglied rückgängig gemacht. (1d187c25f3)
|
||||
|
||||
@ -19,9 +58,9 @@ Changelog
|
||||
------------------------------------------
|
||||
|
||||
> [!WARNING]
|
||||
> Aufgrund eines Fehlers kann in dieser Version das Öffnen des Mitglieder-Fensters deutlich länger dauern!
|
||||
> Aufgrund eines Fehlers ist in dieser Version das Drucken von Dokumenten nicht möglich!
|
||||
>
|
||||
> Es wird empfohlen die nächste Version zu verwenden.
|
||||
> Es wird empfohlen Version 0.12.0 zu verwenden.
|
||||
|
||||
### Neue Funktionen {#v0.11.2-features}
|
||||
|
||||
|
@ -153,7 +153,7 @@ namespace Elwig.Documents {
|
||||
|
||||
public async Task Print(int copies = 1) {
|
||||
if (PdfPath == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
await Pdf.Print(PdfPath, copies);
|
||||
await Pdf.Print(PdfPath, copies, DoublePaged);
|
||||
}
|
||||
|
||||
public void Show() {
|
||||
|
@ -7,7 +7,7 @@
|
||||
<UseWPF>true</UseWPF>
|
||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||
<Version>0.11.3</Version>
|
||||
<Version>0.12.0</Version>
|
||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
@ -34,6 +34,8 @@
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2739.15" />
|
||||
<PackageReference Include="NJsonSchema" Version="11.0.2" />
|
||||
<PackageReference Include="PdfiumViewer" Version="2.13.0" />
|
||||
<PackageReference Include="PdfiumViewer.Native.x86_64.no_v8-no_xfa" Version="2018.4.8.256" />
|
||||
<PackageReference Include="RazorLight" Version="2.3.1" />
|
||||
<PackageReference Include="ScottPlot.WPF" Version="5.0.39" />
|
||||
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||
|
@ -78,7 +78,7 @@ namespace Elwig.Helpers {
|
||||
public bool HasBackendChanged => SavedLastWriteTime != LastWriteTime;
|
||||
|
||||
public static string? ConnectionStringOverride { get; set; } = null;
|
||||
public static string ConnectionString => ConnectionStringOverride ?? $"Data Source=\"{App.Config.DatabaseFile}\"; Mode=ReadWrite; Foreign Keys=True; Cache=Default";
|
||||
public static string ConnectionString => ConnectionStringOverride ?? $"Data Source=\"{App.Config.DatabaseFile}\"; Mode=ReadWrite; Foreign Keys=True; Cache=Default; Pooling=False";
|
||||
|
||||
private readonly Dictionary<int, Dictionary<int, Dictionary<string, AreaComBucket>>> _memberAreaCommitmentBuckets = [];
|
||||
private readonly Dictionary<int, Dictionary<int, Dictionary<string, int>>> _memberDeliveryBuckets = [];
|
||||
|
@ -8,16 +8,12 @@ using System.Windows;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using PdfiumViewer;
|
||||
using System.Drawing.Printing;
|
||||
|
||||
namespace Elwig.Helpers.Printing {
|
||||
public static class Pdf {
|
||||
|
||||
private static readonly string PdfToPrinter = new string[] { App.ExePath }
|
||||
.Union(Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? [])
|
||||
.Select(x => Path.Combine(x, "PDFtoPrinter.exe"))
|
||||
.Where(File.Exists)
|
||||
.FirstOrDefault() ?? throw new FileNotFoundException("PDFtoPrinter executable not found");
|
||||
private static readonly string WinziPrint = new string[] { App.ExePath }
|
||||
.Union(Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? [])
|
||||
.Select(x => Path.Combine(x, "WinziPrint.exe"))
|
||||
@ -92,21 +88,24 @@ namespace Elwig.Helpers.Printing {
|
||||
});
|
||||
}
|
||||
|
||||
public static async Task Print(string path, int copies = 1) {
|
||||
public static async Task Print(string path, int copies = 1, bool doublePaged = false) {
|
||||
await Print(path, new() {
|
||||
Copies = (short)copies,
|
||||
Collate = true,
|
||||
Duplex = doublePaged ? Duplex.Vertical : Duplex.Simplex,
|
||||
});
|
||||
}
|
||||
|
||||
public static Task Print(string path, PrinterSettings settings) {
|
||||
try {
|
||||
var p = new Process() { StartInfo = new() {
|
||||
FileName = PdfToPrinter,
|
||||
CreateNoWindow = true,
|
||||
UseShellExecute = false,
|
||||
} };
|
||||
p.StartInfo.ArgumentList.Add(path);
|
||||
p.StartInfo.ArgumentList.Add("/s");
|
||||
p.StartInfo.ArgumentList.Add($"copies={copies}");
|
||||
p.Start();
|
||||
await p.WaitForExitAsync();
|
||||
using var doc = PdfDocument.Load(path);
|
||||
using var printDoc = doc.CreatePrintDocument(PdfPrintMode.CutMargin);
|
||||
printDoc.PrinterSettings = settings;
|
||||
printDoc.Print();
|
||||
} catch (Exception e) {
|
||||
MessageBox.Show("Beim Drucken ist ein Fehler aufgetreten:\n\n" + e.Message, "Fehler beim Drucken");
|
||||
MessageBox.Show("Beim Drucken ist ein Fehler aufgetreten:\n\n" + e.Message, "Fehler beim Drucken", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -242,8 +242,8 @@ namespace Elwig.Services {
|
||||
AddToolTipCell(grid, "Lieferrecht", 0, 4, 1, false, false, true);
|
||||
int rowNum = 1;
|
||||
foreach (var row in data) {
|
||||
if (rowNum == 2 || (rowNum != 1 && row.Item1 != null)) rowNum++;
|
||||
AddToolTipRow(grid, rowNum++, row.Item1, row.Item2, row.Item3, row.Item4, row.Item5);
|
||||
if (rowNum == 2) rowNum++;
|
||||
}
|
||||
return grid;
|
||||
}
|
||||
|
@ -494,41 +494,35 @@ namespace Elwig.Services {
|
||||
WeighingReason = vm.ManualWeighingReason,
|
||||
};
|
||||
|
||||
try {
|
||||
if (oldDelivery != null && ctx.Entry(oldDelivery) is EntityEntry<Delivery> entry) {
|
||||
entry.State = EntityState.Detached;
|
||||
}
|
||||
if (!deliveryNew) {
|
||||
ctx.Update(d);
|
||||
} else {
|
||||
ctx.Add(d);
|
||||
}
|
||||
if (!partNew) {
|
||||
ctx.Update(p);
|
||||
} else {
|
||||
ctx.Add(p);
|
||||
}
|
||||
|
||||
ctx.UpdateDeliveryPartModifiers(p, await ctx.DeliveryPartModifiers
|
||||
.Where(m => m.Year == p.Year && m.DId == p.DId && m.DPNr == p.DPNr)
|
||||
.Select(m => m.Modifier)
|
||||
.ToListAsync(), vm.Modifiers);
|
||||
|
||||
if (originalMgNr != null && originalMgNr.Value != d.MgNr) {
|
||||
// update origin (KgNr), if default is selected
|
||||
var newKgNr = (await ctx.Members.FindAsync(d.MgNr))?.DefaultKgNr;
|
||||
foreach (var part in d.Parts.Where(part => part.DPNr != dpnr && part.KgNr == originalMemberKgNr)) {
|
||||
part.KgNr = newKgNr;
|
||||
ctx.Update(part);
|
||||
}
|
||||
}
|
||||
|
||||
await ctx.SaveChangesAsync();
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
if (oldDelivery != null && ctx.Entry(oldDelivery) is EntityEntry<Delivery> entry) {
|
||||
entry.State = EntityState.Detached;
|
||||
}
|
||||
if (!deliveryNew) {
|
||||
ctx.Update(d);
|
||||
} else {
|
||||
ctx.Add(d);
|
||||
}
|
||||
if (!partNew) {
|
||||
ctx.Update(p);
|
||||
} else {
|
||||
ctx.Add(p);
|
||||
}
|
||||
|
||||
ctx.UpdateDeliveryPartModifiers(p, await ctx.DeliveryPartModifiers
|
||||
.Where(m => m.Year == p.Year && m.DId == p.DId && m.DPNr == p.DPNr)
|
||||
.Select(m => m.Modifier)
|
||||
.ToListAsync(), vm.Modifiers);
|
||||
|
||||
if (originalMgNr != null && originalMgNr.Value != d.MgNr) {
|
||||
// update origin (KgNr), if default is selected
|
||||
var newKgNr = (await ctx.Members.FindAsync(d.MgNr))?.DefaultKgNr;
|
||||
foreach (var part in d.Parts.Where(part => part.DPNr != dpnr && part.KgNr == originalMemberKgNr)) {
|
||||
part.KgNr = newKgNr;
|
||||
ctx.Update(part);
|
||||
}
|
||||
}
|
||||
|
||||
await ctx.SaveChangesAsync();
|
||||
|
||||
return p;
|
||||
}
|
||||
@ -830,8 +824,8 @@ namespace Elwig.Services {
|
||||
wGrid.ColumnDefinitions.Add(new() { Width = new(50) });
|
||||
int rowNum = 0;
|
||||
foreach (var row in weightData) {
|
||||
if (rowNum == 1 || (rowNum != 0 && row.Item1 != null)) rowNum++;
|
||||
AddWeightToolTipRow(wGrid, rowNum++, row.Item1, row.Item2, row.Item3, row.Item4, row.Item5);
|
||||
if (rowNum == 1) rowNum++;
|
||||
}
|
||||
|
||||
var gGrid = new Grid();
|
||||
@ -845,8 +839,8 @@ namespace Elwig.Services {
|
||||
AddToolTipCell(gGrid, "Max.", 0, 4, 1, false, false, true);
|
||||
rowNum = 1;
|
||||
foreach (var row in gradationData) {
|
||||
if (rowNum == 2 || (rowNum != 1 && row.Item1 != null)) rowNum++;
|
||||
AddGradationToolTipRow(gGrid, rowNum++, row.Item1, row.Item2, row.Item3, row.Item4, row.Item5);
|
||||
if (rowNum == 2) rowNum++;
|
||||
}
|
||||
|
||||
return (wGrid, gGrid);
|
||||
|
@ -171,6 +171,9 @@ namespace Elwig.Services {
|
||||
.GroupBy(d => d.Year)
|
||||
.ToDictionaryAsync(g => g.Key, g => g.Any());
|
||||
|
||||
if (m.MgNr != vm.MgNr)
|
||||
return;
|
||||
|
||||
await App.MainDispatcher.BeginInvoke(() => {
|
||||
var (d1Grid, _) = DeliveryService.GenerateToolTip(d1GridData, []);
|
||||
var (d2Grid, _) = DeliveryService.GenerateToolTip(d2GridData, []);
|
||||
|
@ -226,14 +226,22 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void AreaCommitmentSaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||
int? fbnr = null;
|
||||
AreaCommitmentSaveButton.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
|
||||
int fbnr;
|
||||
try {
|
||||
fbnr = await ViewModel.UpdateAreaCommitment((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr);
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
AreaCommitmentSaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
IsEditing = false;
|
||||
IsCreating = false;
|
||||
AreaCommitmentList.IsEnabled = true;
|
||||
|
@ -6,6 +6,7 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace Elwig.Windows {
|
||||
public partial class BaseDataWindow : AdministrationWindow {
|
||||
@ -316,12 +317,19 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||
SaveButton.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
|
||||
try {
|
||||
await Save();
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Stammdaten aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
SaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
IsEditing = false;
|
||||
|
@ -661,6 +661,9 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void SaveButton_Click(object sender, RoutedEventArgs e) {
|
||||
SaveButton.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
|
||||
try {
|
||||
using (var ctx = new AppDbContext()) {
|
||||
var origData = BillingData.FromJson(PaymentVar.Data);
|
||||
@ -677,7 +680,12 @@ namespace Elwig.Windows {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank gespeichert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
SaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
LockContext = true;
|
||||
SetHasChanged(false);
|
||||
}
|
||||
|
@ -694,14 +694,28 @@ namespace Elwig.Windows {
|
||||
NewDeliveryPartButton.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
DeliveryPartList.IsEnabled = false;
|
||||
var p = await ViewModel.UpdateDeliveryPart(
|
||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
||||
InputHasChanged(DateInput),
|
||||
InputHasChanged(TimeInput),
|
||||
!InputIsNotDefault(TimeInput)
|
||||
);
|
||||
|
||||
DeliveryPart? p;
|
||||
try {
|
||||
p = await ViewModel.UpdateDeliveryPart(
|
||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
||||
InputHasChanged(DateInput),
|
||||
InputHasChanged(TimeInput),
|
||||
!InputIsNotDefault(TimeInput)
|
||||
);
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
FinishButton.IsEnabled = true;
|
||||
SaveButton.IsEnabled = true;
|
||||
Mouse.OverrideCursor = null;
|
||||
DeliveryPartList.IsEnabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
EmptyScale();
|
||||
await RefreshList();
|
||||
await RefreshDeliveryParts();
|
||||
@ -718,14 +732,28 @@ namespace Elwig.Windows {
|
||||
NewDeliveryPartButton.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
DeliveryPartList.IsEnabled = false;
|
||||
var p = await ViewModel.UpdateDeliveryPart(
|
||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
||||
InputHasChanged(DateInput),
|
||||
InputHasChanged(TimeInput),
|
||||
!InputIsNotDefault(TimeInput)
|
||||
);
|
||||
|
||||
DeliveryPart? p;
|
||||
try {
|
||||
p = await ViewModel.UpdateDeliveryPart(
|
||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
||||
InputHasChanged(DateInput),
|
||||
InputHasChanged(TimeInput),
|
||||
!InputIsNotDefault(TimeInput)
|
||||
);
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
FinishButton.IsEnabled = true;
|
||||
SaveButton.IsEnabled = true;
|
||||
Mouse.OverrideCursor = null;
|
||||
DeliveryPartList.IsEnabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
EmptyScale();
|
||||
await RefreshList();
|
||||
await RefreshDeliveryParts();
|
||||
@ -743,6 +771,7 @@ namespace Elwig.Windows {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
Mouse.OverrideCursor = null;
|
||||
DeliveryList.SelectedItem = null;
|
||||
await RenewContext();
|
||||
@ -940,22 +969,31 @@ namespace Elwig.Windows {
|
||||
SaveButton.IsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
|
||||
DeliveryPart? p;
|
||||
try {
|
||||
p = await ViewModel.UpdateDeliveryPart(
|
||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
||||
InputHasChanged(DateInput),
|
||||
InputHasChanged(TimeInput),
|
||||
!InputIsNotDefault(TimeInput)
|
||||
);
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
SaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
IsEditing = false;
|
||||
IsCreating = false;
|
||||
DeliveryList.IsEnabled = true;
|
||||
DeliveryPartList.IsEnabled = true;
|
||||
|
||||
var p = await ViewModel.UpdateDeliveryPart(
|
||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
||||
InputHasChanged(DateInput),
|
||||
InputHasChanged(TimeInput),
|
||||
!InputIsNotDefault(TimeInput)
|
||||
);
|
||||
|
||||
Mouse.OverrideCursor = null;
|
||||
|
||||
HideSaveResetCancelButtons();
|
||||
ShowNewEditDeleteButtons();
|
||||
LockInputs();
|
||||
|
@ -341,6 +341,8 @@ namespace Elwig.Windows {
|
||||
|
||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
SaveButton.IsEnabled = false;
|
||||
|
||||
int year = -1, dsnr = -1, mgnr = -1;
|
||||
string? sortid = null;
|
||||
try {
|
||||
@ -350,8 +352,12 @@ namespace Elwig.Windows {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Anmeldung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
SaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
|
||||
IsEditing = false;
|
||||
IsCreating = false;
|
||||
DeliveryAncmtList.IsEnabled = true;
|
||||
|
@ -201,14 +201,20 @@ namespace Elwig.Windows {
|
||||
|
||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
SaveButton.IsEnabled = false;
|
||||
|
||||
try {
|
||||
await ViewModel.UpdateDeliverySchedule(ViewModel.SelectedDeliverySchedule?.Year, ViewModel.SelectedDeliverySchedule?.DsNr);
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Leseplan aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
SaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
|
||||
IsEditing = false;
|
||||
IsCreating = false;
|
||||
DeliveryScheduleList.IsEnabled = true;
|
||||
|
@ -706,8 +706,7 @@ namespace Elwig.Windows {
|
||||
private async void PrintButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (PrintDocument == null) return;
|
||||
PrintButton.IsEnabled = false;
|
||||
var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?\n" +
|
||||
$"Sind die \"Duplex-Einstellungen\" des Standarddruckers entsprechend eingestellt (doppelseitig bzw. einseitig)?",
|
||||
var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?",
|
||||
"Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
|
||||
if (res == MessageBoxResult.Yes) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
|
@ -391,14 +391,22 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||
int? mgnr = null;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
SaveButton.IsEnabled = false;
|
||||
|
||||
int mgnr;
|
||||
try {
|
||||
mgnr = await ViewModel.UpdateMember(ViewModel.SelectedMember?.MgNr);
|
||||
} catch (Exception exc) {
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Mitglied aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
SaveButton.IsEnabled = true;
|
||||
return;
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
IsEditing = false;
|
||||
IsCreating = false;
|
||||
MemberList.IsEnabled = true;
|
||||
|
@ -1,5 +1,4 @@
|
||||
::mkdir "C:\Program Files\Elwig"
|
||||
::curl --fail -s -L "https://github.com/emendelson/pdftoprinter/raw/main/PDFtoPrinter.exe" -z "C:\Program Files\Elwig\PDFtoPrinter.exe" -o "C:\Program Files\Elwig\PDFtoPrinter.exe"
|
||||
mkdir "C:\ProgramData\Elwig\resources"
|
||||
copy /b /y Documents\*.css "C:\ProgramData\Elwig\resources"
|
||||
copy /b /y Documents\*.cshtml "C:\ProgramData\Elwig\resources"
|
||||
|
@ -25,7 +25,6 @@
|
||||
</Task>
|
||||
</UsingTask>
|
||||
<Target Name="CustomBeforeBuild" BeforeTargets="BeforeBuild">
|
||||
<Exec Command="curl --fail -s -L "https://github.com/emendelson/pdftoprinter/raw/main/PDFtoPrinter.exe" -z "$(ProjectDir)\Files\PDFtoPrinter.exe" -o "$(ProjectDir)\Files\PDFtoPrinter.exe"" />
|
||||
<Exec Command="dotnet publish "$(ProjectDir)\..\Elwig\Elwig.csproj" "/p:PublishProfile=$(ProjectDir)\..\Elwig\Properties\PublishProfiles\FolderProfile.pubxml"" />
|
||||
<GetFileVersion AssemblyPath="..\Elwig\bin\Publish\Elwig.exe">
|
||||
<Output TaskParameter="Version" PropertyName="ElwigFileVersion" />
|
||||
@ -36,7 +35,6 @@
|
||||
</Target>
|
||||
<ItemGroup>
|
||||
<None Include="Files\config.ini" />
|
||||
<None Include="Files\PDFtoPrinter.exe" />
|
||||
<None Include="Files\WinziPrint.exe" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -10,9 +10,6 @@
|
||||
<Component Directory="InstallFolder">
|
||||
<File Source="$(ProjectDir)\Files\WinziPrint.exe" Id="WinziPrint.exe"/>
|
||||
</Component>
|
||||
<Component Directory="InstallFolder">
|
||||
<File Source="$(ProjectDir)\Files\PDFtoPrinter.exe" Id="PDFtoPrinter.exe"/>
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
|
@ -15,7 +15,7 @@ namespace Tests.E2ETests {
|
||||
[OneTimeSetUp]
|
||||
public static async Task SetupDatabase() {
|
||||
if (File.Exists(Utils.TestDatabasePath)) File.Delete(Utils.TestDatabasePath);
|
||||
using var cnx = await AppDbContext.ConnectAsync($"Data Source=\"{Utils.TestDatabasePath}\"; Mode=ReadWriteCreate; Foreign Keys=True; Cache=Default");
|
||||
using var cnx = await AppDbContext.ConnectAsync($"Data Source=\"{Utils.TestDatabasePath}\"; Mode=ReadWriteCreate; Foreign Keys=True; Cache=Default; Pooling=False");
|
||||
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.Create.sql");
|
||||
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.Insert.sql");
|
||||
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.E2EInsert.sql");
|
||||
|
Reference in New Issue
Block a user