Improve newmemberbutton
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
using Microsoft.EntityFrameworkCore;
 | 
			
		||||
using ModernWpf.Controls;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
@@ -16,6 +17,10 @@ namespace WGneu.Windows {
 | 
			
		||||
        private bool IsCreating = false;
 | 
			
		||||
        private List<string> TextFilter = new();
 | 
			
		||||
        private readonly Control[] ExemptInputs;
 | 
			
		||||
        private IEnumerable<TextBox> TextBoxInputs = Array.Empty<TextBox>();
 | 
			
		||||
        private IEnumerable<ComboBox> ComboBoxInputs = Array.Empty<ComboBox>();
 | 
			
		||||
        private IEnumerable<CheckBox> CheckBoxInputs = Array.Empty<CheckBox>();
 | 
			
		||||
        private IEnumerable<RadioButton> RadioButtonInputs = Array.Empty<RadioButton>();
 | 
			
		||||
        private readonly Dictionary<Control, bool> Valid = new();
 | 
			
		||||
        private readonly Dictionary<Control, object?> OriginalValues = new();
 | 
			
		||||
        private readonly RoutedCommand CtrlF = new();
 | 
			
		||||
@@ -30,14 +35,18 @@ namespace WGneu.Windows {
 | 
			
		||||
                NewMemberButton, EditMemberButton, DeleteMemberButton,
 | 
			
		||||
                ResetButton, SaveButton, CancelButton
 | 
			
		||||
            };
 | 
			
		||||
            foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
 | 
			
		||||
                Valid[tb] = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Window_Loaded(object sender, RoutedEventArgs evt) {
 | 
			
		||||
            ActiveMemberInput.IsChecked = true;
 | 
			
		||||
            BranchInput.ItemsSource = Context.Branches.OrderBy(b => b.Name).ToList();
 | 
			
		||||
            DefaultKgInput.ItemsSource = Context.WbKgs.Select(k => k.Kg).OrderBy(k => k.Name).ToList();
 | 
			
		||||
            TextBoxInputs = Utils.FindVisualChilds<TextBox>(this, ExemptInputs).ToList();
 | 
			
		||||
            ComboBoxInputs = Utils.FindVisualChilds<ComboBox>(this, ExemptInputs).ToList();
 | 
			
		||||
            CheckBoxInputs = Utils.FindVisualChilds<CheckBox>(this, ExemptInputs).ToList();
 | 
			
		||||
            RadioButtonInputs = Utils.FindVisualChilds<RadioButton>(this, ExemptInputs).ToList();
 | 
			
		||||
            foreach (var tb in TextBoxInputs)
 | 
			
		||||
                Valid[tb] = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void OnClosing(CancelEventArgs evt) {
 | 
			
		||||
@@ -84,13 +93,13 @@ namespace WGneu.Windows {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ClearInputStates() {
 | 
			
		||||
            foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var tb in TextBoxInputs)
 | 
			
		||||
                Utils.ClearInputState(tb);
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in ComboBoxInputs)
 | 
			
		||||
                Utils.ClearInputState(cb);
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in CheckBoxInputs)
 | 
			
		||||
                Utils.ClearInputState(cb);
 | 
			
		||||
            foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
 | 
			
		||||
            foreach (var rb in RadioButtonInputs)
 | 
			
		||||
                Utils.ClearInputState(rb);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -111,7 +120,6 @@ namespace WGneu.Windows {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void InitInputs() {
 | 
			
		||||
            ClearInputs();
 | 
			
		||||
            MgNrInput.Text = Utils.NextMgNr(Context).ToString();
 | 
			
		||||
            EntryDateInput.Text = DateTime.Now.ToString("dd.MM.yyyy");
 | 
			
		||||
            if (Context.Branches.Count() == 1)
 | 
			
		||||
@@ -317,24 +325,24 @@ namespace WGneu.Windows {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void LockInputs() {
 | 
			
		||||
            foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var tb in TextBoxInputs)
 | 
			
		||||
                tb.IsReadOnly = true;
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in ComboBoxInputs)
 | 
			
		||||
                cb.IsEnabled = false;
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in CheckBoxInputs)
 | 
			
		||||
                cb.IsEnabled = false;
 | 
			
		||||
            foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
 | 
			
		||||
            foreach (var rb in RadioButtonInputs)
 | 
			
		||||
                rb.IsEnabled = false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void UnlockInputs() {
 | 
			
		||||
            foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var tb in TextBoxInputs)
 | 
			
		||||
                tb.IsReadOnly = false;
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in ComboBoxInputs)
 | 
			
		||||
                cb.IsEnabled = true;
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in CheckBoxInputs)
 | 
			
		||||
                cb.IsEnabled = true;
 | 
			
		||||
            foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
 | 
			
		||||
            foreach (var rb in RadioButtonInputs)
 | 
			
		||||
                rb.IsEnabled = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -407,13 +415,13 @@ namespace WGneu.Windows {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FillOriginalValues() {
 | 
			
		||||
            foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var tb in TextBoxInputs)
 | 
			
		||||
                OriginalValues[tb] = tb.Text;
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in ComboBoxInputs)
 | 
			
		||||
                OriginalValues[cb] = cb.SelectedItem;
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in CheckBoxInputs)
 | 
			
		||||
                OriginalValues[cb] = (cb.IsChecked ?? false) ? bool.TrueString : null;
 | 
			
		||||
            foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
 | 
			
		||||
            foreach (var rb in RadioButtonInputs)
 | 
			
		||||
                OriginalValues[rb] = (rb.IsChecked ?? false) ? bool.TrueString : null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -421,24 +429,23 @@ namespace WGneu.Windows {
 | 
			
		||||
            Menu_Member_SendEmail.IsEnabled = false;
 | 
			
		||||
            AreaCommitment.Text = "- m²";
 | 
			
		||||
            OriginalValues.Clear();
 | 
			
		||||
            foreach (var tb in Utils.FindVisualChilds<TextBox>(this, ExemptInputs)) {
 | 
			
		||||
            foreach (var tb in TextBoxInputs) {
 | 
			
		||||
                tb.Text = " ";
 | 
			
		||||
                tb.Text = "";
 | 
			
		||||
            }
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs)) {
 | 
			
		||||
            foreach (var cb in ComboBoxInputs) {
 | 
			
		||||
                cb.SelectedItem = null;
 | 
			
		||||
                if (cb.ItemsSource != null)
 | 
			
		||||
                    Utils.SetInputInvalid(cb);
 | 
			
		||||
            }
 | 
			
		||||
            foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
 | 
			
		||||
            foreach (var cb in CheckBoxInputs)
 | 
			
		||||
                cb.IsChecked = false;
 | 
			
		||||
            foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
 | 
			
		||||
            foreach (var rb in RadioButtonInputs)
 | 
			
		||||
                rb.IsChecked = false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private bool IsValid() {
 | 
			
		||||
            return Valid.All(kv => kv.Value) &&
 | 
			
		||||
                Utils.FindVisualChilds<ComboBox>(this, ExemptInputs).All(cb => cb.ItemsSource == null || cb.SelectedItem != null);
 | 
			
		||||
            return Valid.All(kv => kv.Value) && ComboBoxInputs.All(cb => cb.ItemsSource == null || cb.SelectedItem != null);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void UpdateButtons() {
 | 
			
		||||
@@ -466,10 +473,10 @@ namespace WGneu.Windows {
 | 
			
		||||
 | 
			
		||||
        private bool HasChanged() {
 | 
			
		||||
            return !IsValid() ||
 | 
			
		||||
                Utils.FindVisualChilds<TextBox>(this, ExemptInputs).Any(InputHasChanged) ||
 | 
			
		||||
                Utils.FindVisualChilds<ComboBox>(this, ExemptInputs).Any(InputHasChanged) ||
 | 
			
		||||
                Utils.FindVisualChilds<CheckBox>(this, ExemptInputs).Any(InputHasChanged) ||
 | 
			
		||||
                Utils.FindVisualChilds<RadioButton>(this, ExemptInputs).Any(InputHasChanged);
 | 
			
		||||
                TextBoxInputs.Any(InputHasChanged) ||
 | 
			
		||||
                ComboBoxInputs.Any(InputHasChanged) ||
 | 
			
		||||
                CheckBoxInputs.Any(InputHasChanged) ||
 | 
			
		||||
                RadioButtonInputs.Any(InputHasChanged);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void UpdatePlz(TextBox plzInput, ComboBox ortInput, bool optional) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user