using Gestor.Application.Componentes; using Gestor.Application.Helpers; using Gestor.Application.ViewModels.Drawer; using Gestor.Application.ViewModels.Generic; using Gestor.Application.Views.Generic; using Gestor.Common.Helpers; using Gestor.Common.Validation; using Gestor.Model.Common; using Gestor.Model.Domain.Ferramentas; using Gestor.Model.Domain.Generic; using MaterialDesignThemes.Wpf; using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Input; using System.Windows.Markup; using System.Windows.Threading; using Xceed.Wpf.AvalonDock.Controls; namespace Gestor.Application.Drawers { public class AgendaDrawer : BaseUserControl, IComponentConnector, IStyleConnector { internal System.Windows.Controls.ProgressBar ProgressBar; internal DataGrid AgendaGrid; internal MenuItem MaisOpcoesButton; internal TextBox NomeBox; internal TextBox CepBox; internal System.Windows.Controls.ProgressBar ProgressCep; internal TextBox EnderecoBox; internal TextBox BairroBox; internal TextBox CidadeBox; internal TextBox EstadoBox; internal TextBox ObsBox; internal ListBox TelefoneListBox; internal ListBox EmailListBox; internal MaterialDesignThemes.Wpf.Snackbar Snackbar; private bool _contentLoaded; private AgendaViewModel ViewModel { get; } [DebuggerNonUserCode] [GeneratedCode("PresentationBuildTasks", "4.0.0.0")] internal Delegate _CreateDelegate(Type delegateType, string handler) { return Delegate.CreateDelegate(delegateType, this, handler); } public AgendaDrawer() { this.ViewModel = new AgendaViewModel(); base.DataContext = this.ViewModel; this.InitializeComponent(); System.Windows.Threading.Dispatcher dispatcher = base.Dispatcher; if (dispatcher == null) { return; } dispatcher.BeginInvoke(DispatcherPriority.Render, new Action(this.ContentLoad)); } private void AbrirLog_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.AbrirLog(34, this.ViewModel.SelectedAgenda.get_Id()); } private async void AgendaGrid_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { object obj; DataGrid dataGrid = (DataGrid)sender; if (dataGrid == null || dataGrid.SelectedIndex >= 0) { AgendaViewModel viewModel = this.ViewModel; obj = (dataGrid != null ? dataGrid.Items[dataGrid.SelectedIndex] : null); await viewModel.SelecionaAgenda((Agenda)obj); } } private void Alterar_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.CancelAgenda = (Agenda)this.ViewModel.SelectedAgenda.Clone(); this.ViewModel.Alterar(true); } private void AutoCompleteBox_OnTextChanged(object sender, RoutedEventArgs e) { if (!string.IsNullOrWhiteSpace(((AutoCompleteBox)sender).get_Text())) { return; } this.ViewModel.FiltrarAgenda(""); } private void AutoCompleteBox_Populating(object sender, PopulatingEventArgs e) { if (e.get_Parameter().Length < 3) { return; } e.set_Cancel(true); this.ViewModel.Filtrar(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => { if (searchResult.Result == null) { return; } AutoCompleteBox autoCompleteBox = (AutoCompleteBox)sender; autoCompleteBox.set_ItemsSource(searchResult.Result); autoCompleteBox.PopulateComplete(); }, TaskScheduler.FromCurrentSynchronizationContext()); } private void Cancelar_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.CancelarAlteracao(); } private void CloseSlackBar() { Thread.Sleep(5000); System.Windows.Threading.Dispatcher dispatcher = this.ProgressBar.Dispatcher; if (dispatcher == null) { return; } dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => this.ToggleSnackBar("", false))); } private void ContentLoad() { this.AgendaGrid.SelectedIndex = 0; this.AgendaGrid.SelectionChanged += new SelectionChangedEventHandler(this.AgendaGrid_OnSelectionChanged); this.AgendaGrid.MouseDoubleClick += new MouseButtonEventHandler((object sender, MouseButtonEventArgs args) => { }); this.ViewModel.PermissaoWhatsapp = this.ViewModel.Restricao(32); } private void CopyEmailToClipBoard_Click(object sender, RoutedEventArgs e) { Button button = (Button)sender; ListBox listBox = Extentions.FindVisualAncestor(button); EmailBase item = (EmailBase)listBox.Items[listBox.Items.IndexOf(button.DataContext)]; item.get_Email().CopyToClipboard(); this.ToggleSnackBar(string.Concat("COPIADO - ", item.get_Email()), true); } private void CopyTelefoneToClipBoard_Click(object sender, RoutedEventArgs e) { Button button = (Button)sender; ListBox listBox = Extentions.FindVisualAncestor(button); TelefoneBase item = (TelefoneBase)listBox.Items[listBox.Items.IndexOf(button.DataContext)]; string.Concat(item.get_Prefixo(), ValidationHelper.OnlyNumber(item.get_Numero())).CopyToClipboard(); this.ToggleSnackBar(string.Concat("COPIADO - ", item.get_Prefixo(), ValidationHelper.OnlyNumber(item.get_Numero())), true); } private async void Excluir_OnClick(object sender, RoutedEventArgs e) { if (await this.ViewModel.Excluir()) { this.ToggleSnackBar("AGENDA EXCLUÍDA COM SUCESSO", true); } } private void ExcluirEmail_OnClick(object sender, RoutedEventArgs e) { Button button = sender as Button; if (button == null) { return; } ListBox listBox = Extentions.FindVisualAncestor(button); AgendaEmail item = (AgendaEmail)listBox.Items[listBox.Items.IndexOf(button.DataContext)]; this.ViewModel.ExcluirEmail(item); } private void ExcluirTelefone_OnClick(object sender, RoutedEventArgs e) { Button button = sender as Button; if (button == null) { return; } ListBox listBox = Extentions.FindVisualAncestor(button); AgendaTelefone item = (AgendaTelefone)listBox.Items[listBox.Items.IndexOf(button.DataContext)]; this.ViewModel.ExcluirTelefone(item); } private void Fechar_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.CloseDrawer(); } private void Incluir_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.Incluir(); List> keyValuePairs = this.ViewModel.SelectedAgenda.Validate(); this.ValidateFields(keyValuePairs, true); } private void IncluirEmail_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.IncluirEmail(); } private void IncluirTelefone_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.IncluirTelefone(); } [DebuggerNonUserCode] [GeneratedCode("PresentationBuildTasks", "4.0.0.0")] public void InitializeComponent() { if (this._contentLoaded) { return; } this._contentLoaded = true; System.Windows.Application.LoadComponent(this, new Uri("/Gestor.Application;component/drawers/agendadrawer.xaml", UriKind.Relative)); } private async void PostcodeBox_OnLostFocus(object sender, RoutedEventArgs e) { string str = ValidationHelper.FormatPostCode(((TextBox)sender).Text); this.CepBox.Text = str; if (ValidationHelper.ValidatePostCode(str)) { EnderecoBase enderecoBase = await this.ViewModel.BuscaCep(str); if (enderecoBase != null) { this.EnderecoBox.Text = enderecoBase.get_Endereco(); this.CidadeBox.Text = enderecoBase.get_Cidade(); this.EstadoBox.Text = enderecoBase.get_Estado(); this.BairroBox.Text = enderecoBase.get_Bairro(); } } } private async void Salvar_OnClick(object sender, RoutedEventArgs e) { bool flag; this.ViewModel.Carregando = true; List> keyValuePairs = await this.ViewModel.Salvar(); this.ValidateFields(keyValuePairs, true); flag = (keyValuePairs == null ? true : keyValuePairs.Count == 0); this.ViewModel.Carregando = false; if (!flag) { await this.ViewModel.ShowMessage(keyValuePairs, this.ViewModel.ErroCamposInvalidos, "OK", ""); } else { this.ToggleSnackBar("AGENDA SALVA COM SUCESSO", true); } } private void SnackbarMessage_ActionClick(object sender, RoutedEventArgs e) { this.Snackbar.set_IsActive(false); } [DebuggerNonUserCode] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("PresentationBuildTasks", "4.0.0.0")] void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: { this.ProgressBar = (System.Windows.Controls.ProgressBar)target; return; } case 2: { ((Button)target).Click += new RoutedEventHandler(this.Fechar_OnClick); return; } case 3: { ((AutoCompleteBox)target).add_Populating(new PopulatingEventHandler(this, AgendaDrawer.AutoCompleteBox_Populating)); ((AutoCompleteBox)target).add_TextChanged(new RoutedEventHandler(this.AutoCompleteBox_OnTextChanged)); return; } case 4: { this.AgendaGrid = (DataGrid)target; return; } case 5: { ((MenuItem)target).Click += new RoutedEventHandler(this.Incluir_OnClick); return; } case 6: { ((MenuItem)target).Click += new RoutedEventHandler(this.Alterar_OnClick); return; } case 7: { ((MenuItem)target).Click += new RoutedEventHandler(this.Salvar_OnClick); return; } case 8: { ((MenuItem)target).Click += new RoutedEventHandler(this.Cancelar_OnClick); return; } case 9: { ((MenuItem)target).Click += new RoutedEventHandler(this.Excluir_OnClick); return; } case 10: { this.MaisOpcoesButton = (MenuItem)target; return; } case 11: { ((MenuItem)target).Click += new RoutedEventHandler(this.AbrirLog_OnClick); return; } case 12: { this.NomeBox = (TextBox)target; return; } case 13: { this.CepBox = (TextBox)target; this.CepBox.LostFocus += new RoutedEventHandler(this.PostcodeBox_OnLostFocus); AgendaDrawer agendaDrawer = this; this.CepBox.PreviewTextInput += new TextCompositionEventHandler(agendaDrawer.SomenteNumeros); return; } case 14: { this.ProgressCep = (System.Windows.Controls.ProgressBar)target; return; } case 15: { this.EnderecoBox = (TextBox)target; return; } case 16: { this.BairroBox = (TextBox)target; return; } case 17: { this.CidadeBox = (TextBox)target; return; } case 18: { this.EstadoBox = (TextBox)target; return; } case 19: { this.ObsBox = (TextBox)target; return; } case 20: { ((MenuItem)target).Click += new RoutedEventHandler(this.IncluirTelefone_OnClick); return; } case 21: { this.TelefoneListBox = (ListBox)target; return; } case 22: case 23: case 24: case 25: case 26: case 27: case 30: case 31: { this._contentLoaded = true; return; } case 28: { ((MenuItem)target).Click += new RoutedEventHandler(this.IncluirEmail_OnClick); return; } case 29: { this.EmailListBox = (ListBox)target; return; } case 32: { this.Snackbar = (MaterialDesignThemes.Wpf.Snackbar)target; return; } case 33: { ((SnackbarMessage)target).add_ActionClick(new RoutedEventHandler(this.SnackbarMessage_ActionClick)); return; } default: { this._contentLoaded = true; return; } } } [DebuggerNonUserCode] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("PresentationBuildTasks", "4.0.0.0")] void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) { switch (connectionId) { case 22: { ((ComboBox)target).SelectionChanged += new SelectionChangedEventHandler(this.TipoComboBox_OnSelectionChanged); return; } case 23: { AgendaDrawer agendaDrawer = this; ((TextBox)target).PreviewTextInput += new TextCompositionEventHandler(agendaDrawer.SomenteNumeros); return; } case 24: { AgendaDrawer agendaDrawer1 = this; ((TextBox)target).LostFocus += new RoutedEventHandler(agendaDrawer1.FormatarTelefone); AgendaDrawer agendaDrawer2 = this; ((TextBox)target).PreviewTextInput += new TextCompositionEventHandler(agendaDrawer2.SomenteNumeros); return; } case 25: { ((Button)target).Click += new RoutedEventHandler(this.ExcluirTelefone_OnClick); return; } case 26: { ((Button)target).Click += new RoutedEventHandler(this.CopyTelefoneToClipBoard_Click); return; } case 27: { ((Button)target).Click += new RoutedEventHandler(this.WhatsAppMessage_Click); return; } case 28: case 29: { return; } case 30: { ((Button)target).Click += new RoutedEventHandler(this.ExcluirEmail_OnClick); return; } case 31: { ((Button)target).Click += new RoutedEventHandler(this.CopyEmailToClipBoard_Click); return; } default: { return; } } } private void TipoComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { int num; ComboBox comboBox = (ComboBox)sender; CustomIsReadOnlyControl customIsReadOnlyControl = Extentions.FindVisualAncestor(comboBox); if (customIsReadOnlyControl == null) { return; } WrapPanel wrapPanel = Extentions.FindVisualAncestor(customIsReadOnlyControl); ListBox listBox = Extentions.FindVisualAncestor(wrapPanel); ContentPresenter contentPresenter = FindVisualChild.Find((ListBoxItem)listBox.ItemContainerGenerator.ContainerFromIndex(listBox.Items.IndexOf(wrapPanel.DataContext))); DataTemplate contentTemplate = contentPresenter.ContentTemplate; CustomItemValidation customItemValidation = (CustomItemValidation)contentTemplate.FindName("Prefixo", contentPresenter); CustomItemValidation customItemValidation1 = (CustomItemValidation)contentTemplate.FindName("Telefone", contentPresenter); TextBox textBox = ViewHelper.FindChildren(customItemValidation).FirstOrDefault(); TextBox textBox1 = ViewHelper.FindChildren(customItemValidation1).FirstOrDefault(); if (textBox == null || textBox1 == null) { return; } if ((TipoTelefone)comboBox.SelectedValue == 8) { customItemValidation.Visibility = System.Windows.Visibility.Collapsed; textBox1.MaxLength = 20; return; } customItemValidation.Visibility = System.Windows.Visibility.Visible; textBox1.MaxLength = 10; num = (textBox1.Text.Length >= 10 ? 10 : textBox1.Text.Length); textBox1.Text = textBox1.Text.Substring(0, num); } public void ToggleSnackBar(string message, bool active = true) { this.Snackbar.get_Message().Content = message; this.Snackbar.set_IsActive(active); if (!active) { return; } Task.Factory.StartNew(new Action(this.CloseSlackBar)); } private async void WhatsAppMessage_Click(object sender, RoutedEventArgs e) { string str; Button button = (Button)sender; ListBox listBox = Extentions.FindVisualAncestor(button); TelefoneBase item = (TelefoneBase)listBox.Items[listBox.Items.IndexOf(button.DataContext)]; str = (!item.get_Tipo().HasValue || item.get_Tipo().GetValueOrDefault() != 8 ? string.Concat("55", item.get_Prefixo(), item.get_Numero().Clear()) : string.Concat(item.get_Prefixo(), item.get_Numero()).Clear()); if (!str.EnviarWhatsapp(null)) { await this.ViewModel.ShowMessage("HOUVE UM PROBLEMA AO ABRIR LINK DO WHATSAPP, O LINK FOI COPIADO EM SUA MAQUINA, BASTA ABRIR O NAVEGADOR DE INTERNET E COLAR NA BARRA DE ENDEREÇOS", "OK", "", false); } } } }