using MBI.CustomerSelect.Unity.Domain; using Noesis; using System; using GUI = Noesis.GUI; using NoesisEventArgs = Noesis.EventArgs; namespace MBI.CustomerSelect.Unity.UI { public partial class SharingControl : UserControl { private FrameworkElement _Root; private TextBox _FromTextBox; private TextBox _ToTextBox; private RadioButton _MobileRadioButton; private RadioButton _EmailRadioButton; private StackPanel _DetailStackPanel; private TextBlock _MobileText; private TextBlock _EmailText; private TextBox _MobileTextBox; private TextBox _EmailTextBox; private Button _OKButton; private Button _CancelButton; public Action Closed { get; set; } public ProjectInvitation Result { get; private set; } public SharingControl() { this.Initialized += OnInitialized; this.InitializeComponent(); } private void InitializeComponent() { GUI.LoadComponent(this, "Assets/User Interface/Controls/SharingControl.xaml"); _Root = Content as FrameworkElement; _FromTextBox = _Root.FindName("_FromTextBox") as TextBox; _ToTextBox = _Root.FindName("_ToTextBox") as TextBox; _MobileRadioButton = _Root.FindName("_MobileRadioButton") as RadioButton; _EmailRadioButton = _Root.FindName("_EmailRadioButton") as RadioButton; _DetailStackPanel = _Root.FindName("_DetailStackPanel") as StackPanel; _MobileText = _Root.FindName("_MobileText") as TextBlock; _EmailText = _Root.FindName("_EmailText") as TextBlock; _MobileTextBox = _Root.FindName("_MobileTextBox") as TextBox; _EmailTextBox = _Root.FindName("_EmailTextBox") as TextBox; _OKButton = _Root.FindName("_OKButton") as Button; _CancelButton = _Root.FindName("_CancelButton") as Button; } private void OnInitialized(object sender, NoesisEventArgs args) { _MobileRadioButton.Checked += (sender2, e) => { _DetailStackPanel.Visibility = Visibility.Visible; _MobileText.Visibility = Visibility.Visible; _EmailText.Visibility = Visibility.Collapsed; _MobileTextBox.Visibility = Visibility.Visible; _EmailTextBox.Visibility = Visibility.Collapsed; Validate(); }; _EmailRadioButton.Checked += (sender2, e) => { _DetailStackPanel.Visibility = Visibility.Visible; _MobileText.Visibility = Visibility.Collapsed; _EmailText.Visibility = Visibility.Visible; _MobileTextBox.Visibility = Visibility.Collapsed; _EmailTextBox.Visibility = Visibility.Visible; Validate(); }; _EmailTextBox.TextChanged += (sender2, e) => Validate(); _MobileTextBox.TextChanged += (sender2, e) => Validate(); _FromTextBox.TextChanged += (sender2, e) => Validate(); _ToTextBox.TextChanged += (sender2, e) => Validate(); _OKButton.Click += (sender2, e) => { Result = new ProjectInvitation(); if (_MobileRadioButton.IsChecked.Value) { Result.DeliveryType = ContactType.Phone; Result.RecipientMobilePhone = _MobileTextBox.Text; } else { Result.DeliveryType = ContactType.Email; Result.RecipientEmailAddress = _EmailTextBox.Text; } Result.SenderFirstName = _FromTextBox.Text; Result.RecipientFirstName = _ToTextBox.Text; Hide(); }; _CancelButton.Click += (sender2, e) => { Result = null; Hide(); }; } public void Show() { MainControl.Instance.ShowPopup(this, true); } public void Hide() { MainControl.Instance.HidePopup(); Closed?.Invoke(); } private void Validate() { if (_MobileRadioButton.IsChecked.Value) { string mobileNumber = _MobileTextBox.Text.Replace("-", string.Empty); _OKButton.IsEnabled = mobileNumber.Length == 10 && _FromTextBox.Text.Length > 0 && _ToTextBox.Text.Length > 0; } else if (_EmailRadioButton.IsChecked.Value) { string emailText = _EmailTextBox.Text.Replace("-", string.Empty); _OKButton.IsEnabled = emailText.Length > 3 && emailText.Contains("@") && _FromTextBox.Text.Length > 0 && _ToTextBox.Text.Length > 0; } } } }