using Elwig.Helpers; using System.Windows; using System.Windows.Controls; 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) { 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); } } }