//Quando o foco da linha do GridPerfil é trocado
        private void gcPerfil_SelectedItemChanged(object sender, DevExpress.Xpf.Grid.SelectedItemChangedEventArgs e)
        {
            BO_PerfilFuncionalidade boPerfilFuncionalidade = (BO_PerfilFuncionalidade)FactoryBO <PerfilFuncionalidade> .GetBO();

            int linhaFocada = tvPerfil.FocusedRowHandle;

            if (tvPerfil.AllowEditing && ultimaLinhaFocada != linhaFocada)
            {
                MessageBox.Show("Finalize a operação antes de mudar de linha!", "Operação inválida");
                tvPerfil.FocusedRowHandle = ultimaLinhaFocada;
            }

            var per = gcPerfil.GetFocusedRow() as Perfil;

            if (per != null && perfis.Count != 0)
            {
                perfilFuncionalidades = new ObservableCollection <PerfilFuncionalidade>();
                perfilFuncionalidades = IconUtil.ConverterL2OC(boPerfilFuncionalidade.ObterListaFuncinalidadedoPerfilSelecionado(per));
                btnAddFuncionalidadePerfil.IsEnabled = true;
            }
            else
            {
                perfilFuncionalidades = null;
                btnAddFuncionalidadePerfil.IsEnabled = false;
            }
        }
        public DominioSeguranca()
        {
            dbContext = EFDBContext.Instance;
            boUsuario = (BO_Usuario)FactoryBO <Usuario> .GetBO();

            boEmpresa = (BO_Empresa)FactoryBO <Empresa> .GetBO();

            boUsuarioPerfil = (BO_UsuarioPerfil)FactoryBO <UsuarioPerfil> .GetBO();

            boPerfilFuncionalidade = (BO_PerfilFuncionalidade)FactoryBO <PerfilFuncionalidade> .GetBO();

            boPerfil = (BO_Perfil)FactoryBO <Perfil> .GetBO();
        }
        private void gcPerfilEmpresa_SelectedItemChanged(object sender, DevExpress.Xpf.Grid.SelectedItemChangedEventArgs e)
        {
            BO_PerfilFuncionalidade boPerfilFuncionalidade = (BO_PerfilFuncionalidade)FactoryBO <PerfilFuncionalidade> .GetBO();

            var per = gcPerfilEmpresa.GetFocusedRow() as Perfil;

            if (per != null && perfis.Count != 0)
            {
                perfilFuncionalidades = new ObservableCollection <PerfilFuncionalidade>();
                perfilFuncionalidades = IconUtil.ConverterL2OC(boPerfilFuncionalidade.ObterListaFuncinalidadedoPerfilSelecionado(per));
            }
            else
            {
                perfilFuncionalidades = null;
            }
        }
        private void btnSalvarFuncionalidadePerfil_Click(object sender, RoutedEventArgs e)
        {
            BO_PerfilFuncionalidade boPerfilFuncionalidade = (BO_PerfilFuncionalidade)FactoryBO <PerfilFuncionalidade> .GetBO();

            btnSalvar.Visibility       = Visibility.Visible;
            btnSalvarPerfil.Visibility = Visibility.Visible;
            btnSalvarFuncionalidadePerfil.Visibility = Visibility.Collapsed;

            var listaPerfilFuncionalidadeSelecionado = perfilFuncionalidades as ObservableCollection <PerfilFuncionalidade>;

            bool exc;

            for (int i = 0; i < listaFuncionalidadesAtualizada.Count; i++)
            {
                exc = false;
                for (int l = 0; l < listaPerfilFuncionalidadeSelecionado.Count; l++)
                {
                    if (!listaFuncionalidadesAtualizada[i].isSelecionado && listaFuncionalidadesAtualizada[i].id == listaPerfilFuncionalidadeSelecionado[l].funcionalidade.id)
                    {
                        boPerfilFuncionalidade.Excluir(listaPerfilFuncionalidadeSelecionado[l]);
                        listaPerfilFuncionalidadeSelecionado.Remove(listaPerfilFuncionalidadeSelecionado[l]);
                        exc = true;
                    }
                    else if (listaFuncionalidadesAtualizada[i].isSelecionado && listaFuncionalidadesAtualizada[i].id == listaPerfilFuncionalidadeSelecionado[l].funcionalidade.id)
                    {
                        exc = true;
                    }
                }

                if (listaFuncionalidadesAtualizada[i].isSelecionado && exc == false)
                {
                    PerfilFuncionalidade pf = new PerfilFuncionalidade();
                    pf.funcionalidade = listaFuncionalidadesAtualizada[i];
                    pf.perfil         = gcPerfil.GetFocusedRow() as Perfil;
                    boPerfilFuncionalidade.InserirOuAlterar(pf);
                }
            }

            boPerfilFuncionalidade.SaveChanges();
            doConsultar();
        }