Move more input checker methods to AdminWindow

This commit is contained in:
2023-04-16 20:28:14 +02:00
parent 2c2ac46b2e
commit aadbd2b724
7 changed files with 115 additions and 111 deletions

View File

@ -46,7 +46,7 @@ namespace Elwig {
protected void OnPrintingReadyChanged(EventArgs evt) { protected void OnPrintingReadyChanged(EventArgs evt) {
foreach (Window w in Windows) { foreach (Window w in Windows) {
foreach (var b in Utils.FindVisualChilds<Button>(w).Where(b => "Print".Equals(b.Tag))) { foreach (var b in Utils.FindAllChildren<Button>(w).Where(b => "Print".Equals(b.Tag))) {
b.IsEnabled = IsPrintingReady; b.IsEnabled = IsPrintingReady;
} }
} }

View File

@ -7,7 +7,6 @@ using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Diagnostics; using System.Diagnostics;
using System.Windows.Controls.Primitives; using System.Windows.Controls.Primitives;
using Microsoft.EntityFrameworkCore;
namespace Elwig.Helpers { namespace Elwig.Helpers {
public static class Utils { public static class Utils {
@ -46,22 +45,36 @@ namespace Elwig.Helpers {
return toggleButton?.Template.FindName("templateRoot", toggleButton) as Border; return toggleButton?.Template.FindName("templateRoot", toggleButton) as Border;
} }
public static IEnumerable<T> FindVisualChilds<T>(DependencyObject depObj) where T : DependencyObject { public static IEnumerable<T> FindAllChildren<T>(DependencyObject depObj) where T : DependencyObject {
if (depObj == null) if (depObj == null)
yield return (T)Enumerable.Empty<T>(); yield return (T)Enumerable.Empty<T>();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { foreach (var child in LogicalTreeHelper.GetChildren(depObj)) {
DependencyObject ithChild = VisualTreeHelper.GetChild(depObj, i); if (child == null) {
if (ithChild == null)
continue; continue;
if (ithChild is T t) } else if (child is T t) {
yield return t; yield return t;
foreach (T childOfChild in FindVisualChilds<T>(ithChild)) } else if (child is DependencyObject childDepOpj) {
yield return childOfChild; foreach (T childOfChild in FindAllChildren<T>(childDepOpj)) {
yield return childOfChild;
}
}
} }
} }
public static IEnumerable<T> FindVisualChilds<T>(DependencyObject depObj, IEnumerable<DependencyObject> exempt) where T : DependencyObject { public static IEnumerable<T> FindAllChildren<T>(DependencyObject depObj, IEnumerable<DependencyObject> exempt) where T : DependencyObject {
return FindVisualChilds<T>(depObj).Where(c => !exempt.Contains(c)); return FindAllChildren<T>(depObj).Where(c => !exempt.Contains(c));
}
public static T? FindNextSibling<T>(Control me) where T : DependencyObject {
var found = false;
foreach (var child in LogicalTreeHelper.GetChildren(me.Parent)) {
if (found && child is T c) {
return c;
} else if (child == me) {
found = true;
}
}
return null;
} }
public static int Modulo(string a, int b) { public static int Modulo(string a, int b) {

View File

@ -30,7 +30,7 @@ namespace Elwig.Helpers {
{ "423", Array.Empty<string[]>() }, { "423", Array.Empty<string[]>() },
}; };
public static ValidationResult CheckNumeric(TextBox input, bool required) { public static ValidationResult CheckInteger(TextBox input, bool required) {
return CheckNumeric(input, required, -1); return CheckNumeric(input, required, -1);
} }
@ -257,7 +257,7 @@ namespace Elwig.Helpers {
} }
public static ValidationResult CheckMgNr(TextBox input, bool required, AppDbContext ctx, Member? m) { public static ValidationResult CheckMgNr(TextBox input, bool required, AppDbContext ctx, Member? m) {
var res = CheckNumeric(input, required); var res = CheckInteger(input, required);
if (!res.IsValid) { if (!res.IsValid) {
return res; return res;
} else if (!required && input.Text.Length == 0) { } else if (!required && input.Text.Length == 0) {
@ -273,7 +273,7 @@ namespace Elwig.Helpers {
} }
public static ValidationResult CheckPredecessorMgNr(TextBox input, bool required, AppDbContext ctx) { public static ValidationResult CheckPredecessorMgNr(TextBox input, bool required, AppDbContext ctx) {
var res = CheckNumeric(input, required); var res = CheckInteger(input, required);
if (!res.IsValid) { if (!res.IsValid) {
return res; return res;
} else if (!required && input.Text.Length == 0) { } else if (!required && input.Text.Length == 0) {
@ -296,7 +296,7 @@ namespace Elwig.Helpers {
} }
public static ValidationResult CheckVNr(TextBox input, bool required, AppDbContext ctx, Contract? c) { public static ValidationResult CheckVNr(TextBox input, bool required, AppDbContext ctx, Contract? c) {
var res = CheckNumeric(input, required); var res = CheckInteger(input, required);
if (!res.IsValid) { if (!res.IsValid) {
return res; return res;
} else if (!required && input.Text.Length == 0) { } else if (!required && input.Text.Length == 0) {

View File

@ -30,10 +30,10 @@ namespace Elwig.Windows {
} }
private void OnLoaded(object sender, RoutedEventArgs evt) { private void OnLoaded(object sender, RoutedEventArgs evt) {
TextBoxInputs = Utils.FindVisualChilds<TextBox>(this, ExemptInputs).ToArray(); TextBoxInputs = Utils.FindAllChildren<TextBox>(this, ExemptInputs).ToArray();
ComboBoxInputs = Utils.FindVisualChilds<ComboBox>(this, ExemptInputs).ToArray(); ComboBoxInputs = Utils.FindAllChildren<ComboBox>(this, ExemptInputs).ToArray();
CheckBoxInputs = Utils.FindVisualChilds<CheckBox>(this, ExemptInputs).ToArray(); CheckBoxInputs = Utils.FindAllChildren<CheckBox>(this, ExemptInputs).ToArray();
RadioButtonInputs = Utils.FindVisualChilds<RadioButton>(this, ExemptInputs).ToArray(); RadioButtonInputs = Utils.FindAllChildren<RadioButton>(this, ExemptInputs).ToArray();
foreach (var tb in TextBoxInputs) foreach (var tb in TextBoxInputs)
Valid[tb] = true; Valid[tb] = true;
} }
@ -250,5 +250,76 @@ namespace Elwig.Windows {
UpdateButtons(); UpdateButtons();
} }
protected void IntegerInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckInteger);
}
protected void PartialDateInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckPartialDate);
}
protected void DateInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckDate);
}
protected void PlzInput_TextChanged(object sender, RoutedEventArgs evt) {
var plz = (TextBox)sender;
InputTextChanged(plz, Validator.CheckPlz);
UpdatePlz(plz, Utils.FindNextSibling<ComboBox>(plz));
}
protected void PlzInput_LostFocus(object sender, RoutedEventArgs evt) {
var plz = (TextBox)sender;
InputLostFocus(plz, Validator.CheckPlz);
UpdatePlz(plz, Utils.FindNextSibling<ComboBox>(plz));
}
protected void EmailInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckEmailAddress);
}
protected void EmailInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckEmailAddress);
}
protected void PhoneNrInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckPhoneNumber);
}
protected void PhoneNrInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckPhoneNumber);
}
protected void IbanInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckIban);
}
protected void IbanInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckIban);
}
protected void BicInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckBic);
}
protected void BicInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckBic);
}
protected void UstIdInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckUstId);
}
protected void UstIdInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckUstId);
}
protected void LfbisNrInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckLfbisNr);
}
protected void LfbisNrInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckLfbisNr);
}
} }
} }

View File

@ -448,7 +448,7 @@ namespace Elwig.Windows {
} }
private void NumericInput_TextChanged(object sender, RoutedEventArgs evt) { private void NumericInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckNumeric); InputTextChanged((TextBox)sender, Validator.CheckInteger);
} }
private void VNrInput_TextChanged(object sender, RoutedEventArgs evt) { private void VNrInput_TextChanged(object sender, RoutedEventArgs evt) {
@ -460,11 +460,11 @@ namespace Elwig.Windows {
} }
private void YearFromInput_TextChanged(object sender, RoutedEventArgs evt) { private void YearFromInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckNumeric); InputTextChanged((TextBox)sender, Validator.CheckInteger);
} }
private void YearToInput_TextChanged(object sender, RoutedEventArgs evt) { private void YearToInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckNumeric); InputTextChanged((TextBox)sender, Validator.CheckInteger);
} }
private void GstNrInput_TextChanged(object sender, RoutedEventArgs evt) { private void GstNrInput_TextChanged(object sender, RoutedEventArgs evt) {
@ -476,7 +476,7 @@ namespace Elwig.Windows {
} }
private void AreaInput_TextChanged(object sender, RoutedEventArgs evt) { private void AreaInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckNumeric); InputTextChanged((TextBox)sender, Validator.CheckInteger);
} }
} }
} }

View File

@ -140,7 +140,7 @@
<Label Content="Geburtstag:" Margin="10,100,0,0" Grid.Column="0"/> <Label Content="Geburtstag:" Margin="10,100,0,0" Grid.Column="0"/>
<TextBox x:Name="BirthdayInput" Margin="0,100,0,0" Grid.Column="1" Width="78" TextAlignment="Right" HorizontalAlignment="Left" <TextBox x:Name="BirthdayInput" Margin="0,100,0,0" Grid.Column="1" Width="78" TextAlignment="Right" HorizontalAlignment="Left"
TextChanged="BirthdayInput_TextChanged"/> TextChanged="PartialDateInput_TextChanged"/>
<Label Content="Adresse:" Margin="10,130,0,0"/> <Label Content="Adresse:" Margin="10,130,0,0"/>
<TextBox x:Name="AddressInput" Margin="0,130,10,0" Grid.Column="1" Grid.ColumnSpan="3" <TextBox x:Name="AddressInput" Margin="0,130,10,0" Grid.Column="1" Grid.ColumnSpan="3"
@ -232,7 +232,7 @@
<Label Content="PLZ/Ort:" Margin="10,70,0,0" Grid.Column="0"/> <Label Content="PLZ/Ort:" Margin="10,70,0,0" Grid.Column="0"/>
<TextBox x:Name="BillingPlzInput" Margin="0,70,0,0" Width="42" Grid.Column="1" HorizontalAlignment="Left" <TextBox x:Name="BillingPlzInput" Margin="0,70,0,0" Width="42" Grid.Column="1" HorizontalAlignment="Left"
TextChanged="BillingPlzInput_TextChanged" LostFocus="BillingPlzInput_LostFocus"/> TextChanged="PlzInput_TextChanged" LostFocus="PlzInput_LostFocus"/>
<ComboBox x:Name="BillingOrtInput" ItemTemplate="{StaticResource PostalDestComboBoxTemplate}" TextSearch.TextPath="Ort.Name" <ComboBox x:Name="BillingOrtInput" ItemTemplate="{StaticResource PostalDestComboBoxTemplate}" TextSearch.TextPath="Ort.Name"
SelectionChanged="ComboBox_SelectionChanged" SelectionChanged="ComboBox_SelectionChanged"
Margin="47,70,10,0" Grid.Column="1"/> Margin="47,70,10,0" Grid.Column="1"/>
@ -247,16 +247,16 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label Content="Eintritt:" Margin="10,10,0,0" Grid.Column="0"/> <Label Content="Eintritt:" Margin="10,10,0,0" Grid.Column="0"/>
<TextBox x:Name="EntryDateInput" Margin="0,10,10,0" Width="78" Grid.Column="1" HorizontalAlignment="Left" TextAlignment="Right" <TextBox x:Name="EntryDateInput" Margin="0,10,10,0" Width="78" Grid.Column="1" HorizontalAlignment="Left" TextAlignment="Right"
TextChanged="DateInput_TextChanged"/> TextChanged="DateInput_TextChanged"/>
<Label Content="Austritt:" Margin="10,40,0,0" Grid.Column="0"/> <Label Content="Austritt:" Margin="10,40,0,0" Grid.Column="0"/>
<TextBox x:Name="ExitDateInput" Margin="0,40,10,0" Width="78" Grid.Column="1" HorizontalAlignment="Left" TextAlignment="Right" <TextBox x:Name="ExitDateInput" Margin="0,40,10,0" Width="78" Grid.Column="1" HorizontalAlignment="Left" TextAlignment="Right"
TextChanged="DateInput_TextChanged"/> TextChanged="DateInput_TextChanged"/>
<Label Content="Geschäftsanteile:" Margin="10,70,0,0" Grid.Column="0"/> <Label Content="Geschäftsanteile:" Margin="10,70,0,0" Grid.Column="0"/>
<TextBox x:Name="BusinessSharesInput" Margin="0,70,10,0" Width="48" Grid.Column="1" HorizontalAlignment="Left" TextAlignment="Right" <TextBox x:Name="BusinessSharesInput" Margin="0,70,10,0" Width="48" Grid.Column="1" HorizontalAlignment="Left" TextAlignment="Right"
TextChanged="NumericInput_TextChanged"/> TextChanged="IntegerInput_TextChanged"/>
<Label Content="BH-Konto:" Margin="10,100,0,0" Grid.Column="0"/> <Label Content="BH-Konto:" Margin="10,100,0,0" Grid.Column="0"/>
<TextBox x:Name="AccountingNrInput" Margin="0,100,10,0" Grid.Column="1" <TextBox x:Name="AccountingNrInput" Margin="0,100,10,0" Grid.Column="1"

View File

@ -86,6 +86,7 @@ namespace Elwig.Windows {
EditMemberButton.IsEnabled = false; EditMemberButton.IsEnabled = false;
DeleteMemberButton.IsEnabled = false; DeleteMemberButton.IsEnabled = false;
AreaCommitmentButton.IsEnabled = false; AreaCommitmentButton.IsEnabled = false;
ClearOriginalValues();
ClearInputs(); ClearInputs();
} }
if (!validate) ClearInputStates(); if (!validate) ClearInputStates();
@ -393,10 +394,9 @@ namespace Elwig.Windows {
FillOriginalValues(); FillOriginalValues();
} }
protected void ClearInputs() { new protected void ClearInputs() {
Menu_Member_SendEmail.IsEnabled = false; Menu_Member_SendEmail.IsEnabled = false;
AreaCommitment.Text = "- m²"; AreaCommitment.Text = "- m²";
ClearOriginalValues();
base.ClearInputs(); base.ClearInputs();
} }
@ -415,10 +415,6 @@ namespace Elwig.Windows {
InputLostFocus(input, checker(input, SenderIsRequired(input), Context, (Member)MemberList.SelectedItem), msg); InputLostFocus(input, checker(input, SenderIsRequired(input), Context, (Member)MemberList.SelectedItem), msg);
} }
private void NumericInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckNumeric);
}
private void MgNrInput_TextChanged(object sender, RoutedEventArgs evt) { private void MgNrInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckMgNr); InputTextChanged((TextBox)sender, Validator.CheckMgNr);
} }
@ -434,81 +430,5 @@ namespace Elwig.Windows {
private void PredecessorMgNrInput_LostFocus(object sender, RoutedEventArgs evt) { private void PredecessorMgNrInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckPredecessorMgNr); InputLostFocus((TextBox)sender, Validator.CheckPredecessorMgNr);
} }
private void BirthdayInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckPartialDate);
}
private void PlzInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckPlz);
UpdatePlz((TextBox)sender, OrtInput);
}
private void PlzInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckPlz);
UpdatePlz((TextBox)sender, OrtInput);
}
private void PhoneNrInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckPhoneNumber);
}
private void PhoneNrInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckPhoneNumber);
}
private void EmailInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckEmailAddress);
}
private void EmailInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckEmailAddress);
}
private void IbanInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckIban);
}
private void IbanInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckIban);
}
private void BicInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckBic);
}
private void BicInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckBic);
}
private void UstIdInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckUstId);
}
private void UstIdInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckUstId);
}
private void LfbisNrInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckLfbisNr);
}
private void LfbisNrInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckLfbisNr);
}
private void BillingPlzInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckPlz);
UpdatePlz((TextBox)sender, BillingOrtInput);
}
private void BillingPlzInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckPlz);
UpdatePlz((TextBox)sender, BillingOrtInput);
}
private void DateInput_TextChanged(object sender, RoutedEventArgs evt) {
InputTextChanged((TextBox)sender, Validator.CheckDate);
}
} }
} }