BaseDataWindow: implement client data saving

This commit is contained in:
2023-09-02 22:23:12 +02:00
parent 67dbf62eb7
commit 8b0f1e35c8
3 changed files with 177 additions and 22 deletions

View File

@ -1,3 +1,4 @@
using Elwig.Helpers;
using System.Windows;
using System.Windows.Controls;
@ -5,34 +6,122 @@ namespace Elwig.Windows {
public partial class BaseDataWindow : AdministrationWindow {
public BaseDataWindow() {
InitializeComponent();
RequiredInputs = new Control[] {
ClientNameInput, ClientNameTypeInput, ClientNameTokenInput, ClientNameShortInput,
ClientAddressInput, ClientPlzInput, ClientOrtInput,
};
ExemptInputs = new Control[] {
ClientNameFull,
};
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
ClientNameInput.Text = App.Client.Name;
ClientNameSuffixInput.Text = App.Client.NameSuffix;
ClientNameTypeInput.Text = App.Client.NameType;
ClientNameTokenInput.Text = App.Client.NameToken;
ClientNameShortInput.Text = App.Client.NameShort;
ClientAddressInput.Text = App.Client.Address;
ClientPlzInput.Text = App.Client.Plz.ToString();
ClientOrtInput.Text = App.Client.Ort;
ClientIbanInput.Text = App.Client.Iban;
ClientBicInput.Text = App.Client.Bic;
ClientUstIdNrInput.Text = App.Client.UstIdNr;
ClientLfbisNrInput.Text = App.Client.LfbisNr;
ClientPhoneNrInput.Text = App.Client.PhoneNr;
ClientFaxNrInput.Text = App.Client.FaxNr;
ClientEmailAddressInput.Text = App.Client.EmailAddress;
ClientWebsiteInput.Text = App.Client.Website;
LockInputs();
FillInputs(App.Client);
}
protected override void UpdateButtons() {
if (!IsEditing && !IsCreating) return;
bool ch = HasChanged, v = IsValid;
CancelButton.IsEnabled = true;
ResetButton.IsEnabled = ch;
SaveButton.IsEnabled = ch && v;
}
private void EditButton_Click(object sender, RoutedEventArgs evt) {
IsEditing = true;
EditButton.Visibility = Visibility.Hidden;
ResetButton.Visibility = Visibility.Visible;
UnlockInputs();
UpdateButtons();
}
private void CancelButton_Click(object sender, RoutedEventArgs evt) {
IsEditing = false;
IsCreating = false;
EditButton.Visibility = Visibility.Visible;
ResetButton.Visibility = Visibility.Hidden;
CancelButton.IsEnabled = false;
SaveButton.IsEnabled = false;
ResetButton.IsEnabled = false;
ClearInputStates();
FillInputs(App.Client);
LockInputs();
}
private void ResetButton_Click(object sender, RoutedEventArgs evt) {
ClearInputStates();
FillInputs(App.Client);
UpdateButtons();
}
private void SaveButton_Click(object sender, RoutedEventArgs evt) {
UpdateClientParameters(App.Client);
IsEditing = false;
IsCreating = false;
EditButton.Visibility = Visibility.Visible;
ResetButton.Visibility = Visibility.Hidden;
CancelButton.IsEnabled = false;
SaveButton.IsEnabled = false;
ResetButton.IsEnabled = false;
ClearInputStates();
FillInputs(App.Client);
LockInputs();
}
private void FillInputs(ClientParameters p) {
ClearOriginalValues();
ClearDefaultValues();
ClientNameInput.Text = p.Name;
ClientNameSuffixInput.Text = p.NameSuffix;
ClientNameTypeInput.Text = p.NameType;
ClientNameTokenInput.Text = p.NameToken;
ClientNameShortInput.Text = p.NameShort;
ClientAddressInput.Text = p.Address;
ClientPlzInput.Text = p.Plz.ToString();
ClientOrtInput.Text = p.Ort;
ClientIbanInput.Text = p.Iban;
ClientBicInput.Text = p.Bic;
ClientUstIdNrInput.Text = p.UstIdNr;
ClientLfbisNrInput.Text = p.LfbisNr;
ClientPhoneNrInput.Text = p.PhoneNr;
ClientFaxNrInput.Text = p.FaxNr;
ClientEmailAddressInput.Text = p.EmailAddress;
ClientWebsiteInput.Text = p.Website;
FinishInputFilling();
}
private async void UpdateClientParameters(ClientParameters p) {
p.Name = ClientNameInput.Text;
p.NameSuffix = ClientNameSuffixInput.Text.Length > 0 ? ClientNameSuffixInput.Text : null;
p.NameType = ClientNameTypeInput.Text;
p.NameToken = ClientNameTokenInput.Text;
p.NameShort = ClientNameShortInput.Text;
p.Address = ClientAddressInput.Text;
p.Plz = int.Parse(ClientPlzInput.Text);
p.Ort = ClientOrtInput.Text;
p.Iban = ClientIbanInput.Text.Length > 0 ? ClientIbanInput.Text.Replace(" ", "") : null;
p.Bic = ClientBicInput.Text.Length > 0 ? ClientBicInput.Text : null;
p.UstIdNr = ClientUstIdNrInput.Text.Length > 0 ? ClientUstIdNrInput.Text : null;
p.LfbisNr = ClientLfbisNrInput.Text.Length > 0 ? ClientLfbisNrInput.Text : null;
p.PhoneNr = ClientPhoneNrInput.Text.Length > 0 ? ClientPhoneNrInput.Text : null;
p.FaxNr = ClientFaxNrInput.Text.Length > 0 ? ClientFaxNrInput.Text : null;
p.EmailAddress = ClientEmailAddressInput.Text.Length > 0 ? ClientEmailAddressInput.Text : null;
p.Website = ClientWebsiteInput.Text.Length > 0 ? ClientWebsiteInput.Text : null;
await p.UpdateValues();
}
private void ClientNames_TextChanged(object sender, TextChangedEventArgs evt) {
var suffix = ClientNameSuffixInput.Text.Length > 0 ? ClientNameSuffixInput.Text : null;
ClientNameFull.Text = $"{ClientNameInput.Text}{(suffix != null ? $", {suffix}," : "")} {ClientNameTypeInput.Text}";
TextBox_TextChanged(sender, evt);
}
}
}