[#56] Windows: Fail gracefully while saving
All checks were successful
Test / Run tests (push) Successful in 2m11s

This commit is contained in:
2024-09-23 22:51:01 +02:00
parent 94a6dd5312
commit ce39797d8b
8 changed files with 141 additions and 65 deletions

View File

@ -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();