Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
1fc736ce16 | |||
ce39797d8b | |||
94a6dd5312 | |||
b67857ae22 | |||
a48ea8e7e2 |
31
CHANGELOG.md
31
CHANGELOG.md
@ -3,9 +3,31 @@ 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}
|
[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}
|
### Behobene Fehler {#v0.11.4-bugfixes}
|
||||||
|
|
||||||
* In den Tooltips für Gewicht und Flächenbindungen wurden die Abstände wieder hergestellt. (e0fcaf1f53)
|
* In den Tooltips für Gewicht und Flächenbindungen wurden die Abstände wieder hergestellt. (e0fcaf1f53)
|
||||||
@ -18,6 +40,11 @@ Changelog
|
|||||||
[v0.11.3][v0.11.3] (2024-09-22) {#v0.11.3}
|
[v0.11.3][v0.11.3] (2024-09-22) {#v0.11.3}
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
|
> [!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}
|
### Behobene Fehler {#v0.11.3-bugfixes}
|
||||||
|
|
||||||
* Im Mitglieder-Fenster (`MemberAdminWindow`) wurde das Berechnen der Mitgliederdaten pro Jahr und Mitglied rückgängig gemacht. (1d187c25f3)
|
* Im Mitglieder-Fenster (`MemberAdminWindow`) wurde das Berechnen der Mitgliederdaten pro Jahr und Mitglied rückgängig gemacht. (1d187c25f3)
|
||||||
@ -31,9 +58,9 @@ Changelog
|
|||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
> [!WARNING]
|
> [!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}
|
### Neue Funktionen {#v0.11.2-features}
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ namespace Elwig.Documents {
|
|||||||
|
|
||||||
public async Task Print(int copies = 1) {
|
public async Task Print(int copies = 1) {
|
||||||
if (PdfPath == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
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() {
|
public void Show() {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<UseWPF>true</UseWPF>
|
<UseWPF>true</UseWPF>
|
||||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||||
<Version>0.11.4</Version>
|
<Version>0.12.0</Version>
|
||||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
@ -34,6 +34,8 @@
|
|||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2739.15" />
|
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2739.15" />
|
||||||
<PackageReference Include="NJsonSchema" Version="11.0.2" />
|
<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="RazorLight" Version="2.3.1" />
|
||||||
<PackageReference Include="ScottPlot.WPF" Version="5.0.39" />
|
<PackageReference Include="ScottPlot.WPF" Version="5.0.39" />
|
||||||
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
<PackageReference Include="System.IO.Ports" Version="8.0.0" />
|
||||||
|
@ -78,7 +78,7 @@ namespace Elwig.Helpers {
|
|||||||
public bool HasBackendChanged => SavedLastWriteTime != LastWriteTime;
|
public bool HasBackendChanged => SavedLastWriteTime != LastWriteTime;
|
||||||
|
|
||||||
public static string? ConnectionStringOverride { get; set; } = null;
|
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, AreaComBucket>>> _memberAreaCommitmentBuckets = [];
|
||||||
private readonly Dictionary<int, Dictionary<int, Dictionary<string, int>>> _memberDeliveryBuckets = [];
|
private readonly Dictionary<int, Dictionary<int, Dictionary<string, int>>> _memberDeliveryBuckets = [];
|
||||||
|
@ -8,16 +8,12 @@ using System.Windows;
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Text;
|
using PdfiumViewer;
|
||||||
|
using System.Drawing.Printing;
|
||||||
|
|
||||||
namespace Elwig.Helpers.Printing {
|
namespace Elwig.Helpers.Printing {
|
||||||
public static class Pdf {
|
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 }
|
private static readonly string WinziPrint = new string[] { App.ExePath }
|
||||||
.Union(Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? [])
|
.Union(Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? [])
|
||||||
.Select(x => Path.Combine(x, "WinziPrint.exe"))
|
.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 {
|
try {
|
||||||
var p = new Process() { StartInfo = new() {
|
using var doc = PdfDocument.Load(path);
|
||||||
FileName = PdfToPrinter,
|
using var printDoc = doc.CreatePrintDocument(PdfPrintMode.CutMargin);
|
||||||
CreateNoWindow = true,
|
printDoc.PrinterSettings = settings;
|
||||||
UseShellExecute = false,
|
printDoc.Print();
|
||||||
} };
|
|
||||||
p.StartInfo.ArgumentList.Add(path);
|
|
||||||
p.StartInfo.ArgumentList.Add("/s");
|
|
||||||
p.StartInfo.ArgumentList.Add($"copies={copies}");
|
|
||||||
p.Start();
|
|
||||||
await p.WaitForExitAsync();
|
|
||||||
} catch (Exception e) {
|
} 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -494,41 +494,35 @@ namespace Elwig.Services {
|
|||||||
WeighingReason = vm.ManualWeighingReason,
|
WeighingReason = vm.ManualWeighingReason,
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
if (oldDelivery != null && ctx.Entry(oldDelivery) is EntityEntry<Delivery> entry) {
|
||||||
if (oldDelivery != null && ctx.Entry(oldDelivery) is EntityEntry<Delivery> entry) {
|
entry.State = EntityState.Detached;
|
||||||
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 (!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;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -171,6 +171,9 @@ namespace Elwig.Services {
|
|||||||
.GroupBy(d => d.Year)
|
.GroupBy(d => d.Year)
|
||||||
.ToDictionaryAsync(g => g.Key, g => g.Any());
|
.ToDictionaryAsync(g => g.Key, g => g.Any());
|
||||||
|
|
||||||
|
if (m.MgNr != vm.MgNr)
|
||||||
|
return;
|
||||||
|
|
||||||
await App.MainDispatcher.BeginInvoke(() => {
|
await App.MainDispatcher.BeginInvoke(() => {
|
||||||
var (d1Grid, _) = DeliveryService.GenerateToolTip(d1GridData, []);
|
var (d1Grid, _) = DeliveryService.GenerateToolTip(d1GridData, []);
|
||||||
var (d2Grid, _) = DeliveryService.GenerateToolTip(d2GridData, []);
|
var (d2Grid, _) = DeliveryService.GenerateToolTip(d2GridData, []);
|
||||||
|
@ -226,14 +226,22 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void AreaCommitmentSaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void AreaCommitmentSaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
int? fbnr = null;
|
AreaCommitmentSaveButton.IsEnabled = false;
|
||||||
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
|
||||||
|
int fbnr;
|
||||||
try {
|
try {
|
||||||
fbnr = await ViewModel.UpdateAreaCommitment((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr);
|
fbnr = await ViewModel.UpdateAreaCommitment((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
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;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
AreaCommitmentSaveButton.IsEnabled = true;
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
AreaCommitmentList.IsEnabled = true;
|
AreaCommitmentList.IsEnabled = true;
|
||||||
|
@ -6,6 +6,7 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace Elwig.Windows {
|
namespace Elwig.Windows {
|
||||||
public partial class BaseDataWindow : AdministrationWindow {
|
public partial class BaseDataWindow : AdministrationWindow {
|
||||||
@ -316,12 +317,19 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
|
SaveButton.IsEnabled = false;
|
||||||
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Save();
|
await Save();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
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;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Stammdaten aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Stammdaten aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
SaveButton.IsEnabled = true;
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
|
@ -661,6 +661,9 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void SaveButton_Click(object sender, RoutedEventArgs e) {
|
private async void SaveButton_Click(object sender, RoutedEventArgs e) {
|
||||||
|
SaveButton.IsEnabled = false;
|
||||||
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
var origData = BillingData.FromJson(PaymentVar.Data);
|
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;
|
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;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
SaveButton.IsEnabled = true;
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
LockContext = true;
|
LockContext = true;
|
||||||
SetHasChanged(false);
|
SetHasChanged(false);
|
||||||
}
|
}
|
||||||
|
@ -694,14 +694,28 @@ namespace Elwig.Windows {
|
|||||||
NewDeliveryPartButton.IsEnabled = false;
|
NewDeliveryPartButton.IsEnabled = false;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
DeliveryPartList.IsEnabled = false;
|
DeliveryPartList.IsEnabled = false;
|
||||||
var p = await ViewModel.UpdateDeliveryPart(
|
|
||||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
DeliveryPart? p;
|
||||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
try {
|
||||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
p = await ViewModel.UpdateDeliveryPart(
|
||||||
InputHasChanged(DateInput),
|
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||||
InputHasChanged(TimeInput),
|
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||||
!InputIsNotDefault(TimeInput)
|
(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();
|
EmptyScale();
|
||||||
await RefreshList();
|
await RefreshList();
|
||||||
await RefreshDeliveryParts();
|
await RefreshDeliveryParts();
|
||||||
@ -718,14 +732,28 @@ namespace Elwig.Windows {
|
|||||||
NewDeliveryPartButton.IsEnabled = false;
|
NewDeliveryPartButton.IsEnabled = false;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
DeliveryPartList.IsEnabled = false;
|
DeliveryPartList.IsEnabled = false;
|
||||||
var p = await ViewModel.UpdateDeliveryPart(
|
|
||||||
(DeliveryList.SelectedItem as Delivery)?.Year,
|
DeliveryPart? p;
|
||||||
(DeliveryList.SelectedItem as Delivery)?.DId,
|
try {
|
||||||
(DeliveryPartList.SelectedItem as DeliveryPart)?.DPNr,
|
p = await ViewModel.UpdateDeliveryPart(
|
||||||
InputHasChanged(DateInput),
|
(DeliveryList.SelectedItem as Delivery)?.Year,
|
||||||
InputHasChanged(TimeInput),
|
(DeliveryList.SelectedItem as Delivery)?.DId,
|
||||||
!InputIsNotDefault(TimeInput)
|
(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();
|
EmptyScale();
|
||||||
await RefreshList();
|
await RefreshList();
|
||||||
await RefreshDeliveryParts();
|
await RefreshDeliveryParts();
|
||||||
@ -743,6 +771,7 @@ namespace Elwig.Windows {
|
|||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
DeliveryList.SelectedItem = null;
|
DeliveryList.SelectedItem = null;
|
||||||
await RenewContext();
|
await RenewContext();
|
||||||
@ -940,22 +969,31 @@ namespace Elwig.Windows {
|
|||||||
SaveButton.IsEnabled = false;
|
SaveButton.IsEnabled = false;
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
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;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
DeliveryList.IsEnabled = true;
|
DeliveryList.IsEnabled = true;
|
||||||
DeliveryPartList.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();
|
HideSaveResetCancelButtons();
|
||||||
ShowNewEditDeleteButtons();
|
ShowNewEditDeleteButtons();
|
||||||
LockInputs();
|
LockInputs();
|
||||||
|
@ -341,6 +341,8 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
SaveButton.IsEnabled = false;
|
||||||
|
|
||||||
int year = -1, dsnr = -1, mgnr = -1;
|
int year = -1, dsnr = -1, mgnr = -1;
|
||||||
string? sortid = null;
|
string? sortid = null;
|
||||||
try {
|
try {
|
||||||
@ -350,8 +352,12 @@ namespace Elwig.Windows {
|
|||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
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;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Anmeldung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Anmeldung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
SaveButton.IsEnabled = true;
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
DeliveryAncmtList.IsEnabled = true;
|
DeliveryAncmtList.IsEnabled = true;
|
||||||
|
@ -201,14 +201,20 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
SaveButton.IsEnabled = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await ViewModel.UpdateDeliverySchedule(ViewModel.SelectedDeliverySchedule?.Year, ViewModel.SelectedDeliverySchedule?.DsNr);
|
await ViewModel.UpdateDeliverySchedule(ViewModel.SelectedDeliverySchedule?.Year, ViewModel.SelectedDeliverySchedule?.DsNr);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
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;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Leseplan aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Leseplan aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
SaveButton.IsEnabled = true;
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
DeliveryScheduleList.IsEnabled = true;
|
DeliveryScheduleList.IsEnabled = true;
|
||||||
|
@ -706,8 +706,7 @@ namespace Elwig.Windows {
|
|||||||
private async void PrintButton_Click(object sender, RoutedEventArgs evt) {
|
private async void PrintButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (PrintDocument == null) return;
|
if (PrintDocument == null) return;
|
||||||
PrintButton.IsEnabled = false;
|
PrintButton.IsEnabled = false;
|
||||||
var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?\n" +
|
var res = MessageBox.Show($"Sollen {PrintDocument.Pages} Blätter ({PrintDocument.TotalPages} Seiten) gedruckt werden?",
|
||||||
$"Sind die \"Duplex-Einstellungen\" des Standarddruckers entsprechend eingestellt (doppelseitig bzw. einseitig)?",
|
|
||||||
"Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
|
"Rundschreiben drucken", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
|
||||||
if (res == MessageBoxResult.Yes) {
|
if (res == MessageBoxResult.Yes) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
@ -391,14 +391,22 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
|
||||||
int? mgnr = null;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
SaveButton.IsEnabled = false;
|
||||||
|
|
||||||
|
int mgnr;
|
||||||
try {
|
try {
|
||||||
mgnr = await ViewModel.UpdateMember(ViewModel.SelectedMember?.MgNr);
|
mgnr = await ViewModel.UpdateMember(ViewModel.SelectedMember?.MgNr);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
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;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Mitglied aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Mitglied aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
SaveButton.IsEnabled = true;
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
IsEditing = false;
|
IsEditing = false;
|
||||||
IsCreating = false;
|
IsCreating = false;
|
||||||
MemberList.IsEnabled = true;
|
MemberList.IsEnabled = true;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
::mkdir "C:\Program Files\Elwig"
|
::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"
|
mkdir "C:\ProgramData\Elwig\resources"
|
||||||
copy /b /y Documents\*.css "C:\ProgramData\Elwig\resources"
|
copy /b /y Documents\*.css "C:\ProgramData\Elwig\resources"
|
||||||
copy /b /y Documents\*.cshtml "C:\ProgramData\Elwig\resources"
|
copy /b /y Documents\*.cshtml "C:\ProgramData\Elwig\resources"
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
</Task>
|
</Task>
|
||||||
</UsingTask>
|
</UsingTask>
|
||||||
<Target Name="CustomBeforeBuild" BeforeTargets="BeforeBuild">
|
<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"" />
|
<Exec Command="dotnet publish "$(ProjectDir)\..\Elwig\Elwig.csproj" "/p:PublishProfile=$(ProjectDir)\..\Elwig\Properties\PublishProfiles\FolderProfile.pubxml"" />
|
||||||
<GetFileVersion AssemblyPath="..\Elwig\bin\Publish\Elwig.exe">
|
<GetFileVersion AssemblyPath="..\Elwig\bin\Publish\Elwig.exe">
|
||||||
<Output TaskParameter="Version" PropertyName="ElwigFileVersion" />
|
<Output TaskParameter="Version" PropertyName="ElwigFileVersion" />
|
||||||
@ -36,7 +35,6 @@
|
|||||||
</Target>
|
</Target>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Files\config.ini" />
|
<None Include="Files\config.ini" />
|
||||||
<None Include="Files\PDFtoPrinter.exe" />
|
|
||||||
<None Include="Files\WinziPrint.exe" />
|
<None Include="Files\WinziPrint.exe" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -10,9 +10,6 @@
|
|||||||
<Component Directory="InstallFolder">
|
<Component Directory="InstallFolder">
|
||||||
<File Source="$(ProjectDir)\Files\WinziPrint.exe" Id="WinziPrint.exe"/>
|
<File Source="$(ProjectDir)\Files\WinziPrint.exe" Id="WinziPrint.exe"/>
|
||||||
</Component>
|
</Component>
|
||||||
<Component Directory="InstallFolder">
|
|
||||||
<File Source="$(ProjectDir)\Files\PDFtoPrinter.exe" Id="PDFtoPrinter.exe"/>
|
|
||||||
</Component>
|
|
||||||
</ComponentGroup>
|
</ComponentGroup>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
</Wix>
|
</Wix>
|
||||||
|
@ -15,7 +15,7 @@ namespace Tests.E2ETests {
|
|||||||
[OneTimeSetUp]
|
[OneTimeSetUp]
|
||||||
public static async Task SetupDatabase() {
|
public static async Task SetupDatabase() {
|
||||||
if (File.Exists(Utils.TestDatabasePath)) File.Delete(Utils.TestDatabasePath);
|
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.Create.sql");
|
||||||
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.Insert.sql");
|
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.Insert.sql");
|
||||||
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.E2EInsert.sql");
|
await AppDbContext.ExecuteEmbeddedScript(cnx, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.E2EInsert.sql");
|
||||||
|
Reference in New Issue
Block a user