From 1cda6c19c1824167de8d631abf10bd17e1c69a14 Mon Sep 17 00:00:00 2001 From: Thomas Hilscher Date: Fri, 31 Mar 2023 23:23:20 +0200 Subject: [PATCH] Changed refresh methods in AreaCommitmentWindow to async --- Elwig/Windows/AreaCommAdminWindow.xaml.cs | 63 +++++++++++++---------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/Elwig/Windows/AreaCommAdminWindow.xaml.cs b/Elwig/Windows/AreaCommAdminWindow.xaml.cs index 9a4a2be..141db57 100644 --- a/Elwig/Windows/AreaCommAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaCommAdminWindow.xaml.cs @@ -19,7 +19,6 @@ namespace Elwig.Windows { InitializeComponent(); this.member = member; Title = $"Flächenbindungen - {member.FamilyName} {member.GivenName} - Elwig"; - RefreshContractList(); ExemptInputs = new Control[] { ContractList, AreaCommitmentList, NewContractButton, DeleteContractButton, ContractSaveButton, ContractCancelButton, NewAreaCommitmentButton, @@ -32,7 +31,8 @@ namespace Elwig.Windows { }; } - private void Window_Loaded(object sender, RoutedEventArgs e) { + private async void Window_Loaded(object sender, RoutedEventArgs e) { + await RefreshContractList(); //TODO Sources von Ried sollten sich auf Gemeinde beziehen KgInput.ItemsSource = Context.WbKgs.Select(k => k.Kg).OrderBy(k => k.Name).ToList(); RdInput.ItemsSource = Context.WbRde.OrderBy(r => r.Name).ToList(); @@ -41,7 +41,28 @@ namespace Elwig.Windows { CultInput.ItemsSource = Context.WineCultivations.OrderBy(c => c.Name).ToList(); } - private void RefreshAreaCommitmentList() { + private async Task RefreshContractList() { + await Context.Contracts.LoadAsync(); + await RefreshContractListQuery(); + } + + private async Task RefreshAreaCommitmentList() { + await Context.AreaCommitments.LoadAsync(); + await RefreshAreaCommitmentListQuery(); + } + + private async Task RefreshContractListQuery() { + List contracts = await Context.Contracts.Where(c => c.MgNr == member.MgNr).ToListAsync(); + + ContractList.ItemsSource = contracts; + if (contracts.Count == 1) + ContractList.SelectedIndex = 0; + + await RefreshAreaCommitmentList(); + RefreshInputs(); + } + + private async Task RefreshAreaCommitmentListQuery() { Contract? contract = (Contract)ContractList.SelectedItem; if (contract == null) { @@ -49,25 +70,13 @@ namespace Elwig.Windows { return; } - Context.AreaCommitments.Load(); - List commitments = Context.AreaCommitments.Where(a => a.VNr == contract.VNr).ToList(); + List commitments = await Context.AreaCommitments.Where(a => a.VNr == contract.VNr).ToListAsync(); AreaCommitmentList.ItemsSource = commitments; if (commitments.Count == 1) AreaCommitmentList.SelectedIndex = 0; } - private void RefreshContractList() { - Context.Contracts.Load(); - List contracts = Context.Contracts.Where(c => c.MgNr == member.MgNr).ToList(); - - ContractList.ItemsSource = contracts; - if (contracts.Count == 1) - ContractList.SelectedIndex = 0; - - RefreshAreaCommitmentList(); - } - private void RefreshInputs(bool validate = false) { ClearInputStates(); Contract? c = (Contract)ContractList.SelectedItem; @@ -143,17 +152,17 @@ namespace Elwig.Windows { MgNrInput.IsReadOnly = true; } - private void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) { + private async void DeleteAreaCommitmentButton_Click(object sender, RoutedEventArgs evt) { AreaCommitment a = (AreaCommitment)AreaCommitmentList.SelectedItem; if (a == null) return; var r = MessageBox.Show( - $"Soll die Flächenbindung \"{a.Kg.Kg.Name}, {a.Rd.Name}\", (MgNr. {a.GstNr}) wirklich unwiderruflich gelöscht werden?", + $"Soll die Flächenbindung {a.Kg.Kg.Name}{(a.Rd.Name == null ? "" : $", {a.Rd.Name}")}, {a.GstNr} wirklich unwiderruflich gelöscht werden?", "Flächenbindung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); if (r == MessageBoxResult.Yes) { Context.Remove(a); Context.SaveChanges(); - RefreshAreaCommitmentList(); + await RefreshAreaCommitmentList(); } } @@ -180,7 +189,7 @@ namespace Elwig.Windows { InitInputs(); } - private void DeleteContractButton_Click(object sender, RoutedEventArgs evt) { + private async void DeleteContractButton_Click(object sender, RoutedEventArgs evt) { Contract c = (Contract)ContractList.SelectedItem; if (c == null) return; @@ -190,11 +199,11 @@ namespace Elwig.Windows { if (r == MessageBoxResult.Yes) { Context.Remove(c); Context.SaveChanges(); - RefreshContractList(); + await RefreshContractList(); } } - private void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) { + private async void AreaCommitmentSaveButton_Click(object sender, RoutedEventArgs evt) { AreaCommitment? a = new(); if (IsEditing) a = (AreaCommitment)AreaCommitmentList.SelectedItem; @@ -227,7 +236,7 @@ namespace Elwig.Windows { ShowAreaCommitmentNewEditDeleteButtons(); EnableContractNewDeleteButtons(); LockInputs(); - RefreshContractList(); + await RefreshContractList(); } private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) { @@ -252,7 +261,7 @@ namespace Elwig.Windows { LockInputs(); } - private void ContractSaveButton_Click(object sender, RoutedEventArgs evt) { + private async void ContractSaveButton_Click(object sender, RoutedEventArgs evt) { IsEditing = false; IsCreating = false; AreaCommitmentList.IsEnabled = true; @@ -261,7 +270,7 @@ namespace Elwig.Windows { ShowContractNewDeleteButtons(); EnableAreaCommitmentNewEditDeleteButtons(); LockInputs(); - RefreshContractList(); + await RefreshContractList(); } private void ContractCancelButton_Click(object sender, RoutedEventArgs evt) { @@ -368,8 +377,8 @@ namespace Elwig.Windows { DeleteAreaCommitmentButton.Visibility = Visibility.Hidden; } - private void ContractList_SelectionChanged(object sender, SelectionChangedEventArgs evt) { - RefreshAreaCommitmentList(); + private async void ContractList_SelectionChanged(object sender, SelectionChangedEventArgs evt) { + await RefreshAreaCommitmentList(); } private void AreaCommitmentList_SelectionChanged(object sender, SelectionChangedEventArgs evt) {