diff options
Diffstat (limited to 'Gestor.Application/Drawers/AgendaDrawer.cs')
| -rw-r--r-- | Gestor.Application/Drawers/AgendaDrawer.cs | 563 |
1 files changed, 563 insertions, 0 deletions
diff --git a/Gestor.Application/Drawers/AgendaDrawer.cs b/Gestor.Application/Drawers/AgendaDrawer.cs new file mode 100644 index 0000000..d60001d --- /dev/null +++ b/Gestor.Application/Drawers/AgendaDrawer.cs @@ -0,0 +1,563 @@ +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<List<Agenda>> 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<ListBox>(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<ListBox>(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<ListBox>(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<ListBox>(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<KeyValuePair<string, string>> 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<KeyValuePair<string, string>> 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<CustomIsReadOnlyControl>(comboBox);
+ if (customIsReadOnlyControl == null)
+ {
+ return;
+ }
+ WrapPanel wrapPanel = Extentions.FindVisualAncestor<WrapPanel>(customIsReadOnlyControl);
+ ListBox listBox = Extentions.FindVisualAncestor<ListBox>(wrapPanel);
+ ContentPresenter contentPresenter = FindVisualChild.Find<ContentPresenter>((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<TextBox>(customItemValidation).FirstOrDefault<TextBox>();
+ TextBox textBox1 = ViewHelper.FindChildren<TextBox>(customItemValidation1).FirstOrDefault<TextBox>();
+ 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<ListBox>(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);
+ }
+ }
+ }
+}
\ No newline at end of file |