using Gestor.Application.Actions; using Gestor.Application.Helpers; using Gestor.Application.ViewModels.Drawer; using Gestor.Application.ViewModels.Generic; using Gestor.Application.Views.Generic; using Gestor.Common.Validation; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using MaterialDesignThemes.Wpf; using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; 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.Data; using System.Windows.Input; using System.Windows.Markup; using System.Windows.Threading; namespace Gestor.Application.Drawers { public class PermissaoUsuarioDrawer : BaseUserControl, IComponentConnector, IStyleConnector { public PermissaoUsuarioViewModel ViewModel; private bool _filtrado; internal System.Windows.Controls.ProgressBar ProgressBar; internal ToggleButton AtivoBox; internal ScrollViewer ScrollPermissoes; internal MenuItem DesativarPermissoes; internal MenuItem AtivarPermissoes; internal MenuItem MaisOpcoesButton; internal DataGrid SegurosGrid; internal DataGrid FerramentasGrid; internal DataGrid ArquivoDigitalGrid; internal MenuItem AtivarRestricoes; internal MenuItem DesativarRestricoes; internal DataGrid RestricoesBiGrid; internal DataGrid RestricoesSegurosGrid; internal DataGrid RestricoesRelatoriosGrid; internal DataGrid RestricoesCamposRelatoriosGrid; internal DataGrid RestricoesTotalizacoesRelatoriosGrid; internal DataGrid RestricoesFinanceiroGrid; internal DataGrid RestricoesFerramentasGrid; internal DataGrid RestricoesAjudaGrid; internal MaterialDesignThemes.Wpf.Snackbar Snackbar; private bool _contentLoaded; public PermissaoUsuarioDrawer(Usuario usuario) { this.ViewModel = new PermissaoUsuarioViewModel(usuario); base.DataContext = this.ViewModel; this.InitializeComponent(); Gestor.Application.Actions.Actions.OcultarTogglesSeguros = (Action)Delegate.Combine(Gestor.Application.Actions.Actions.OcultarTogglesSeguros, new Action(this.OcultarTogglesSeguros)); Gestor.Application.Actions.Actions.OcultarTogglesFerramentas = (Action)Delegate.Combine(Gestor.Application.Actions.Actions.OcultarTogglesFerramentas, new Action(this.OcultarTogglesFerramentas)); Gestor.Application.Actions.Actions.OcultarTogglesArquivoDigital = (Action)Delegate.Combine(Gestor.Application.Actions.Actions.OcultarTogglesArquivoDigital, new Action(PermissaoUsuarioDrawer.OcultarTogglesArquivoDigital)); } private async Task AbrirCopiarPermiss() { Tuple, Usuario, List, List, List> tuple; do { tuple = await this.ViewModel.ShowCopiarPermissaoDialog(); if (tuple != null) { continue; } return; } while (!this.ViewModel.CopiarPermissoes(tuple)); this.SegurosGrid.Items.Refresh(); this.FerramentasGrid.Items.Refresh(); this.ArquivoDigitalGrid.Items.Refresh(); this.RestricoesBiGrid.Items.Refresh(); this.RestricoesSegurosGrid.Items.Refresh(); this.RestricoesFinanceiroGrid.Items.Refresh(); this.RestricoesFerramentasGrid.Items.Refresh(); this.RestricoesRelatoriosGrid.Items.Refresh(); this.RestricoesTotalizacoesRelatoriosGrid.Items.Refresh(); this.RestricoesCamposRelatoriosGrid.Items.Refresh(); this.FerramentasGrid.EsconderToggles(18, TipoToggle.Incluir | TipoToggle.Excluir); this.FerramentasGrid.EsconderToggles(10, TipoToggle.Excluir); this.FerramentasGrid.EsconderToggles(12, TipoToggle.Incluir | TipoToggle.Excluir); this.FerramentasGrid.EsconderToggles(13, TipoToggle.Incluir | TipoToggle.Excluir); this.SegurosGrid.EsconderToggles(21, TipoToggle.Incluir | TipoToggle.Alterar | TipoToggle.Excluir); this.SegurosGrid.EsconderToggles(5, TipoToggle.Consultar); } private async Task AbrirExportarPermiss() { bool flag; do { List usuarios = await this.ViewModel.ShowExportarPermissaoDialog(this.ViewModel.SelectedUsuario.get_Id()); if (usuarios != null) { this.ViewModel.Carregando = true; flag = await this.ViewModel.ExportarPermissoes(usuarios); this.ViewModel.Carregando = false; } else { return; } } while (!flag); this.ToggleSnackBar("PERMISSÕES/RESTRIÇÕES EXPORTADAS COM SUCESSO.", true); } private void AbrirLogPermissoes_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.AbrirLog(43, this.ViewModel.SelectedUsuario.get_Id()); } private void AtivarDesativarPermissoes_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.AtivarDesativarPermissoes(this.ViewModel.AtivarDesativarPermissoesBool); } private void AtivarDesativarRestricoes_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.AtivarDesativarRestricoes(this.ViewModel.AtivarDesativarRestricoesBool); } private void AutoCompleteBox_OnTextChanged(object sender, RoutedEventArgs e) { if (((AutoCompleteBox)sender).get_Text().Length >= 3 || !this._filtrado) { return; } this._filtrado = false; this.ViewModel.FiltrarRestricoesBis(""); this.ViewModel.FiltrarRestricoesSeguros(""); this.ViewModel.FiltrarRestricoesRelatorios(""); this.ViewModel.FiltrarRestricoesTotalizacoesRelatorios(""); this.ViewModel.FiltrarRestricoesCamposRelatorios(""); this.ViewModel.FiltrarRestricoesFinanceiros(""); this.ViewModel.FiltrarRestricoesFerramentas(""); this.ViewModel.FiltrarRestricoesAjudas(""); } private void AutoCompleteBox_Populating(object sender, PopulatingEventArgs e) { if (e.get_Parameter().Length < 3) { return; } this._filtrado = true; e.set_Cancel(true); this.ViewModel.FiltrarRestricoesBi(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesSeguro(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesRelatorio(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesTotalizacoesRelatorio(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesCamposRelatorio(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesFinanceiro(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesFerramenta(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); this.ViewModel.FiltrarRestricoesAjuda(ValidationHelper.RemoveDiacritics(e.get_Parameter().Trim())).ContinueWith((Task> searchResult) => ((AutoCompleteBox)sender).PopulateComplete(), TaskScheduler.FromCurrentSynchronizationContext()); } 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 async void CopiarUsuario_OnClick(object sender, RoutedEventArgs e) { await this.AbrirCopiarPermiss(); } private async void ExportarUsuario_OnClick(object sender, RoutedEventArgs e) { await this.AbrirExportarPermiss(); } private void Fechar_OnClick(object sender, RoutedEventArgs e) { Action atualizaUsuario = Gestor.Application.Actions.Actions.AtualizaUsuario; if (atualizaUsuario != null) { atualizaUsuario(); } else { } this.ViewModel.CloseDrawer(); } [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/permissaousuariodrawer.xaml", UriKind.Relative)); } private static void OcultarTogglesArquivoDigital() { } private void OcultarTogglesFerramentas() { this.FerramentasGrid.EsconderToggles(18, TipoToggle.Incluir | TipoToggle.Excluir); this.FerramentasGrid.EsconderToggles(10, TipoToggle.Excluir); this.FerramentasGrid.EsconderToggles(12, TipoToggle.Incluir | TipoToggle.Excluir); this.FerramentasGrid.EsconderToggles(13, TipoToggle.Excluir); } private void OcultarTogglesSeguros() { this.SegurosGrid.EsconderToggles(21, TipoToggle.Incluir | TipoToggle.Alterar | TipoToggle.Excluir); this.SegurosGrid.EsconderToggles(5, TipoToggle.Consultar); } private void PermissoesGrid_OnPreviewMouseWheel(object sender, MouseWheelEventArgs e) { this.ScrollPermissoes.ScrollToVerticalOffset(this.ScrollPermissoes.VerticalOffset - (double)e.Delta); } private async void SalvarPermissoes_OnClick(object sender, RoutedEventArgs e) { this.ViewModel.Carregando = true; if (await this.ViewModel.Salvar(null, true)) { this.ToggleSnackBar("PERMISSÕES/RESTRIÇÕES SALVAS COM SUCESSO.", true); } this.ViewModel.Carregando = false; } 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: { this.AtivoBox = (ToggleButton)target; return; } case 4: { this.ScrollPermissoes = (ScrollViewer)target; return; } case 5: { this.DesativarPermissoes = (MenuItem)target; this.DesativarPermissoes.Click += new RoutedEventHandler(this.AtivarDesativarPermissoes_OnClick); return; } case 6: { this.AtivarPermissoes = (MenuItem)target; this.AtivarPermissoes.Click += new RoutedEventHandler(this.AtivarDesativarPermissoes_OnClick); return; } case 7: { this.MaisOpcoesButton = (MenuItem)target; return; } case 8: { ((MenuItem)target).Click += new RoutedEventHandler(this.AbrirLogPermissoes_OnClick); return; } case 9: { this.SegurosGrid = (DataGrid)target; this.SegurosGrid.PreviewMouseWheel += new MouseWheelEventHandler(this.PermissoesGrid_OnPreviewMouseWheel); return; } case 10: case 11: case 12: case 13: case 15: case 16: case 17: case 18: case 20: case 21: case 22: { this._contentLoaded = true; return; } case 14: { this.FerramentasGrid = (DataGrid)target; this.FerramentasGrid.PreviewMouseWheel += new MouseWheelEventHandler(this.PermissoesGrid_OnPreviewMouseWheel); return; } case 19: { this.ArquivoDigitalGrid = (DataGrid)target; this.ArquivoDigitalGrid.PreviewMouseWheel += new MouseWheelEventHandler(this.PermissoesGrid_OnPreviewMouseWheel); return; } case 23: { ((AutoCompleteBox)target).add_Populating(new PopulatingEventHandler(this, PermissaoUsuarioDrawer.AutoCompleteBox_Populating)); ((AutoCompleteBox)target).add_TextChanged(new RoutedEventHandler(this.AutoCompleteBox_OnTextChanged)); return; } case 24: { this.AtivarRestricoes = (MenuItem)target; this.AtivarRestricoes.Click += new RoutedEventHandler(this.AtivarDesativarRestricoes_OnClick); return; } case 25: { this.DesativarRestricoes = (MenuItem)target; this.DesativarRestricoes.Click += new RoutedEventHandler(this.AtivarDesativarRestricoes_OnClick); return; } case 26: { this.RestricoesBiGrid = (DataGrid)target; return; } case 27: { this.RestricoesSegurosGrid = (DataGrid)target; return; } case 28: { this.RestricoesRelatoriosGrid = (DataGrid)target; return; } case 29: { this.RestricoesCamposRelatoriosGrid = (DataGrid)target; this.RestricoesCamposRelatoriosGrid.PreviewMouseWheel += new MouseWheelEventHandler(this.PermissoesGrid_OnPreviewMouseWheel); return; } case 30: { this.RestricoesTotalizacoesRelatoriosGrid = (DataGrid)target; return; } case 31: { this.RestricoesFinanceiroGrid = (DataGrid)target; return; } case 32: { this.RestricoesFerramentasGrid = (DataGrid)target; return; } case 33: { this.RestricoesAjudaGrid = (DataGrid)target; return; } case 34: { this.Snackbar = (MaterialDesignThemes.Wpf.Snackbar)target; return; } case 35: { ((SnackbarMessage)target).add_ActionClick(new RoutedEventHandler(this.SnackbarMessage_ActionClick)); return; } case 36: { ((MenuItem)target).Click += new RoutedEventHandler(this.SalvarPermissoes_OnClick); return; } case 37: { ((MenuItem)target).Click += new RoutedEventHandler(this.CopiarUsuario_OnClick); return; } case 38: { ((MenuItem)target).Click += new RoutedEventHandler(this.ExportarUsuario_OnClick); 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) { EventSetter eventSetter; switch (connectionId) { case 10: { eventSetter = new EventSetter() { Event = ToggleButton.UncheckedEvent, Handler = new RoutedEventHandler(this.UnToggleSeguros_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 11: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleSeguros_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 12: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleSeguros_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 13: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleSeguros_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 14: case 19: { return; } case 15: { eventSetter = new EventSetter() { Event = ToggleButton.UncheckedEvent, Handler = new RoutedEventHandler(this.UnToggleFerramentas_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 16: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleFerramentas_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 17: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleFerramentas_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 18: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleFerramentas_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 20: { eventSetter = new EventSetter() { Event = ToggleButton.UncheckedEvent, Handler = new RoutedEventHandler(this.UnToggleArquivosDigitais_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 21: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleArquivosDigitais_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } case 22: { eventSetter = new EventSetter() { Event = ToggleButton.CheckedEvent, Handler = new RoutedEventHandler(this.ToggleArquivosDigitais_OnChecked) }; ((System.Windows.Style)target).Setters.Add(eventSetter); return; } default: { return; } } } private void ToggleArquivosDigitais_OnChecked(object sender, RoutedEventArgs e) { if (!this.ViewModel.Carregado) { return; } DataGridCell dataGridCell = (DataGridCell)sender; if (dataGridCell == null) { return; } this.ViewModel.HabilitarArquivoDigital((PermissaoArquivoDigital)dataGridCell.DataContext); } private void ToggleFerramentas_OnChecked(object sender, RoutedEventArgs e) { if (!this.ViewModel.Carregado) { return; } DataGridCell dataGridCell = (DataGridCell)sender; if (dataGridCell == null) { return; } this.ViewModel.HabilitarConsulta((PermissaoUsuario)dataGridCell.DataContext, "Ferramentas"); } private void ToggleSeguros_OnChecked(object sender, RoutedEventArgs e) { if (!this.ViewModel.Carregado) { return; } DataGridCell dataGridCell = (DataGridCell)sender; if (dataGridCell == null) { return; } this.ViewModel.HabilitarConsulta((PermissaoUsuario)dataGridCell.DataContext, "Seguros"); } 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 void UnToggleArquivosDigitais_OnChecked(object sender, RoutedEventArgs e) { if (!this.ViewModel.Carregado) { return; } DataGridCell dataGridCell = (DataGridCell)sender; if (dataGridCell == null) { return; } this.ViewModel.DesabilitarArquivoDigital((PermissaoArquivoDigital)dataGridCell.DataContext); } private void UnToggleFerramentas_OnChecked(object sender, RoutedEventArgs e) { if (!this.ViewModel.Carregado) { return; } DataGridCell dataGridCell = (DataGridCell)sender; if (dataGridCell == null) { return; } this.ViewModel.DesabilitarConsulta((PermissaoUsuario)dataGridCell.DataContext, "Ferramentas"); } private void UnToggleSeguros_OnChecked(object sender, RoutedEventArgs e) { if (!this.ViewModel.Carregado) { return; } DataGridCell dataGridCell = (DataGridCell)sender; if (dataGridCell == null) { return; } this.ViewModel.DesabilitarConsulta((PermissaoUsuario)dataGridCell.DataContext, "Seguros"); } } }