[#64] AreaComAdminWindow: Add dialog for modifying/deleting
All checks were successful
Test / Run tests (push) Successful in 2m21s

This commit is contained in:
2025-07-09 18:12:35 +02:00
parent 267aa3d47c
commit c61c2e3fcd
5 changed files with 243 additions and 68 deletions

View File

@ -1,13 +1,14 @@
using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Elwig.Dialogs;
using Elwig.Helpers;
using Elwig.Models.Entities;
using System;
using System.Threading.Tasks;
using Elwig.ViewModels;
using Elwig.Services;
using Elwig.ViewModels;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace Elwig.Windows {
@ -25,8 +26,8 @@ namespace Elwig.Windows {
ViewModel.Title = $"Flächenbindungen - {ViewModel.FilterMember.AdministrativeName} - Elwig";
ExemptInputs = [
MgNrInput, AreaCommitmentList, NewAreaCommitmentButton,
EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton,
AreaCommitmentResetButton, AreaCommitmentCancelButton, SearchInput, ActiveAreaCommitmentInput
EditAreaCommitmentButton, DeleteAreaCommitmentButton, SaveButton,
ResetButton, CancelButton, SearchInput, ActiveAreaCommitmentInput
];
RequiredInputs = [
FbNrInput, YearFromInput, KgInput, RdInput,
@ -163,8 +164,8 @@ namespace Elwig.Windows {
IsCreating = true;
AreaCommitmentList.IsEnabled = false;
AreaCommitmentList.SelectedItem = null;
HideAreaCommitmentNewEditDeleteButtons();
ShowAreaCommitmentSaveResetCancelButtons();
HideNewEditDeleteButtons();
ShowSaveResetCancelButtons();
UnlockInputs();
await InitInputs();
LockSearchInputs();
@ -184,8 +185,8 @@ namespace Elwig.Windows {
IsEditing = true;
AreaCommitmentList.IsEnabled = false;
HideAreaCommitmentNewEditDeleteButtons();
ShowAreaCommitmentSaveResetCancelButtons();
HideNewEditDeleteButtons();
ShowSaveResetCancelButtons();
UnlockInputs();
LockSearchInputs();
}
@ -199,42 +200,81 @@ namespace Elwig.Windows {
private async void DeleteAreaCommitmentButton_Click(object? sender, RoutedEventArgs? evt) {
if (AreaCommitmentList.SelectedItem is not AreaCom a)
return;
var r = MessageBox.Show(
$"Soll die Flächenbindung {a.GstNr} ({a.Area} m²) wirklich unwiderruflich gelöscht werden?",
"Flächenbindung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
if (r == MessageBoxResult.OK) {
Mouse.OverrideCursor = Cursors.Wait;
try {
var d = new AreaComModifyDialog(a.YearFrom, a.YearTo, a.Area, true);
if (d.ShowDialog() != true)
return;
Mouse.OverrideCursor = Cursors.Wait;
try {
if (d.YearTo is int yearTo) {
ViewModel.YearTo = yearTo;
await ViewModel.UpdateAreaCommitment((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr);
} else {
await AreaComService.DeleteAreaCom(a.FbNr);
App.HintContextChange();
} 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 löschen", MessageBoxButton.OK, MessageBoxImage.Error);
}
Mouse.OverrideCursor = null;
App.HintContextChange();
} 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 löschen", MessageBoxButton.OK, MessageBoxImage.Error);
}
Mouse.OverrideCursor = null;
}
protected override void ShortcutSave() {
if (!AreaCommitmentSaveButton.IsEnabled || AreaCommitmentSaveButton.Visibility != Visibility.Visible)
if (!SaveButton.IsEnabled || SaveButton.Visibility != Visibility.Visible)
return;
AreaCommitmentSaveButton_Click(null, null);
SaveButton_Click(null, null);
}
private async void AreaCommitmentSaveButton_Click(object? sender, RoutedEventArgs? evt) {
AreaCommitmentSaveButton.IsEnabled = false;
Mouse.OverrideCursor = Cursors.Wait;
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
SaveButton.IsEnabled = false;
int? yearTo = null;
if (InputHasChanged(AreaInput) || InputHasChanged(AreaComTypeInput)) {
var a = (AreaCommitmentList.SelectedItem as AreaCom)!;
var d = new AreaComModifyDialog(a.YearFrom, a.YearTo, a.Area, false);
if (d.ShowDialog() != true)
return;
yearTo = d.YearTo;
}
int fbnr;
Mouse.OverrideCursor = Cursors.Wait;
try {
AreaCom? temp = null;
if (yearTo != null && (!ViewModel.YearTo.HasValue || yearTo < ViewModel.YearTo)) {
temp = new AreaCom {
FbNr = ViewModel.FbNr!.Value,
MgNr = ViewModel.MgNr!.Value,
YearFrom = ViewModel.YearFrom,
YearTo = ViewModel.YearTo,
VtrgId = ViewModel.AreaComType!.VtrgId,
CultId = ViewModel.WineCult?.CultId,
Comment = ViewModel.Comment,
KgNr = ViewModel.Kg!.KgNr,
RdNr = ViewModel.Rd?.RdNr,
GstNr = ViewModel.GstNr?.Trim() ?? "-",
Area = ViewModel.Area!.Value,
};
RefreshInputs();
ViewModel.YearTo = yearTo;
}
fbnr = await ViewModel.UpdateAreaCommitment((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr);
if (temp is AreaCom t) {
await ViewModel.InitInputs();
t.FbNr = ViewModel.FbNr!.Value;
t.YearFrom = yearTo + 1;
ViewModel.FillInputs(t);
fbnr = await ViewModel.UpdateAreaCommitment(null);
}
App.HintContextChange();
} 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;
SaveButton.IsEnabled = true;
Mouse.OverrideCursor = null;
return;
}
@ -242,8 +282,8 @@ namespace Elwig.Windows {
IsEditing = false;
IsCreating = false;
AreaCommitmentList.IsEnabled = true;
HideAreaCommitmentSaveResetCancelButtons();
ShowAreaCommitmentNewEditDeleteButtons();
HideSaveResetCancelButtons();
ShowNewEditDeleteButtons();
LockInputs();
UnlockSearchInputs();
FinishInputFilling();
@ -255,12 +295,12 @@ namespace Elwig.Windows {
}
protected override void ShortcutReset() {
if (!AreaCommitmentResetButton.IsEnabled || AreaCommitmentResetButton.Visibility != Visibility.Visible)
if (!ResetButton.IsEnabled || ResetButton.Visibility != Visibility.Visible)
return;
AreaCommitmentResetButton_Click(null, null);
ResetButton_Click(null, null);
}
private async void AreaCommitmentResetButton_Click(object? sender, RoutedEventArgs? evt) {
private async void ResetButton_Click(object? sender, RoutedEventArgs? evt) {
if (IsEditing) {
RefreshInputs();
} else if (IsCreating) {
@ -269,12 +309,12 @@ namespace Elwig.Windows {
UpdateButtons();
}
private void AreaCommitmentCancelButton_Click(object sender, RoutedEventArgs evt) {
private void CancelButton_Click(object sender, RoutedEventArgs evt) {
IsEditing = false;
IsCreating = false;
AreaCommitmentList.IsEnabled = true;
HideAreaCommitmentSaveResetCancelButtons();
ShowAreaCommitmentNewEditDeleteButtons();
HideSaveResetCancelButtons();
ShowNewEditDeleteButtons();
RefreshInputs();
ClearInputStates();
LockInputs();
@ -284,49 +324,49 @@ namespace Elwig.Windows {
override protected void UpdateButtons() {
if (!IsEditing && !IsCreating) return;
bool ch = HasChanged, v = IsValid;
AreaCommitmentResetButton.IsEnabled = (ch);
AreaCommitmentSaveButton.IsEnabled = (ch && v);
ResetButton.IsEnabled = (ch);
SaveButton.IsEnabled = (ch && v);
}
private void DisableAreaCommitmentNewEditDeleteButtons() {
private void DisableNewEditDeleteButtons() {
NewAreaCommitmentButton.IsEnabled = false;
EditAreaCommitmentButton.IsEnabled = false;
DeleteAreaCommitmentButton.IsEnabled = false;
}
private void EnableAreaCommitmentNewEditDeleteButtons() {
private void EnableNewEditDeleteButtons() {
NewAreaCommitmentButton.IsEnabled = true;
EditAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
DeleteAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
}
private void ShowAreaCommitmentSaveResetCancelButtons() {
AreaCommitmentSaveButton.IsEnabled = false;
AreaCommitmentResetButton.IsEnabled = false;
AreaCommitmentCancelButton.IsEnabled = true;
AreaCommitmentSaveButton.Visibility = Visibility.Visible;
AreaCommitmentResetButton.Visibility = Visibility.Visible;
AreaCommitmentCancelButton.Visibility = Visibility.Visible;
private void ShowSaveResetCancelButtons() {
SaveButton.IsEnabled = false;
ResetButton.IsEnabled = false;
CancelButton.IsEnabled = true;
SaveButton.Visibility = Visibility.Visible;
ResetButton.Visibility = Visibility.Visible;
CancelButton.Visibility = Visibility.Visible;
}
private void HideAreaCommitmentSaveResetCancelButtons() {
AreaCommitmentSaveButton.IsEnabled = false;
AreaCommitmentResetButton.IsEnabled = false;
AreaCommitmentCancelButton.IsEnabled = false;
AreaCommitmentSaveButton.Visibility = Visibility.Hidden;
AreaCommitmentResetButton.Visibility = Visibility.Hidden;
AreaCommitmentCancelButton.Visibility = Visibility.Hidden;
private void HideSaveResetCancelButtons() {
SaveButton.IsEnabled = false;
ResetButton.IsEnabled = false;
CancelButton.IsEnabled = false;
SaveButton.Visibility = Visibility.Hidden;
ResetButton.Visibility = Visibility.Hidden;
CancelButton.Visibility = Visibility.Hidden;
}
private void ShowAreaCommitmentNewEditDeleteButtons() {
EnableAreaCommitmentNewEditDeleteButtons();
private void ShowNewEditDeleteButtons() {
EnableNewEditDeleteButtons();
NewAreaCommitmentButton.Visibility = Visibility.Visible;
EditAreaCommitmentButton.Visibility = Visibility.Visible;
DeleteAreaCommitmentButton.Visibility = Visibility.Visible;
}
private void HideAreaCommitmentNewEditDeleteButtons() {
DisableAreaCommitmentNewEditDeleteButtons();
private void HideNewEditDeleteButtons() {
DisableNewEditDeleteButtons();
NewAreaCommitmentButton.Visibility = Visibility.Hidden;
EditAreaCommitmentButton.Visibility = Visibility.Hidden;
DeleteAreaCommitmentButton.Visibility = Visibility.Hidden;
@ -343,6 +383,8 @@ namespace Elwig.Windows {
}
private void AreaCommitmentList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {
if (AreaCommitmentList.SelectedItem != null)
AreaCommitmentList.ScrollIntoView(AreaCommitmentList.SelectedItem);
RefreshInputs();
}