private void gcUsuario_SelectedItemChanged(object sender, DevExpress.Xpf.Grid.SelectedItemChangedEventArgs e)
        {
            var usuFocado = gcUsuario.GetFocusedRow() as Usuario;

            BO_Perfil boPerfil = (BO_Perfil)FactoryBO <Perfil> .GetBO();

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

            boEmpresa.Attach(emp); //  Antes a empresas estava utiliazando para um endereço "new" automatico///////////////////////////////////////////////////////////////////////////////////////

            //Preenche o Grid control Usuario perfil de acordo com o usuario linha focada
            usuarioPerfis = new ObservableCollection <UsuarioPerfil>();
            usuarioPerfis = IconUtil.ConverterL2OC(boUsuarioPerfil.ObterListaObjetoUsuario(usuFocado));

            ObservableCollection <Perfil> listaPerfil = new ObservableCollection <Perfil>();

            if (usuarioPerfis != null)
            {
                foreach (var item in usuarioPerfis)
                {
                    listaPerfil.Add(boPerfil.ObterPerfil(item));
                }

                //gcPerfilEmpresa.ItemsSource = listaPerfil;
                perfis = listaPerfil;
            }

            int linhaFocada = tvUsuario.FocusedRowHandle;

            if (tvUsuario.AllowEditing && ultimaLinhaFocada != linhaFocada)
            {
                MessageBox.Show("Finalize a operação antes de mudar de linha!", "Operação inválida");
                tvUsuario.FocusedRowHandle = ultimaLinhaFocada;
            }
        }
        private void btnAddFuncionalidadePerfil_Click(object sender, RoutedEventArgs e)
        {
            frmTelaPrincipal.tabControlMenu.IsEnabled = false;

            BO_Funcionalidade boFuncionalidade = (BO_Funcionalidade)FactoryBO <Funcionalidade> .GetBO();

            gcPerfilFuncionalidade.Visibility      = Visibility.Collapsed;
            gcPerfilFuncionalidadeLista.Visibility = Visibility.Visible;

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

            tvEmpresa.IsEnabled   = false;
            tvPerfil.IsEnabled    = false;
            tvPerfil.AllowEditing = true;

            habilitarBotoes(false);

            var listaPerfilFuncionalidadeSelecionado = perfilFuncionalidades as ObservableCollection <PerfilFuncionalidade>;

            // Obter a Lista de todas as funcionalidades Cadastradas
            listaFuncionalidadesAtualizada = IconUtil.ConverterL2OC(boFuncionalidade.ObterListaObjeto());

            foreach (var itemFuncionalidade in listaFuncionalidadesAtualizada)
            {
                itemFuncionalidade.isSelecionado = false;

                foreach (var itemPerfilFuncionalidade in listaPerfilFuncionalidadeSelecionado)
                {
                    if (itemPerfilFuncionalidade.funcionalidade.id == itemFuncionalidade.id)
                    {
                        itemFuncionalidade.isSelecionado = true;
                    }
                }
            }

            gcPerfilFuncionalidadeLista.ItemsSource = listaFuncionalidadesAtualizada;
        }
        private void btnAddPerfil_Click(object sender, RoutedEventArgs e)
        {
            frmTelaPrincipal.tabControlMenu.IsEnabled = false;
            tvUsuario.IsEnabled       = false;
            tvPerfilEmpresa.IsEnabled = false; //tvUsuarioPerfil.IsEnabled = false;

            btnSalvar.Visibility = Visibility.Collapsed;
            btnSalvarUsuarioPerfil.Visibility = Visibility.Visible;

            lPGcPerfilFuncionalidades.Visibility = Visibility.Collapsed;
            lPGcPerfil.Visibility = Visibility.Visible;

            habilitarBotoes(false);

            //perfis = bo.daoPerfil.ObterListaObjeto();

            BO_Perfil boPerfil = (BO_Perfil)FactoryBO <Perfil> .GetBO();

            var listaUsuarioPerfis = usuarioPerfis as ObservableCollection <UsuarioPerfil>;

            // Obter a Lista de todas as funcionalidades Cadastradas
            listaPerfisAtualizada = IconUtil.ConverterL2OC(boPerfil.ObterListaObjeto());

            foreach (var itemPerfil in listaPerfisAtualizada)
            {
                itemPerfil.isSelecionado = false;

                foreach (var itemUsuarioPerfil in listaUsuarioPerfis)
                {
                    if (itemUsuarioPerfil.perfil.id == itemPerfil.id)
                    {
                        itemPerfil.isSelecionado = true;
                    }
                }
            }

            gcPerfil.ItemsSource = listaPerfisAtualizada;
        }
        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();
        }
        //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;
            }
        }