none
Pegar acesso por grupo em uma treeview RRS feed

  • Pergunta

  • Pessoal tenho em 2 telas de cesso (por grupo e por usuário) atualemnte eu fço este acesso por usuário, mais agora preciso que tenha opção de passar por rup tipo na tela de cadastro do usuário tenho um combobox onde pego o grupo e ai numa treeview passo os acessos para este usuário de acorodo com o grupo.

    Minha função de ler o acesso por usuário ja esta pronta e funcionando agora preciso ler  as informações da tabela acesso_grupo e comparar com acessp_usuario e ai de acorodo com que tenho deixo um icone na treeview diferente quando peguei o acesso via grupo ou usuário, estou apagando um pouco para fazer isso abaixo segue os códigos .

    Alguém tem algum help pra me ajudar?

    Tela d eaceso para usuário:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using IASD.SGT.BusinessLogic;
    using IASD.SGT.BusinessObject;
    using IASD.Core.Forms;
    using IASD.Core.Util;
    
    namespace IASD.SGT.WindowsApp
    {
      public partial class frmUsuario: Form
      {
        bool init = false;
        List<AcessoUsuario> listTreeUsuario; 
        List<Acesso> listTree;
        SortableBindingList<Usuario> list;
        List<VerbaUsuario> listVerbaUsuario;
        List<Bonus> listBonus;
        List<Entidade> listaEntidadeUsuario;
    
        string ValorCodigoAnterior;
    
        public frmUsuario()
        {
          InitializeComponent();
        }
    
        private void Usuario_Load(object sender, EventArgs e)
        {      
          cboGrupoUsuario.DataSource = UsuarioGrupoManeger.LerLista();
          cboEntidade.DataSource = EntidadeManeger.LerLista();
          cboEscola.DataSource = EscolasManager.LerLista();
          CarregaGrid();
          montarTree();      
          trvAcesso.ExpandAll();
          ControleForms.LimparTudo(this);
          init = true;
          AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelGeral, panelAcesso, panelVerba, panelBonus);
        }
    
        #region Dados Gerais
        private void CarregaGrid()
        {
          list = UsuarioManeger.LerListaUsuarioEntidadeCompleto(frmLogin.EntidadeAtual.Codigo);
    
          dgvDados.AutoGenerateColumns = false;
          dgvDados.DataSource = list;
          cboCodigo.DataSource = list;
          
        }
    
        private void cboCodigo_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (init)
          {
            init_verba = false;
            limparTree(trvAcesso.Nodes);
            panelVerba.Enabled = false;
            panelAcesso.Enabled = false;
            panelBonus.Enabled = false;
            UsuarioManeger.TravarDestravarRegistro(ValorCodigoAnterior, false);
            lblNomeUsuario.Text = "";
            if (cboCodigo.SelectedValue != null)
            {
              try
              {
                panelVerba.Enabled = true;
                panelAcesso.Enabled = true;
                panelBonus.Enabled = true;
                UsuarioManeger.TravarDestravarRegistro(((Usuario)cboCodigo.SelectedItem).Id_Usuario.ToString(), true);
                PreencherCampos((Usuario)cboCodigo.SelectedItem);
                montarTreeUsuario((Usuario)cboCodigo.SelectedItem);
                CarregaDadosVerbaUsuario();
                CarregaDadosBonus();
                CarregaDadosEntidade();
                ControleForms.Limpar(panelVerba);
                ControleForms.Limpar(panelBonus);
                cboCodigo.Text = cboCodigo.SelectedValue.ToString();
                ValorCodigoAnterior = ((Usuario)cboCodigo.SelectedItem).Id_Usuario.ToString();//cboCodigo.SelectedValue.ToString();
                lblNomeUsuario.Text = cboNome.Text;
              }
              catch (Exception ex)
              {
                ControleForms.LimparTudo(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigo.Text))
            {
              cboCodigo.SelectedValue = cboCodigo.Text;
              if (cboCodigo.SelectedValue == null)
                ControleForms.LimparTudo(this);
            }
            AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelGeral, panelAcesso, panelVerba, panelBonus);
    
          }
        }
    
        private void butNovo_Click(object sender, EventArgs e)
        {
          cboNome.DisplayMember = "Nome";
          cboNome.ValueMember = "Codigo";
          cboNome.DataSource = UsuarioManeger.LerListaFuncionario(frmLogin.EntidadeAtual.Codigo);
    
          ControleForms.LimparTudo(this);
          
          butCancelar.Enabled = true;
          butNovo.Enabled = false;
          butExcluir.Enabled = false;
          cboCodigo.Enabled = false;
          dgvDados.Enabled = false;
    
          cboNome.Enabled = true;      
    
          txtSenha.Enabled = true;
          txtSenha_Confirma.Enabled = true;
          ckbTrocarSenha.Enabled = true;
    
          butResetSenha.Enabled = false;
    
          dgvVerba.DataSource = null;
    
          tbUsuario.SelectedTab = tabGeral;
          cboNome.Focus();
        }
    
        private void butCancelar_Click(object sender, EventArgs e)
        {
          ControleForms.LimparTudo(this);
    
          dgvDados.Enabled = true;
          butCancelar.Enabled = false;
          butExcluir.Enabled = true;
          butNovo.Enabled = true;
          cboCodigo.Enabled = true;
    
          butResetSenha.Enabled = true;
    
          cboNome.Enabled = false;
    
          txtSenha.Enabled = false;
          txtSenha_Confirma.Enabled = false;
          ckbTrocarSenha.Enabled = false;
    
          cboCodigo.Focus();
    
          cboNome.DataSource = null;
        }
    
        private void PreencherCampos(Usuario obj)
        {
          cboCodigo.SelectedValue = obj.Codigo;
          cboGrupoUsuario.SelectedValue = obj.Id_Usuario_Grupo;
          txtE_mail.Text = obj.E_mail;
          txtE_mail_alternativo.Text = obj.E_mail_Alternativo;
          txtEntidade.Text = obj.Entidade;
          txtCodigoAPS.Text = obj.Codigo;
          txtCPF.Text = obj.Cpf;
          cboNome.Text = obj.Nome;
          txtData_Nasc.Text = obj.Data_Nascimento.ToString("dd/MM/yyyy");
          txtEstado_Civil.Text = obj.Estado_civil;
          txtFuncao.Text = obj.Funcao;
          txtSexo.Text = obj.Sexo;
          txtOrcamentoViagem.Text = "";
          if (obj.Orcamento_Viagem != null)
            txtOrcamentoViagem.Text = obj.Orcamento_Viagem.Value.ToString("N");
          ckbAdministrador.Checked = obj.Sta_Administrador;
          cboEscola.SelectedIndex = -1;
          if (obj.Id_Escola != null)
            cboEscola.SelectedValue = obj.Id_Escola.Value;
        }
    
        private void PreencherObjeto(Usuario obj)
        {
          obj.Id_Usuario_Grupo = Convert.ToInt16(cboGrupoUsuario.SelectedValue);
          obj.Senha = txtSenha.Text;
          obj.E_mail = txtE_mail.Text;
          obj.E_mail_Alternativo = txtE_mail_alternativo.Text;
          obj.Cpf = txtCPF.Text;      
          obj.Orcamento_Viagem = null;
          if (!txtOrcamentoViagem.Text.Equals(""))
            obj.Orcamento_Viagem = Convert.ToDecimal(txtOrcamentoViagem.Text);
          obj.Sta_Senha = ckbTrocarSenha.Checked;
          obj.Sta_Administrador = ckbAdministrador.Checked;
          obj.Id_Escola = null;
          if (cboEscola.SelectedValue != null)
            obj.Id_Escola = int.Parse(cboEscola.SelectedValue.ToString());
        }
    
        private void butGravar_Click(object sender, EventArgs e)
        {
          Usuario obj = new Usuario();
          string codigoAPS = txtCodigoAPS.Text;
          try
          {
            if ((cboCodigo.Enabled) && (cboCodigo.SelectedValue != null))
              obj = (Usuario)cboCodigo.SelectedItem;
            else
              Validadores.ValidarSenha(txtSenha.Text, txtSenha_Confirma.Text, 4);
    
            Validadores.ValidarEmail(txtE_mail.Text);
            Validadores.ValidarEmail(txtE_mail_alternativo.Text);
    
            PreencherObjeto(obj);
    
            UsuarioManeger.Gravar(obj);
    
            butCancelar_Click(sender, e);
            init = false;
            CarregaGrid();
            init = true;
            cboCodigo.SelectedValue = codigoAPS;
            //ControleForms.LimparTudo(this);                      
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
          
        }
    
        private void butExcluir_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            try
            {
              DialogResult res = MessageBox.Show("Confirma a exclusão do registro?", "Confirmação de Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
              if (res == DialogResult.Yes)
              {
                UsuarioManeger.Excluir((Usuario)cboCodigo.SelectedItem);
                CarregaGrid();
                ControleForms.LimparTudo(this);
                cboCodigo.Focus();
              }
              
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
          
          }
        }
    
        private void cboCodigo_Enter(object sender, EventArgs e)
        {
          UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void frmUsuario_KeyPress(object sender, KeyPressEventArgs e)
        {
          if (e.KeyChar == 13)
          {
            e.Handled = true;
            SendKeys.Send("{tab}");
          }
        }
    
        private void frmUsuario_FormClosed(object sender, FormClosedEventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
            UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void cboNome_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (cboNome.SelectedValue != null)
            PreencherCampos((Usuario)cboNome.SelectedItem);
          else if (ControleNumeros.IsInt(cboNome.Text))
          {
            cboNome.SelectedValue = cboNome.Text;
          }
    
        }
    
        private void butResetSenha_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            frmTrocarSenha frm = new frmTrocarSenha((Usuario)cboCodigo.SelectedItem);
            frm.ShowDialog(this);
          }
        }
    
        private void txtOrcamentoViagem_Leave(object sender, EventArgs e)
        {
          txtOrcamentoViagem.Text = ControleNumeros.FormatarNumero(txtOrcamentoViagem.Text);
        }
    
        #endregion 
    
        #region Acesso Usuário
        private void montarTree()
        {
          listTree = AcessoManeger.LerListaTreeView();
          montarTree(-1, null);
        }
    
        private void montarTree(short IdAcessoSuperior, TreeNode superiorNode)
        {   
          List<Acesso> nList;
    
          if(IdAcessoSuperior < 1)
             nList = listTree.FindAll(p => p.Id_Acesso_Superior == -1);
          else
             nList = listTree.FindAll(p => p.Id_Acesso_Superior == IdAcessoSuperior);
    
          foreach (Acesso obj in nList)
          {
            TreeNode novoNode;
    
            if ((IdAcessoSuperior < 1) && (superiorNode == null))
              novoNode = trvAcesso.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
            else
              novoNode = superiorNode.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
    
            novoNode.Name = obj.Id_Acesso.ToString();
            montarTree(obj.Id_Acesso, novoNode);
          }
    
        }
    
        private void montarTreeUsuario(Usuario vUsuario)
        {
          listTreeUsuario = AcessoUsuarioManeger.LerLista(vUsuario);
          montarTreeUsuarioPrivilegio(trvAcesso.Nodes);
        }
    
        private void montarTreeUsuarioPrivilegio(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            AcessoUsuario acessUsuario = listTreeUsuario.Find(p => p.Id_Acesso == short.Parse(tn.Name));
            if (acessUsuario != null)
            {
              tn.ImageIndex = acessUsuario.Privilegio;
              tn.SelectedImageIndex = acessUsuario.Privilegio;
            }
    
            if (tn.Nodes.Count > 0)
              montarTreeUsuarioPrivilegio(tn.Nodes);
          }
        }
    
        private void limparTree(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            tn.ImageIndex = 2;
            tn.SelectedImageIndex = 2;
    
            if (tn.Nodes.Count > 0)
              limparTree(tn.Nodes);
          }
        }
        private List<AcessoUsuario> capturarAcessoTree(TreeNodeCollection vNode, List<AcessoUsuario> vList)
        {
          foreach (TreeNode tn in vNode)
          {
            if (tn.ImageIndex != 2)
            {
              AcessoUsuario obj = new AcessoUsuario();
    
              obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
              obj.Id_Acesso = short.Parse(tn.Name);
              obj.Privilegio = (short)tn.ImageIndex;
    
              vList.Add(obj); 
            }
    
            if (tn.Nodes.Count > 0)
              capturarAcessoTree(tn.Nodes, vList);
          }
    
          return vList;
        }
    
        private void toolAcessoTotal_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 1);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
        private void toolSomenteLeitura_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 0);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
        private void toolBloquear_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 2);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
    
        private void preencherNodes(TreeNode Node, int nivel)
        {
    
          if ((nivel == 0) && (Node.Nodes.Count > 0))
            Node.ImageIndex = 1;
          else
            Node.ImageIndex = nivel;
    
          Node.SelectedImageIndex = Node.ImageIndex;
    
          if (Node.Nodes.Count > 0)
            foreach (TreeNode tn in Node.Nodes)
              preencherNodes(tn, nivel);          
          
        }
        private void preencherNodesParent(TreeNode Node, int nivel)
        { 
          if (Node.Parent != null)
          {
            if (nivel == 0)
              Node.Parent.ImageIndex = 1;
            else
              Node.Parent.ImageIndex = nivel;
    
            Node.Parent.SelectedImageIndex = Node.Parent.ImageIndex;
    
            if (Node.Parent.Parent != null)
              preencherNodesParent(Node.Parent, nivel);
          }
        }
    
        private void toolGravarAcesso_Click(object sender, EventArgs e)
        {
          try
          {
            AcessoUsuarioManeger.Gravar(capturarAcessoTree(trvAcesso.Nodes, new List<AcessoUsuario>()));
            MessageBox.Show("Alteração efetuada com Sucesso!", "Gravar Acesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
          }
          catch (Exception ex)
          {
            ControleForms.LimparTudo(this);
            TratarErro.AnalizarErro(ex);
          }
        }
    
        #endregion 
    
        #region Verba Usuário
    
        bool init_verba = false;
    
        private void CarregaDadosVerbaUsuario()
        {
          init_verba = false;
    
          listVerbaUsuario = VerbaUsuarioManeger.LerLista(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          cboCodigoVerbaUsuario.DataSource = listVerbaUsuario;
          dgvVerba.AutoGenerateColumns = false;
          dgvVerba.DataSource = listVerbaUsuario;
    
          cboVerba.DataSource = VerbaManeger.LerListaVerbaAtivaUsuario(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          init_verba = true;
        }
        
        private void cboCodigoVerbaUsuario_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (init_verba)
          {
            if (cboCodigoVerbaUsuario.SelectedValue != null)
            {
              try
              {
                if (listVerbaUsuario.Find(p => p.Id_Verba_Vinculada == ((Verba)cboCodigoVerbaUsuario.SelectedItem).Id_Verba && p.Vinculo_Complementar == true) != null)
                {
                  ControleForms.Limpar(panelVerba);
                  throw new Exception("Verba complementar! Não pode ser editada!");
                }
    
                HabilitaLimitePercentual((Verba)cboCodigoVerbaUsuario.SelectedItem);
                PreencherCamposVerba((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem);
                cboCodigoVerbaUsuario.Text = cboCodigoVerbaUsuario.SelectedValue.ToString();
              }
              catch (Exception ex)
              {
                ControleForms.Limpar(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigoVerbaUsuario.Text))
            {
              cboCodigoVerbaUsuario.SelectedValue = Convert.ToInt16(cboCodigoVerbaUsuario.Text);
              if (cboCodigoVerbaUsuario.SelectedValue == null)
                ControleForms.Limpar(this);
            }
          }
        }
    
        private void PreencherCamposVerba(VerbaUsuario obj)
        {
          cboCodigoVerbaUsuario.SelectedValue = obj.Id_Verba;
          cboVerba.Text = obj.Desc_Verba;
          dtpDataValidade.Value = obj.Data_Validade;
          txtPercentual.Text = obj.Percentual.ToString();
          ckbVerbaAnual.Checked = obj.Anual;
          ckbVerbaMensal.Checked = obj.Mensal;
          txtLimite.Text = "";
          if(obj.Limite != null)
           txtLimite.Text = obj.Limite.Value.ToString("N");
        }
    
        private void PreencherObjetoVerba(VerbaUsuario obj)
        {
          obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
          short Id_Tipo_Relatorio;
          if (cboVerba.SelectedValue != null)
          {
            obj.Id_Verba = ((Verba)cboVerba.SelectedItem).Id_Verba;
            Id_Tipo_Relatorio = ((Verba)cboVerba.SelectedItem).Id_Tipo_Relatorio;
          }
          else
          {
            obj.Id_Verba = ((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem).Id_Verba;
            Id_Tipo_Relatorio = ((Verba)cboCodigoVerbaUsuario.SelectedItem).Id_Tipo_Relatorio;
          }
          if (!txtLimite.Text.Equals(""))
            obj.Limite = Convert.ToDecimal(txtLimite.Text);
          else if ((txtLimite.Text.Equals("")) && (Id_Tipo_Relatorio != 40))
            throw new ApplicationException("Preencha o campo 'Limite'!");
          
          obj.Percentual = Convert.ToInt16(txtPercentual.Text);
          obj.Data_Validade = dtpDataValidade.Value.Date;
        }
    
        private void cboVerba_SelectedIndexChanged(object sender, EventArgs e)
        {
          txtLimite.Text = "";
    
          if ((!cboCodigoVerbaUsuario.Enabled) && (cboVerba.SelectedValue != null))
          {
            txtPercentual.Text = ((Verba)cboVerba.SelectedItem).Percentual.ToString();
            ckbVerbaAnual.Checked = ((Verba)cboVerba.SelectedItem).Anual;
            ckbVerbaMensal.Checked = ((Verba)cboVerba.SelectedItem).Mensal;
    
            if(((Verba)cboVerba.SelectedItem).Limite != null)
              txtLimite.Text = ((Verba)cboVerba.SelectedItem).Limite.Value.ToString("N2");
          }
    
          if (cboVerba.SelectedValue != null)
            HabilitaLimitePercentual((Verba)cboVerba.SelectedItem);
        }
    
        private void HabilitaLimitePercentual(Verba vVerbaUsuario)
        {
          if (vVerbaUsuario.Id_Tipo_Relatorio == 40)
          {
            txtLimite.ReadOnly = true;
            txtPercentual.ReadOnly = true;
    
            if (vVerbaUsuario.Mensal)
              txtLimite.ReadOnly = false;
            
          }
          else
          {
            txtLimite.ReadOnly = false;
            txtPercentual.ReadOnly = true;
            if(vVerbaUsuario.Percentual_Variavel)
              txtPercentual.ReadOnly = false;
    
          }
        }
    
        private void butNovaVerba_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelVerba);
          butCancelarVerba.Enabled = true;
          butNovaVerba.Enabled = false;
          butExcluirVerba.Enabled = false;
          cboCodigoVerbaUsuario.Enabled = false;
          cboVerba.Enabled = true;
          dgvVerba.Enabled = false;
    
          dtpDataValidade.Value = Convert.ToDateTime("31/12/" + DateTime.Now.Year);
    
          cboVerba.Focus();
    
          cboVerba.Text = "";
        }
    
        private void butCancelarVerba_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(tabVerbas);
          butCancelarVerba.Enabled = false;
          butNovaVerba.Enabled = true;
          butExcluirVerba.Enabled = true;
          cboCodigoVerbaUsuario.Enabled = true;
          cboVerba.Enabled = false;
          dgvVerba.Enabled = true;
    
        }
    
        private void butGravarVerba_Click(object sender, EventArgs e)
        {
          VerbaUsuario obj = new VerbaUsuario();
    
          try
          {
            if (((cboCodigoVerbaUsuario.Enabled) && (cboCodigoVerbaUsuario.SelectedValue != null)) || (!cboCodigoVerbaUsuario.Enabled))
            {
              PreencherObjetoVerba(obj);
    
              VerbaUsuarioManeger.Gravar(obj);                    
              CarregaDadosVerbaUsuario();
              ControleForms.Limpar(panelVerba);
              dtpDataValidade.Value = Convert.ToDateTime("31/12/" + DateTime.Now.Year);
              butCancelarVerba_Click(sender, e);
              cboCodigoVerbaUsuario.Focus();          
            }
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
    
        private void butExcluirVerba_Click(object sender, EventArgs e)
        {
          if (cboCodigoVerbaUsuario.SelectedValue != null)
          {
            try
            {
              VerbaUsuarioManeger.Excluir((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem);
              CarregaDadosVerbaUsuario();
              ControleForms.Limpar(panelVerba);
              cboCodigoVerbaUsuario.Focus();
    
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
    
          }
        }
    
        private void txtLimite_Leave(object sender, EventArgs e)
        {
          if (!string.IsNullOrEmpty(txtLimite.Text))
            txtLimite.Text = Decimal.Parse(txtLimite.Text).ToString("N2");
        }
        #endregion
    
        #region Bonus
        private void cboVerbaBonus_SelectedIndexChanged(object sender, EventArgs e)
        {
          if(cboVerbaBonus.SelectedValue != null)        
            if (butNovoBonus.Enabled == true)
              txtValorBonus.Text = ((Bonus)cboVerbaBonus.SelectedItem).Valor.Value.ToString("C2");
    
        }
    
        private void CarregaDadosBonus()
        {
          cboVerbaBonus.DataSource = null;
          cboVerbaBonus.DisplayMember = "Desc_Verba_Periodo";
    
          listBonus = BonusManeger.LerLista(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          
          cboVerbaBonus.DataSource = listBonus;
          dgvDadosBonus.AutoGenerateColumns = false;
          dgvDadosBonus.DataSource = listBonus;
        }
    
        private void butNovoBonus_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelBonus);
          butCancelBonus.Enabled = true;
          butNovoBonus.Enabled = false;
          butExcluirBonus.Enabled = false;
    
          cboVerbaBonus.DisplayMember = "desc_verba";
          cboVerbaBonus.DataSource = VerbaUsuarioManeger.LerListaVerbasSemBonus(((Usuario)cboCodigo.SelectedItem).Id_Usuario, frmLogin.PeriodoAtual.Id_Periodo);
    
          dgvDadosBonus.Enabled = false;
    
          cboVerbaBonus.Text = "";
        }
    
        private void butCancelBonus_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelBonus);
          butCancelBonus.Enabled = false;
          butNovoBonus.Enabled = true;
          butExcluirBonus.Enabled = true;
    
          CarregaDadosBonus();
    
          dgvDadosBonus.Enabled = true;
    
          cboVerbaBonus.Text = "";
        }
    
        private void butGravarBonus_Click(object sender, EventArgs e)
        {
          try
          { 
            if (cboVerbaBonus.SelectedValue != null)
            {
              Bonus obj;
              if (butNovoBonus.Enabled)
                obj = (Bonus)cboVerbaBonus.SelectedItem;
              else
              {            
                obj = new Bonus();
                obj.Entidade = ((Usuario)cboCodigo.SelectedItem).Entidade;
                obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
                obj.Id_Verba = ((VerbaUsuario)cboVerbaBonus.SelectedItem).Id_Verba;
                obj.Id_Periodo = frmLogin.PeriodoAtual.Id_Periodo;
              }
    
              obj.Valor = Convert.ToDecimal(txtValorBonus.Text);
    
              BonusManeger.Gravar(obj);
    
              CarregaDadosBonus();
              ControleForms.Limpar(panelBonus);
              butCancelBonus_Click(sender, e);
            }
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
    
        private void butExcluirBonus_Click(object sender, EventArgs e)
        {
          if (cboVerbaBonus.SelectedValue != null)
          {
            try
            {
              BonusManeger.Excluir((Bonus)cboVerbaBonus.SelectedItem);
              CarregaDadosBonus();
              ControleForms.Limpar(panelBonus);
    
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
    
          }
        }
    
        private void txtValorBonus_Leave(object sender, EventArgs e)
        {
          txtValorBonus.Text = ControleNumeros.FormatarNumero(txtValorBonus.Text);
        }
    
        #endregion
    
        #region Entidade
    
        private void CarregaDadosEntidade()
        {
          listaEntidadeUsuario = EntidadeManeger.LerListaEntidadeUsuario(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          dgvEntidade.AutoGenerateColumns = false;
          dgvEntidade.DataSource = listaEntidadeUsuario;
        }
    
        private void butGravarEntidade_Click(object sender, EventArgs e)
        {
          try
          {
            Entidade obj = new Entidade();
    
            obj.Codigo = cboEntidade.SelectedValue.ToString();
            obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
    
            EntidadeManeger.GravarEntidadeUsuario(obj);
    
            CarregaDadosEntidade();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
    
        }
    
    
    
        private void dgvEntidade_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          try
          {
            EntidadeManeger.ExcluirEntidadeUsuario((Entidade)dgvEntidade.CurrentRow.DataBoundItem);
    
            CarregaDadosEntidade();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
        #endregion
    
        private void frmUsuario_Leave(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
           UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void dgvDados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigo.SelectedValue = ((Usuario)dgvDados.CurrentRow.DataBoundItem).Codigo;
        }
    
        private void dgvVerba_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigoVerbaUsuario.SelectedValue = ((Verba)dgvVerba.CurrentRow.DataBoundItem).Id_Verba;
        }
    
        private void dgvDadosBonus_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboVerbaBonus.SelectedValue = ((Bonus)dgvDadosBonus.CurrentRow.DataBoundItem).Id_Verba;
        }
      }
    }
    
    
    Código da tela de acesso grupo:
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using IASD.SGT.BusinessLogic;
    using IASD.SGT.BusinessObject;
    using IASD.Core.Forms;
    using IASD.Core.Util;
    
    namespace IASD.SGT.WindowsApp
    {
      public partial class frmUsuarioGrupo : Form
      {
        bool init = false;
        List<UsuarioGrupo> listUsuarioGrupo;
        List<AccessoGrupo> listAcessoGrupo;
        List<AccessoGrupo> listTreeUsuario;
        List<Acesso> listTree;
       //  SortableBindingList<Usuario> list;
        string ValorCodigoAnterior;
        
        public frmUsuarioGrupo()
        {
          InitializeComponent();
        }
    
        private void UsuarioGrupo_Load(object sender, EventArgs e)
        {
          CarregaGrid();
          ControleForms.Limpar(this);
          init = true;
          montarTree();
          trvAcessoGrupo.ExpandAll();
          ControleForms.LimparTudo(this);
          init = true;
          AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelAcesso);
        }
    
    #region Dados Gerais
    
        private void CarregaGrid()
        {
          listUsuarioGrupo = UsuarioGrupoManeger.LerLista();   
      
          dgvDados.DataSource = listUsuarioGrupo;
          cboCodigo.DataSource = listUsuarioGrupo;
          
        }
    
        private void cboCodigo_SelectedIndexChanged(object sender, EventArgs e)
        {
          
          if (init)
          {
            limparTree(trvAcessoGrupo.Nodes);
            tbAcxessoSistema.Enabled = false;
            lbDescricao.Text = "";
            UsuarioGrupoManeger.TravarDestravarRegistro(ValorCodigoAnterior, false);
            if (cboCodigo.SelectedValue != null)
            {
              try
              {
                lbDescricao.Text = cboCodigo.Text;
                tbAcxessoSistema.Enabled = true;
                UsuarioGrupoManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), true);
                PreencherCampos((UsuarioGrupo)cboCodigo.SelectedItem);
                montarTreeUsuario((UsuarioGrupo)cboCodigo.SelectedItem); 
                cboCodigo.Text = cboCodigo.SelectedValue.ToString();
                ValorCodigoAnterior = cboCodigo.SelectedValue.ToString();
                
              }
              catch (Exception ex)
              {
                ControleForms.Limpar(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigo.Text))
            {
              cboCodigo.SelectedValue = Convert.ToInt16(cboCodigo.Text);
              if (cboCodigo.SelectedValue == null)
                ControleForms.Limpar(this);
            }
    
          }
        }
    
        private void butNovo_Click(object sender, EventArgs e)
        {
          limparTree(trvAcessoGrupo.Nodes);
          tbAcxessoSistema.Enabled = false;
          lbDescricao.Text = "";
          txtDescricao.Text = "";
          cboCodigo.SelectedIndex = -1;
          butCancelar.Enabled = true;
          butNovo.Enabled = false;
          butExcluir.Enabled = false;
          //cboCodigo.Enabled = false;
          dgvDados.Enabled = false;
        }
    
        private void butCancelar_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(this);
          dgvDados.Enabled = true;
          butCancelar.Enabled = false;
          butExcluir.Enabled = true;
          butNovo.Enabled = true;
          cboCodigo.Enabled = true;
        }
    
        private void PreencherCampos(UsuarioGrupo grupo)
        {
          cboCodigo.SelectedValue = grupo.Id_Usuario_Grupo;
          txtDescricao.Text = grupo.Desc_Usuario_Grupo;
        
    
        }
    
        private void butGravar_Click(object sender, EventArgs e)
        {
          UsuarioGrupo obj = new UsuarioGrupo();
    
          if (!cboCodigo.Enabled)
          {
            obj.Desc_Usuario_Grupo = txtDescricao.Text;
          }
          else if (cboCodigo.SelectedValue != null)
          {
            obj = (UsuarioGrupo)cboCodigo.SelectedItem;
            obj.Desc_Usuario_Grupo = txtDescricao.Text;
    
          }
          else
            return;
    
    
          try
          {
            UsuarioGrupoManeger.Gravar(obj);
            CarregaGrid();
            ControleForms.Limpar(this);
            butCancelar_Click(sender, e);
            cboCodigo.Focus();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
          
        }
    
        private void butExcluir_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            try
            {
              UsuarioGrupoManeger.Excluir((UsuarioGrupo)cboCodigo.SelectedItem);
              CarregaGrid();          
              ControleForms.Limpar(this);
              cboCodigo.Focus();
              
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
          
          }
        }
    
        private void cboCodigo_Enter(object sender, EventArgs e)
        {
          UsuarioGrupoManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void frmUsuarioGrupo_KeyPress(object sender, KeyPressEventArgs e)
        {
          if (e.KeyChar == 13)
          {
            e.Handled = true;
            SendKeys.Send("{tab}");
          }
        }
    
        private void frmUsuarioGrupo_FormClosed(object sender, FormClosedEventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
            UsuarioGrupoManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void dgvDados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigo.SelectedValue = ((UsuarioGrupo)dgvDados.CurrentRow.DataBoundItem).Id_Usuario_Grupo;
          
    
        }
    
    #endregion
    
    #region Acesso Grupo
    
        private void montarTree()
        {
          listTree = AcessoManeger.LerListaTreeView();
          montarTree(-1, null);
        }
    
        private void montarTree(short IdAcessoSuperior, TreeNode superiorNode)
        {
          List<Acesso> nList;
    
          if (IdAcessoSuperior < 1)
            nList = listTree.FindAll(p => p.Id_Acesso_Superior == -1);
          else
            nList = listTree.FindAll(p => p.Id_Acesso_Superior == IdAcessoSuperior);
    
          foreach (Acesso obj in nList)
          {
            TreeNode novoNode;
    
            if ((IdAcessoSuperior < 1) && (superiorNode == null))
              novoNode = trvAcessoGrupo.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
            else
              novoNode = superiorNode.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
    
            novoNode.Name = obj.Id_Acesso.ToString();
            montarTree(obj.Id_Acesso, novoNode);
          }
    
        }
    
        private void montarTreeUsuario(UsuarioGrupo vGrupo)
        {
          listTreeUsuario = AcessoGrupoManager.LerLista(vGrupo);
          montarTreeUsuarioPrivilegio(trvAcessoGrupo.Nodes);
        }
    
        private void montarTreeUsuarioPrivilegio(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            AccessoGrupo acessGroup = listTreeUsuario.Find(p => p.id_acesso == short.Parse(tn.Name));
            if (acessGroup != null)
            {
              tn.ImageIndex = acessGroup.privilegio;
              tn.SelectedImageIndex = acessGroup.privilegio;
            }
    
            if (tn.Nodes.Count > 0)
              montarTreeUsuarioPrivilegio(tn.Nodes);
          }
        }
    
        private void limparTree(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            tn.ImageIndex = 2;
            tn.SelectedImageIndex = 2;
    
            if (tn.Nodes.Count > 0)
              limparTree(tn.Nodes);
          }
        }
    
        private List<AccessoGrupo> capturarAcessoTree(TreeNodeCollection vNode, List<AccessoGrupo> vList)
        {
          foreach (TreeNode tn in vNode)
          {
            if (tn.ImageIndex != 2)
            {
              AccessoGrupo obj = new AccessoGrupo();
    
              obj.id_usuario_grupo = ((UsuarioGrupo)cboCodigo.SelectedItem).Id_Usuario_Grupo;
              obj.id_acesso = short.Parse(tn.Name);
              obj.privilegio = (short)tn.ImageIndex;
    
              vList.Add(obj);
            }
    
            if (tn.Nodes.Count > 0)
              capturarAcessoTree(tn.Nodes, vList);
          }
    
          return vList;
        }
    
        private void toolAcessoTotalGroup_Click(object sender, EventArgs e)
        {
          if (trvAcessoGrupo.SelectedNode != null)
          {
            preencherNodes(trvAcessoGrupo.SelectedNode, 1);
            preencherNodesParent(trvAcessoGrupo.SelectedNode, 1);
          }
        }
    
        private void toolSomenteLeituraGroup_Click(object sender, EventArgs e)
        {
          if (trvAcessoGrupo.SelectedNode != null)
          {
            preencherNodes(trvAcessoGrupo.SelectedNode, 0);
            preencherNodesParent(trvAcessoGrupo.SelectedNode, 1);
          }
    
        }
    
        private void toolBloquearGroup_Click(object sender, EventArgs e)
        {
          if (trvAcessoGrupo.SelectedNode != null)
          {
            preencherNodes(trvAcessoGrupo.SelectedNode, 2);
            preencherNodesParent(trvAcessoGrupo.SelectedNode, 1);
          }
    
        }
        private void preencherNodes(TreeNode Node, int nivel)
        {
    
          if ((nivel == 0) && (Node.Nodes.Count > 0))
            Node.ImageIndex = 1;
          else
            Node.ImageIndex = nivel;
    
          Node.SelectedImageIndex = Node.ImageIndex;
    
          if (Node.Nodes.Count > 0)
            foreach (TreeNode tn in Node.Nodes)
              preencherNodes(tn, nivel);
    
        }
        private void preencherNodesParent(TreeNode Node, int nivel)
        {
          if (Node.Parent != null)
          {
            if (nivel == 0)
              Node.Parent.ImageIndex = 1;
            else
              Node.Parent.ImageIndex = nivel;
    
            Node.Parent.SelectedImageIndex = Node.Parent.ImageIndex;
    
            if (Node.Parent.Parent != null)
              preencherNodesParent(Node.Parent, nivel);
          }
        }
    
    
        private void toolGravarAcessoGrupo_Click(object sender, EventArgs e)
        {
          try
          {
            AcessoGrupoManager.Gravar(capturarAcessoTree(trvAcessoGrupo.Nodes, new List<AccessoGrupo>()));
            MessageBox.Show("Alteração efetuada com Sucesso!", "Gravar Acesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
          }
          catch (Exception ex)
          {
            ControleForms.LimparTudo(this);
            TratarErro.AnalizarErro(ex);
          }
    
        }
    
    #endregion 
    
    
    
    
    
    
    
    
        
      }
    }
    
    
    quinta-feira, 7 de outubro de 2010 17:47

Respostas

  • Resolvi da seguinte forma: chamo a treview 2 vzs uma com a list por user e outra com a list por grupo ai paso o cod da imagem quando for por grupo :

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using IASD.SGT.BusinessLogic;
    using IASD.SGT.BusinessObject;
    using IASD.Core.Forms;
    using IASD.Core.Util;
    
    namespace IASD.SGT.WindowsApp
    {
      public partial class frmUsuario: Form
      {
        bool init = false;
        List<AcessoUsuario> listTreeUsuario;
        List<AccessoGrupo> listAcessoGrupo;
        List<Acesso> listTree;
        SortableBindingList<Usuario> list;
        List<VerbaUsuario> listVerbaUsuario;
        List<Bonus> listBonus;
        List<Entidade> listaEntidadeUsuario;
    
        string ValorCodigoAnterior;
    
        public frmUsuario()
        {
          InitializeComponent();
        }
    
        private void Usuario_Load(object sender, EventArgs e)
        {      
          cboGrupoUsuario.DataSource = UsuarioGrupoManeger.LerLista();
          cboEntidade.DataSource = EntidadeManeger.LerLista();
          cboEscola.DataSource = EscolasManager.LerLista();
          CarregaGrid();
          montarTree();      
          trvAcesso.ExpandAll();
          ControleForms.LimparTudo(this);
          init = true;
          AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelGeral, panelAcesso, panelVerba, panelBonus);
        }
    
        #region Dados Gerais
        private void CarregaGrid()
        {
          list = UsuarioManeger.LerListaUsuarioEntidadeCompleto(frmLogin.EntidadeAtual.Codigo);
    
          dgvDados.AutoGenerateColumns = false;
          dgvDados.DataSource = list;
          cboCodigo.DataSource = list;
          
        }
    
        private void cboCodigo_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (init)
          {
            init_verba = false;
            limparTree(trvAcesso.Nodes);
            panelVerba.Enabled = false;
            panelAcesso.Enabled = false;
            panelBonus.Enabled = false;
            UsuarioManeger.TravarDestravarRegistro(ValorCodigoAnterior, false);
            lblNomeUsuario.Text = "";
            if (cboCodigo.SelectedValue != null)
            {
              try
              {
                panelVerba.Enabled = true;
                panelAcesso.Enabled = true;
                panelBonus.Enabled = true;
                UsuarioManeger.TravarDestravarRegistro(((Usuario)cboCodigo.SelectedItem).Id_Usuario.ToString(), true);
                PreencherCampos((Usuario)cboCodigo.SelectedItem);
                montarTreeGrupo((UsuarioGrupo)cboGrupoUsuario.SelectedItem);
                montarTreeUsuario((Usuario)cboCodigo.SelectedItem);
                CarregaDadosVerbaUsuario();
                CarregaDadosBonus();
                CarregaDadosEntidade();
                ControleForms.Limpar(panelVerba);
                ControleForms.Limpar(panelBonus);
                cboCodigo.Text = cboCodigo.SelectedValue.ToString();
                ValorCodigoAnterior = ((Usuario)cboCodigo.SelectedItem).Id_Usuario.ToString();//cboCodigo.SelectedValue.ToString();
                lblNomeUsuario.Text = cboNome.Text;
              }
              catch (Exception ex)
              {
                ControleForms.LimparTudo(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigo.Text))
            {
              cboCodigo.SelectedValue = cboCodigo.Text;
              if (cboCodigo.SelectedValue == null)
                ControleForms.LimparTudo(this);
            }
            AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelGeral, panelAcesso, panelVerba, panelBonus);
    
          }
        }
    
        private void butNovo_Click(object sender, EventArgs e)
        {
          cboNome.DisplayMember = "Nome";
          cboNome.ValueMember = "Codigo";
          cboNome.DataSource = UsuarioManeger.LerListaFuncionario(frmLogin.EntidadeAtual.Codigo);
    
          ControleForms.LimparTudo(this);
          
          butCancelar.Enabled = true;
          butNovo.Enabled = false;
          butExcluir.Enabled = false;
          cboCodigo.Enabled = false;
          dgvDados.Enabled = false;
    
          cboNome.Enabled = true;      
    
          txtSenha.Enabled = true;
          txtSenha_Confirma.Enabled = true;
          ckbTrocarSenha.Enabled = true;
    
          butResetSenha.Enabled = false;
    
          dgvVerba.DataSource = null;
    
          tbUsuario.SelectedTab = tabGeral;
          cboNome.Focus();
        }
    
        private void butCancelar_Click(object sender, EventArgs e)
        {
          ControleForms.LimparTudo(this);
    
          dgvDados.Enabled = true;
          butCancelar.Enabled = false;
          butExcluir.Enabled = true;
          butNovo.Enabled = true;
          cboCodigo.Enabled = true;
    
          butResetSenha.Enabled = true;
    
          cboNome.Enabled = false;
    
          txtSenha.Enabled = false;
          txtSenha_Confirma.Enabled = false;
          ckbTrocarSenha.Enabled = false;
    
          cboCodigo.Focus();
    
          cboNome.DataSource = null;
        }
    
        private void PreencherCampos(Usuario obj)
        {
          cboCodigo.SelectedValue = obj.Codigo;
          cboGrupoUsuario.SelectedValue = obj.Id_Usuario_Grupo;
          txtE_mail.Text = obj.E_mail;
          txtE_mail_alternativo.Text = obj.E_mail_Alternativo;
          txtEntidade.Text = obj.Entidade;
          txtCodigoAPS.Text = obj.Codigo;
          txtCPF.Text = obj.Cpf;
          cboNome.Text = obj.Nome;
          txtData_Nasc.Text = obj.Data_Nascimento.ToString("dd/MM/yyyy");
          txtEstado_Civil.Text = obj.Estado_civil;
          txtFuncao.Text = obj.Funcao;
          txtSexo.Text = obj.Sexo;
          txtOrcamentoViagem.Text = "";
          if (obj.Orcamento_Viagem != null)
            txtOrcamentoViagem.Text = obj.Orcamento_Viagem.Value.ToString("N");
          ckbAdministrador.Checked = obj.Sta_Administrador;
          cboEscola.SelectedIndex = -1;
          if (obj.Id_Escola != null)
            cboEscola.SelectedValue = obj.Id_Escola.Value;
        }
    
        private void PreencherObjeto(Usuario obj)
        {
          obj.Id_Usuario_Grupo = Convert.ToInt16(cboGrupoUsuario.SelectedValue);
          obj.Senha = txtSenha.Text;
          obj.E_mail = txtE_mail.Text;
          obj.E_mail_Alternativo = txtE_mail_alternativo.Text;
          obj.Cpf = txtCPF.Text;      
          obj.Orcamento_Viagem = null;
          if (!txtOrcamentoViagem.Text.Equals(""))
            obj.Orcamento_Viagem = Convert.ToDecimal(txtOrcamentoViagem.Text);
          obj.Sta_Senha = ckbTrocarSenha.Checked;
          obj.Sta_Administrador = ckbAdministrador.Checked;
          obj.Id_Escola = null;
          if (cboEscola.SelectedValue != null)
            obj.Id_Escola = int.Parse(cboEscola.SelectedValue.ToString());
        }
    
        private void butGravar_Click(object sender, EventArgs e)
        {
          Usuario obj = new Usuario();
          string codigoAPS = txtCodigoAPS.Text;
          try
          {
            if ((cboCodigo.Enabled) && (cboCodigo.SelectedValue != null))
              obj = (Usuario)cboCodigo.SelectedItem;
            else
              Validadores.ValidarSenha(txtSenha.Text, txtSenha_Confirma.Text, 4);
    
            Validadores.ValidarEmail(txtE_mail.Text);
            Validadores.ValidarEmail(txtE_mail_alternativo.Text);
    
            PreencherObjeto(obj);
    
            UsuarioManeger.Gravar(obj);
    
            butCancelar_Click(sender, e);
            init = false;
            CarregaGrid();
            init = true;
            cboCodigo.SelectedValue = codigoAPS;
            //ControleForms.LimparTudo(this);                      
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
          
        }
    
        private void butExcluir_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            try
            {
              DialogResult res = MessageBox.Show("Confirma a exclusão do registro?", "Confirmação de Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
              if (res == DialogResult.Yes)
              {
                UsuarioManeger.Excluir((Usuario)cboCodigo.SelectedItem);
                CarregaGrid();
                ControleForms.LimparTudo(this);
                cboCodigo.Focus();
              }
              
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
          
          }
        }
    
        private void cboCodigo_Enter(object sender, EventArgs e)
        {
          UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void frmUsuario_KeyPress(object sender, KeyPressEventArgs e)
        {
          if (e.KeyChar == 13)
          {
            e.Handled = true;
            SendKeys.Send("{tab}");
          }
        }
    
        private void frmUsuario_FormClosed(object sender, FormClosedEventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
            UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void cboNome_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (cboNome.SelectedValue != null)
            PreencherCampos((Usuario)cboNome.SelectedItem);
          else if (ControleNumeros.IsInt(cboNome.Text))
          {
            cboNome.SelectedValue = cboNome.Text;
          }
    
        }
    
        private void butResetSenha_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            frmTrocarSenha frm = new frmTrocarSenha((Usuario)cboCodigo.SelectedItem);
            frm.ShowDialog(this);
          }
        }
    
        private void txtOrcamentoViagem_Leave(object sender, EventArgs e)
        {
          txtOrcamentoViagem.Text = ControleNumeros.FormatarNumero(txtOrcamentoViagem.Text);
        }
    
        #endregion 
    
        #region Acesso por Grupo
        private void montarTreeGrupo(UsuarioGrupo vGrupo)
        {
          listAcessoGrupo = AcessoGrupoManager.LerLista(vGrupo);
          montarTreeGrupoPrivilegio(trvAcesso.Nodes);
        }
    
        private void montarTreeGrupoPrivilegio(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            AccessoGrupo acessGroup = listAcessoGrupo.Find(p => p.id_acesso == short.Parse(tn.Name));
            if (acessGroup != null)
            {
              tn.ImageIndex = 3;
              tn.SelectedImageIndex = 3;
            }
    
            if (tn.Nodes.Count > 0)
              montarTreeGrupoPrivilegio(tn.Nodes);
          }
        }
    
        #endregion
    
        #region Acesso Usuário
        private void montarTree()
        {
          listTree = AcessoManeger.LerListaTreeView();
          montarTree(-1, null);
        }
    
        private void montarTree(short IdAcessoSuperior, TreeNode superiorNode)
        {   
          List<Acesso> nList;
    
          if(IdAcessoSuperior < 1)
             nList = listTree.FindAll(p => p.Id_Acesso_Superior == -1);
          else
             nList = listTree.FindAll(p => p.Id_Acesso_Superior == IdAcessoSuperior);
    
          foreach (Acesso obj in nList)
          {
            TreeNode novoNode;
    
            if ((IdAcessoSuperior < 1) && (superiorNode == null))
              novoNode = trvAcesso.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
            else
              novoNode = superiorNode.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
    
            novoNode.Name = obj.Id_Acesso.ToString();
            montarTree(obj.Id_Acesso, novoNode);
          }
    
        }
    
        private void montarTreeUsuario(Usuario vUsuario)
        {
          listTreeUsuario = AcessoUsuarioManeger.LerLista(vUsuario);
          montarTreeUsuarioPrivilegio(trvAcesso.Nodes);
        }
    
        private void montarTreeUsuarioPrivilegio(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            AcessoUsuario acessUsuario = listTreeUsuario.Find(p => p.Id_Acesso == short.Parse(tn.Name));
            if (acessUsuario != null)
            {
              tn.ImageIndex = acessUsuario.Privilegio;
              tn.SelectedImageIndex = acessUsuario.Privilegio;
            }
    
            if (tn.Nodes.Count > 0)
              montarTreeUsuarioPrivilegio(tn.Nodes);
          }
        }
    
    
    
        private void limparTree(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            tn.ImageIndex = 2;
            tn.SelectedImageIndex = 2;
    
            if (tn.Nodes.Count > 0)
              limparTree(tn.Nodes);
          }
        }
        private List<AcessoUsuario> capturarAcessoTree(TreeNodeCollection vNode, List<AcessoUsuario> vList)
        {
          foreach (TreeNode tn in vNode)
          {
            if ((tn.ImageIndex != 2) && (tn.ImageIndex != 3))
            {
              AcessoUsuario obj = new AcessoUsuario();
    
              obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
              obj.Id_Acesso = short.Parse(tn.Name);
              obj.Privilegio = (short)tn.ImageIndex;
    
              vList.Add(obj); 
            }
    
            if (tn.Nodes.Count > 0)
              capturarAcessoTree(tn.Nodes, vList);
          }
    
          return vList;
        }
    
        private void toolAcessoTotal_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 1);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
        private void toolSomenteLeitura_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 0);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
        private void toolBloquear_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 2);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
    
        private void preencherNodes(TreeNode Node, int nivel)
        {
    
          if ((nivel == 0) && (Node.Nodes.Count > 0))
            Node.ImageIndex = 1;
          else
            Node.ImageIndex = nivel;
    
          Node.SelectedImageIndex = Node.ImageIndex;
    
          if (Node.Nodes.Count > 0)
            foreach (TreeNode tn in Node.Nodes)
              preencherNodes(tn, nivel);          
          
        }
        private void preencherNodesParent(TreeNode Node, int nivel)
        { 
          if (Node.Parent != null)
          {
            if (nivel == 0)
              Node.Parent.ImageIndex = 1;
            else
              Node.Parent.ImageIndex = nivel;
    
            Node.Parent.SelectedImageIndex = Node.Parent.ImageIndex;
    
            if (Node.Parent.Parent != null)
              preencherNodesParent(Node.Parent, nivel);
          }
        }
    
        private void toolGravarAcesso_Click(object sender, EventArgs e)
        {
          try
          {
            AcessoUsuarioManeger.Gravar(capturarAcessoTree(trvAcesso.Nodes, new List<AcessoUsuario>()));
            MessageBox.Show("Alteração efetuada com Sucesso!", "Gravar Acesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
          }
          catch (Exception ex)
          {
            ControleForms.LimparTudo(this);
            TratarErro.AnalizarErro(ex);
          }
        }
    
        #endregion 
    
        #region Verba Usuário
    
        bool init_verba = false;
    
        private void CarregaDadosVerbaUsuario()
        {
          init_verba = false;
    
          listVerbaUsuario = VerbaUsuarioManeger.LerLista(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          cboCodigoVerbaUsuario.DataSource = listVerbaUsuario;
          dgvVerba.AutoGenerateColumns = false;
          dgvVerba.DataSource = listVerbaUsuario;
    
          cboVerba.DataSource = VerbaManeger.LerListaVerbaAtivaUsuario(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          init_verba = true;
        }
        
        private void cboCodigoVerbaUsuario_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (init_verba)
          {
            if (cboCodigoVerbaUsuario.SelectedValue != null)
            {
              try
              {
                if (listVerbaUsuario.Find(p => p.Id_Verba_Vinculada == ((Verba)cboCodigoVerbaUsuario.SelectedItem).Id_Verba && p.Vinculo_Complementar == true) != null)
                {
                  ControleForms.Limpar(panelVerba);
                  throw new Exception("Verba complementar! Não pode ser editada!");
                }
    
                HabilitaLimitePercentual((Verba)cboCodigoVerbaUsuario.SelectedItem);
                PreencherCamposVerba((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem);
                cboCodigoVerbaUsuario.Text = cboCodigoVerbaUsuario.SelectedValue.ToString();
              }
              catch (Exception ex)
              {
                ControleForms.Limpar(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigoVerbaUsuario.Text))
            {
              cboCodigoVerbaUsuario.SelectedValue = Convert.ToInt16(cboCodigoVerbaUsuario.Text);
              if (cboCodigoVerbaUsuario.SelectedValue == null)
                ControleForms.Limpar(this);
            }
          }
        }
    
        private void PreencherCamposVerba(VerbaUsuario obj)
        {
          cboCodigoVerbaUsuario.SelectedValue = obj.Id_Verba;
          cboVerba.Text = obj.Desc_Verba;
          dtpDataValidade.Value = obj.Data_Validade;
          txtPercentual.Text = obj.Percentual.ToString();
          ckbVerbaAnual.Checked = obj.Anual;
          ckbVerbaMensal.Checked = obj.Mensal;
          txtLimite.Text = "";
          if(obj.Limite != null)
           txtLimite.Text = obj.Limite.Value.ToString("N");
        }
    
        private void PreencherObjetoVerba(VerbaUsuario obj)
        {
          obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
          short Id_Tipo_Relatorio;
          if (cboVerba.SelectedValue != null)
          {
            obj.Id_Verba = ((Verba)cboVerba.SelectedItem).Id_Verba;
            Id_Tipo_Relatorio = ((Verba)cboVerba.SelectedItem).Id_Tipo_Relatorio;
          }
          else
          {
            obj.Id_Verba = ((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem).Id_Verba;
            Id_Tipo_Relatorio = ((Verba)cboCodigoVerbaUsuario.SelectedItem).Id_Tipo_Relatorio;
          }
          if (!txtLimite.Text.Equals(""))
            obj.Limite = Convert.ToDecimal(txtLimite.Text);
          else if ((txtLimite.Text.Equals("")) && (Id_Tipo_Relatorio != 40))
            throw new ApplicationException("Preencha o campo 'Limite'!");
          
          obj.Percentual = Convert.ToInt16(txtPercentual.Text);
          obj.Data_Validade = dtpDataValidade.Value.Date;
        }
    
        private void cboVerba_SelectedIndexChanged(object sender, EventArgs e)
        {
          txtLimite.Text = "";
    
          if ((!cboCodigoVerbaUsuario.Enabled) && (cboVerba.SelectedValue != null))
          {
            txtPercentual.Text = ((Verba)cboVerba.SelectedItem).Percentual.ToString();
            ckbVerbaAnual.Checked = ((Verba)cboVerba.SelectedItem).Anual;
            ckbVerbaMensal.Checked = ((Verba)cboVerba.SelectedItem).Mensal;
    
            if(((Verba)cboVerba.SelectedItem).Limite != null)
              txtLimite.Text = ((Verba)cboVerba.SelectedItem).Limite.Value.ToString("N2");
          }
    
          if (cboVerba.SelectedValue != null)
            HabilitaLimitePercentual((Verba)cboVerba.SelectedItem);
        }
    
        private void HabilitaLimitePercentual(Verba vVerbaUsuario)
        {
          if (vVerbaUsuario.Id_Tipo_Relatorio == 40)
          {
            txtLimite.ReadOnly = true;
            txtPercentual.ReadOnly = true;
    
            if (vVerbaUsuario.Mensal)
              txtLimite.ReadOnly = false;
            
          }
          else
          {
            txtLimite.ReadOnly = false;
            txtPercentual.ReadOnly = true;
            if(vVerbaUsuario.Percentual_Variavel)
              txtPercentual.ReadOnly = false;
    
          }
        }
    
        private void butNovaVerba_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelVerba);
          butCancelarVerba.Enabled = true;
          butNovaVerba.Enabled = false;
          butExcluirVerba.Enabled = false;
          cboCodigoVerbaUsuario.Enabled = false;
          cboVerba.Enabled = true;
          dgvVerba.Enabled = false;
    
          dtpDataValidade.Value = Convert.ToDateTime("31/12/" + DateTime.Now.Year);
    
          cboVerba.Focus();
    
          cboVerba.Text = "";
        }
    
        private void butCancelarVerba_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(tabVerbas);
          butCancelarVerba.Enabled = false;
          butNovaVerba.Enabled = true;
          butExcluirVerba.Enabled = true;
          cboCodigoVerbaUsuario.Enabled = true;
          cboVerba.Enabled = false;
          dgvVerba.Enabled = true;
    
        }
    
        private void butGravarVerba_Click(object sender, EventArgs e)
        {
          VerbaUsuario obj = new VerbaUsuario();
    
          try
          {
            if (((cboCodigoVerbaUsuario.Enabled) && (cboCodigoVerbaUsuario.SelectedValue != null)) || (!cboCodigoVerbaUsuario.Enabled))
            {
              PreencherObjetoVerba(obj);
    
              VerbaUsuarioManeger.Gravar(obj);                    
              CarregaDadosVerbaUsuario();
              ControleForms.Limpar(panelVerba);
              dtpDataValidade.Value = Convert.ToDateTime("31/12/" + DateTime.Now.Year);
              butCancelarVerba_Click(sender, e);
              cboCodigoVerbaUsuario.Focus();          
            }
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
    
        private void butExcluirVerba_Click(object sender, EventArgs e)
        {
          if (cboCodigoVerbaUsuario.SelectedValue != null)
          {
            try
            {
              VerbaUsuarioManeger.Excluir((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem);
              CarregaDadosVerbaUsuario();
              ControleForms.Limpar(panelVerba);
              cboCodigoVerbaUsuario.Focus();
    
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
    
          }
        }
    
        private void txtLimite_Leave(object sender, EventArgs e)
        {
          if (!string.IsNullOrEmpty(txtLimite.Text))
            txtLimite.Text = Decimal.Parse(txtLimite.Text).ToString("N2");
        }
        #endregion
    
        #region Bonus
        private void cboVerbaBonus_SelectedIndexChanged(object sender, EventArgs e)
        {
          if(cboVerbaBonus.SelectedValue != null)        
            if (butNovoBonus.Enabled == true)
              txtValorBonus.Text = ((Bonus)cboVerbaBonus.SelectedItem).Valor.Value.ToString("C2");
    
        }
    
        private void CarregaDadosBonus()
        {
          cboVerbaBonus.DataSource = null;
          cboVerbaBonus.DisplayMember = "Desc_Verba_Periodo";
    
          listBonus = BonusManeger.LerLista(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          
          cboVerbaBonus.DataSource = listBonus;
          dgvDadosBonus.AutoGenerateColumns = false;
          dgvDadosBonus.DataSource = listBonus;
        }
    
        private void butNovoBonus_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelBonus);
          butCancelBonus.Enabled = true;
          butNovoBonus.Enabled = false;
          butExcluirBonus.Enabled = false;
    
          cboVerbaBonus.DisplayMember = "desc_verba";
          cboVerbaBonus.DataSource = VerbaUsuarioManeger.LerListaVerbasSemBonus(((Usuario)cboCodigo.SelectedItem).Id_Usuario, frmLogin.PeriodoAtual.Id_Periodo);
    
          dgvDadosBonus.Enabled = false;
    
          cboVerbaBonus.Text = "";
        }
    
        private void butCancelBonus_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelBonus);
          butCancelBonus.Enabled = false;
          butNovoBonus.Enabled = true;
          butExcluirBonus.Enabled = true;
    
          CarregaDadosBonus();
    
          dgvDadosBonus.Enabled = true;
    
          cboVerbaBonus.Text = "";
        }
    
        private void butGravarBonus_Click(object sender, EventArgs e)
        {
          try
          { 
            if (cboVerbaBonus.SelectedValue != null)
            {
              Bonus obj;
              if (butNovoBonus.Enabled)
                obj = (Bonus)cboVerbaBonus.SelectedItem;
              else
              {            
                obj = new Bonus();
                obj.Entidade = ((Usuario)cboCodigo.SelectedItem).Entidade;
                obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
                obj.Id_Verba = ((VerbaUsuario)cboVerbaBonus.SelectedItem).Id_Verba;
                obj.Id_Periodo = frmLogin.PeriodoAtual.Id_Periodo;
              }
    
              obj.Valor = Convert.ToDecimal(txtValorBonus.Text);
    
              BonusManeger.Gravar(obj);
    
              CarregaDadosBonus();
              ControleForms.Limpar(panelBonus);
              butCancelBonus_Click(sender, e);
            }
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
    
        private void butExcluirBonus_Click(object sender, EventArgs e)
        {
          if (cboVerbaBonus.SelectedValue != null)
          {
            try
            {
              BonusManeger.Excluir((Bonus)cboVerbaBonus.SelectedItem);
              CarregaDadosBonus();
              ControleForms.Limpar(panelBonus);
    
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
    
          }
        }
    
        private void txtValorBonus_Leave(object sender, EventArgs e)
        {
          txtValorBonus.Text = ControleNumeros.FormatarNumero(txtValorBonus.Text);
        }
    
        #endregion
    
        #region Entidade
    
        private void CarregaDadosEntidade()
        {
          listaEntidadeUsuario = EntidadeManeger.LerListaEntidadeUsuario(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          dgvEntidade.AutoGenerateColumns = false;
          dgvEntidade.DataSource = listaEntidadeUsuario;
        }
    
        private void butGravarEntidade_Click(object sender, EventArgs e)
        {
          try
          {
            Entidade obj = new Entidade();
    
            obj.Codigo = cboEntidade.SelectedValue.ToString();
            obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
    
            EntidadeManeger.GravarEntidadeUsuario(obj);
    
            CarregaDadosEntidade();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
    
        }
    
    
    
        private void dgvEntidade_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          try
          {
            EntidadeManeger.ExcluirEntidadeUsuario((Entidade)dgvEntidade.CurrentRow.DataBoundItem);
    
            CarregaDadosEntidade();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
        #endregion
    
        private void frmUsuario_Leave(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
           UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void dgvDados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigo.SelectedValue = ((Usuario)dgvDados.CurrentRow.DataBoundItem).Codigo;
        }
    
        private void dgvVerba_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigoVerbaUsuario.SelectedValue = ((Verba)dgvVerba.CurrentRow.DataBoundItem).Id_Verba;
        }
    
        private void dgvDadosBonus_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboVerbaBonus.SelectedValue = ((Bonus)dgvDadosBonus.CurrentRow.DataBoundItem).Id_Verba;
        }
      }
    }
    
    
    quinta-feira, 7 de outubro de 2010 19:35

Todas as Respostas

  • Resolvi da seguinte forma: chamo a treview 2 vzs uma com a list por user e outra com a list por grupo ai paso o cod da imagem quando for por grupo :

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using IASD.SGT.BusinessLogic;
    using IASD.SGT.BusinessObject;
    using IASD.Core.Forms;
    using IASD.Core.Util;
    
    namespace IASD.SGT.WindowsApp
    {
      public partial class frmUsuario: Form
      {
        bool init = false;
        List<AcessoUsuario> listTreeUsuario;
        List<AccessoGrupo> listAcessoGrupo;
        List<Acesso> listTree;
        SortableBindingList<Usuario> list;
        List<VerbaUsuario> listVerbaUsuario;
        List<Bonus> listBonus;
        List<Entidade> listaEntidadeUsuario;
    
        string ValorCodigoAnterior;
    
        public frmUsuario()
        {
          InitializeComponent();
        }
    
        private void Usuario_Load(object sender, EventArgs e)
        {      
          cboGrupoUsuario.DataSource = UsuarioGrupoManeger.LerLista();
          cboEntidade.DataSource = EntidadeManeger.LerLista();
          cboEscola.DataSource = EscolasManager.LerLista();
          CarregaGrid();
          montarTree();      
          trvAcesso.ExpandAll();
          ControleForms.LimparTudo(this);
          init = true;
          AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelGeral, panelAcesso, panelVerba, panelBonus);
        }
    
        #region Dados Gerais
        private void CarregaGrid()
        {
          list = UsuarioManeger.LerListaUsuarioEntidadeCompleto(frmLogin.EntidadeAtual.Codigo);
    
          dgvDados.AutoGenerateColumns = false;
          dgvDados.DataSource = list;
          cboCodigo.DataSource = list;
          
        }
    
        private void cboCodigo_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (init)
          {
            init_verba = false;
            limparTree(trvAcesso.Nodes);
            panelVerba.Enabled = false;
            panelAcesso.Enabled = false;
            panelBonus.Enabled = false;
            UsuarioManeger.TravarDestravarRegistro(ValorCodigoAnterior, false);
            lblNomeUsuario.Text = "";
            if (cboCodigo.SelectedValue != null)
            {
              try
              {
                panelVerba.Enabled = true;
                panelAcesso.Enabled = true;
                panelBonus.Enabled = true;
                UsuarioManeger.TravarDestravarRegistro(((Usuario)cboCodigo.SelectedItem).Id_Usuario.ToString(), true);
                PreencherCampos((Usuario)cboCodigo.SelectedItem);
                montarTreeGrupo((UsuarioGrupo)cboGrupoUsuario.SelectedItem);
                montarTreeUsuario((Usuario)cboCodigo.SelectedItem);
                CarregaDadosVerbaUsuario();
                CarregaDadosBonus();
                CarregaDadosEntidade();
                ControleForms.Limpar(panelVerba);
                ControleForms.Limpar(panelBonus);
                cboCodigo.Text = cboCodigo.SelectedValue.ToString();
                ValorCodigoAnterior = ((Usuario)cboCodigo.SelectedItem).Id_Usuario.ToString();//cboCodigo.SelectedValue.ToString();
                lblNomeUsuario.Text = cboNome.Text;
              }
              catch (Exception ex)
              {
                ControleForms.LimparTudo(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigo.Text))
            {
              cboCodigo.SelectedValue = cboCodigo.Text;
              if (cboCodigo.SelectedValue == null)
                ControleForms.LimparTudo(this);
            }
            AcessoUsuarioManeger.VerificarAcessoForm(frmLogin.UsuarioAutenticado, frmLogin.AcessoUsuarioAtual, panelGeral, panelAcesso, panelVerba, panelBonus);
    
          }
        }
    
        private void butNovo_Click(object sender, EventArgs e)
        {
          cboNome.DisplayMember = "Nome";
          cboNome.ValueMember = "Codigo";
          cboNome.DataSource = UsuarioManeger.LerListaFuncionario(frmLogin.EntidadeAtual.Codigo);
    
          ControleForms.LimparTudo(this);
          
          butCancelar.Enabled = true;
          butNovo.Enabled = false;
          butExcluir.Enabled = false;
          cboCodigo.Enabled = false;
          dgvDados.Enabled = false;
    
          cboNome.Enabled = true;      
    
          txtSenha.Enabled = true;
          txtSenha_Confirma.Enabled = true;
          ckbTrocarSenha.Enabled = true;
    
          butResetSenha.Enabled = false;
    
          dgvVerba.DataSource = null;
    
          tbUsuario.SelectedTab = tabGeral;
          cboNome.Focus();
        }
    
        private void butCancelar_Click(object sender, EventArgs e)
        {
          ControleForms.LimparTudo(this);
    
          dgvDados.Enabled = true;
          butCancelar.Enabled = false;
          butExcluir.Enabled = true;
          butNovo.Enabled = true;
          cboCodigo.Enabled = true;
    
          butResetSenha.Enabled = true;
    
          cboNome.Enabled = false;
    
          txtSenha.Enabled = false;
          txtSenha_Confirma.Enabled = false;
          ckbTrocarSenha.Enabled = false;
    
          cboCodigo.Focus();
    
          cboNome.DataSource = null;
        }
    
        private void PreencherCampos(Usuario obj)
        {
          cboCodigo.SelectedValue = obj.Codigo;
          cboGrupoUsuario.SelectedValue = obj.Id_Usuario_Grupo;
          txtE_mail.Text = obj.E_mail;
          txtE_mail_alternativo.Text = obj.E_mail_Alternativo;
          txtEntidade.Text = obj.Entidade;
          txtCodigoAPS.Text = obj.Codigo;
          txtCPF.Text = obj.Cpf;
          cboNome.Text = obj.Nome;
          txtData_Nasc.Text = obj.Data_Nascimento.ToString("dd/MM/yyyy");
          txtEstado_Civil.Text = obj.Estado_civil;
          txtFuncao.Text = obj.Funcao;
          txtSexo.Text = obj.Sexo;
          txtOrcamentoViagem.Text = "";
          if (obj.Orcamento_Viagem != null)
            txtOrcamentoViagem.Text = obj.Orcamento_Viagem.Value.ToString("N");
          ckbAdministrador.Checked = obj.Sta_Administrador;
          cboEscola.SelectedIndex = -1;
          if (obj.Id_Escola != null)
            cboEscola.SelectedValue = obj.Id_Escola.Value;
        }
    
        private void PreencherObjeto(Usuario obj)
        {
          obj.Id_Usuario_Grupo = Convert.ToInt16(cboGrupoUsuario.SelectedValue);
          obj.Senha = txtSenha.Text;
          obj.E_mail = txtE_mail.Text;
          obj.E_mail_Alternativo = txtE_mail_alternativo.Text;
          obj.Cpf = txtCPF.Text;      
          obj.Orcamento_Viagem = null;
          if (!txtOrcamentoViagem.Text.Equals(""))
            obj.Orcamento_Viagem = Convert.ToDecimal(txtOrcamentoViagem.Text);
          obj.Sta_Senha = ckbTrocarSenha.Checked;
          obj.Sta_Administrador = ckbAdministrador.Checked;
          obj.Id_Escola = null;
          if (cboEscola.SelectedValue != null)
            obj.Id_Escola = int.Parse(cboEscola.SelectedValue.ToString());
        }
    
        private void butGravar_Click(object sender, EventArgs e)
        {
          Usuario obj = new Usuario();
          string codigoAPS = txtCodigoAPS.Text;
          try
          {
            if ((cboCodigo.Enabled) && (cboCodigo.SelectedValue != null))
              obj = (Usuario)cboCodigo.SelectedItem;
            else
              Validadores.ValidarSenha(txtSenha.Text, txtSenha_Confirma.Text, 4);
    
            Validadores.ValidarEmail(txtE_mail.Text);
            Validadores.ValidarEmail(txtE_mail_alternativo.Text);
    
            PreencherObjeto(obj);
    
            UsuarioManeger.Gravar(obj);
    
            butCancelar_Click(sender, e);
            init = false;
            CarregaGrid();
            init = true;
            cboCodigo.SelectedValue = codigoAPS;
            //ControleForms.LimparTudo(this);                      
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
          
        }
    
        private void butExcluir_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            try
            {
              DialogResult res = MessageBox.Show("Confirma a exclusão do registro?", "Confirmação de Exclusão", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
              if (res == DialogResult.Yes)
              {
                UsuarioManeger.Excluir((Usuario)cboCodigo.SelectedItem);
                CarregaGrid();
                ControleForms.LimparTudo(this);
                cboCodigo.Focus();
              }
              
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
          
          }
        }
    
        private void cboCodigo_Enter(object sender, EventArgs e)
        {
          UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void frmUsuario_KeyPress(object sender, KeyPressEventArgs e)
        {
          if (e.KeyChar == 13)
          {
            e.Handled = true;
            SendKeys.Send("{tab}");
          }
        }
    
        private void frmUsuario_FormClosed(object sender, FormClosedEventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
            UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void cboNome_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (cboNome.SelectedValue != null)
            PreencherCampos((Usuario)cboNome.SelectedItem);
          else if (ControleNumeros.IsInt(cboNome.Text))
          {
            cboNome.SelectedValue = cboNome.Text;
          }
    
        }
    
        private void butResetSenha_Click(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
          {
            frmTrocarSenha frm = new frmTrocarSenha((Usuario)cboCodigo.SelectedItem);
            frm.ShowDialog(this);
          }
        }
    
        private void txtOrcamentoViagem_Leave(object sender, EventArgs e)
        {
          txtOrcamentoViagem.Text = ControleNumeros.FormatarNumero(txtOrcamentoViagem.Text);
        }
    
        #endregion 
    
        #region Acesso por Grupo
        private void montarTreeGrupo(UsuarioGrupo vGrupo)
        {
          listAcessoGrupo = AcessoGrupoManager.LerLista(vGrupo);
          montarTreeGrupoPrivilegio(trvAcesso.Nodes);
        }
    
        private void montarTreeGrupoPrivilegio(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            AccessoGrupo acessGroup = listAcessoGrupo.Find(p => p.id_acesso == short.Parse(tn.Name));
            if (acessGroup != null)
            {
              tn.ImageIndex = 3;
              tn.SelectedImageIndex = 3;
            }
    
            if (tn.Nodes.Count > 0)
              montarTreeGrupoPrivilegio(tn.Nodes);
          }
        }
    
        #endregion
    
        #region Acesso Usuário
        private void montarTree()
        {
          listTree = AcessoManeger.LerListaTreeView();
          montarTree(-1, null);
        }
    
        private void montarTree(short IdAcessoSuperior, TreeNode superiorNode)
        {   
          List<Acesso> nList;
    
          if(IdAcessoSuperior < 1)
             nList = listTree.FindAll(p => p.Id_Acesso_Superior == -1);
          else
             nList = listTree.FindAll(p => p.Id_Acesso_Superior == IdAcessoSuperior);
    
          foreach (Acesso obj in nList)
          {
            TreeNode novoNode;
    
            if ((IdAcessoSuperior < 1) && (superiorNode == null))
              novoNode = trvAcesso.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
            else
              novoNode = superiorNode.Nodes.Add(obj.Id_Acesso_Superior.ToString(), obj.Desc_Acesso);
    
            novoNode.Name = obj.Id_Acesso.ToString();
            montarTree(obj.Id_Acesso, novoNode);
          }
    
        }
    
        private void montarTreeUsuario(Usuario vUsuario)
        {
          listTreeUsuario = AcessoUsuarioManeger.LerLista(vUsuario);
          montarTreeUsuarioPrivilegio(trvAcesso.Nodes);
        }
    
        private void montarTreeUsuarioPrivilegio(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            AcessoUsuario acessUsuario = listTreeUsuario.Find(p => p.Id_Acesso == short.Parse(tn.Name));
            if (acessUsuario != null)
            {
              tn.ImageIndex = acessUsuario.Privilegio;
              tn.SelectedImageIndex = acessUsuario.Privilegio;
            }
    
            if (tn.Nodes.Count > 0)
              montarTreeUsuarioPrivilegio(tn.Nodes);
          }
        }
    
    
    
        private void limparTree(TreeNodeCollection vNode)
        {
          foreach (TreeNode tn in vNode)
          {
            tn.ImageIndex = 2;
            tn.SelectedImageIndex = 2;
    
            if (tn.Nodes.Count > 0)
              limparTree(tn.Nodes);
          }
        }
        private List<AcessoUsuario> capturarAcessoTree(TreeNodeCollection vNode, List<AcessoUsuario> vList)
        {
          foreach (TreeNode tn in vNode)
          {
            if ((tn.ImageIndex != 2) && (tn.ImageIndex != 3))
            {
              AcessoUsuario obj = new AcessoUsuario();
    
              obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
              obj.Id_Acesso = short.Parse(tn.Name);
              obj.Privilegio = (short)tn.ImageIndex;
    
              vList.Add(obj); 
            }
    
            if (tn.Nodes.Count > 0)
              capturarAcessoTree(tn.Nodes, vList);
          }
    
          return vList;
        }
    
        private void toolAcessoTotal_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 1);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
        private void toolSomenteLeitura_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 0);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
        private void toolBloquear_Click(object sender, EventArgs e)
        {
          if (trvAcesso.SelectedNode != null)
          {
            preencherNodes(trvAcesso.SelectedNode, 2);
            preencherNodesParent(trvAcesso.SelectedNode, 1);
          }
        }
    
    
        private void preencherNodes(TreeNode Node, int nivel)
        {
    
          if ((nivel == 0) && (Node.Nodes.Count > 0))
            Node.ImageIndex = 1;
          else
            Node.ImageIndex = nivel;
    
          Node.SelectedImageIndex = Node.ImageIndex;
    
          if (Node.Nodes.Count > 0)
            foreach (TreeNode tn in Node.Nodes)
              preencherNodes(tn, nivel);          
          
        }
        private void preencherNodesParent(TreeNode Node, int nivel)
        { 
          if (Node.Parent != null)
          {
            if (nivel == 0)
              Node.Parent.ImageIndex = 1;
            else
              Node.Parent.ImageIndex = nivel;
    
            Node.Parent.SelectedImageIndex = Node.Parent.ImageIndex;
    
            if (Node.Parent.Parent != null)
              preencherNodesParent(Node.Parent, nivel);
          }
        }
    
        private void toolGravarAcesso_Click(object sender, EventArgs e)
        {
          try
          {
            AcessoUsuarioManeger.Gravar(capturarAcessoTree(trvAcesso.Nodes, new List<AcessoUsuario>()));
            MessageBox.Show("Alteração efetuada com Sucesso!", "Gravar Acesso!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
          }
          catch (Exception ex)
          {
            ControleForms.LimparTudo(this);
            TratarErro.AnalizarErro(ex);
          }
        }
    
        #endregion 
    
        #region Verba Usuário
    
        bool init_verba = false;
    
        private void CarregaDadosVerbaUsuario()
        {
          init_verba = false;
    
          listVerbaUsuario = VerbaUsuarioManeger.LerLista(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          cboCodigoVerbaUsuario.DataSource = listVerbaUsuario;
          dgvVerba.AutoGenerateColumns = false;
          dgvVerba.DataSource = listVerbaUsuario;
    
          cboVerba.DataSource = VerbaManeger.LerListaVerbaAtivaUsuario(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          init_verba = true;
        }
        
        private void cboCodigoVerbaUsuario_SelectedIndexChanged(object sender, EventArgs e)
        {
          if (init_verba)
          {
            if (cboCodigoVerbaUsuario.SelectedValue != null)
            {
              try
              {
                if (listVerbaUsuario.Find(p => p.Id_Verba_Vinculada == ((Verba)cboCodigoVerbaUsuario.SelectedItem).Id_Verba && p.Vinculo_Complementar == true) != null)
                {
                  ControleForms.Limpar(panelVerba);
                  throw new Exception("Verba complementar! Não pode ser editada!");
                }
    
                HabilitaLimitePercentual((Verba)cboCodigoVerbaUsuario.SelectedItem);
                PreencherCamposVerba((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem);
                cboCodigoVerbaUsuario.Text = cboCodigoVerbaUsuario.SelectedValue.ToString();
              }
              catch (Exception ex)
              {
                ControleForms.Limpar(this);
                TratarErro.AnalizarErro(ex);
              }
    
            }
            else if (ControleNumeros.IsInt(cboCodigoVerbaUsuario.Text))
            {
              cboCodigoVerbaUsuario.SelectedValue = Convert.ToInt16(cboCodigoVerbaUsuario.Text);
              if (cboCodigoVerbaUsuario.SelectedValue == null)
                ControleForms.Limpar(this);
            }
          }
        }
    
        private void PreencherCamposVerba(VerbaUsuario obj)
        {
          cboCodigoVerbaUsuario.SelectedValue = obj.Id_Verba;
          cboVerba.Text = obj.Desc_Verba;
          dtpDataValidade.Value = obj.Data_Validade;
          txtPercentual.Text = obj.Percentual.ToString();
          ckbVerbaAnual.Checked = obj.Anual;
          ckbVerbaMensal.Checked = obj.Mensal;
          txtLimite.Text = "";
          if(obj.Limite != null)
           txtLimite.Text = obj.Limite.Value.ToString("N");
        }
    
        private void PreencherObjetoVerba(VerbaUsuario obj)
        {
          obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
          short Id_Tipo_Relatorio;
          if (cboVerba.SelectedValue != null)
          {
            obj.Id_Verba = ((Verba)cboVerba.SelectedItem).Id_Verba;
            Id_Tipo_Relatorio = ((Verba)cboVerba.SelectedItem).Id_Tipo_Relatorio;
          }
          else
          {
            obj.Id_Verba = ((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem).Id_Verba;
            Id_Tipo_Relatorio = ((Verba)cboCodigoVerbaUsuario.SelectedItem).Id_Tipo_Relatorio;
          }
          if (!txtLimite.Text.Equals(""))
            obj.Limite = Convert.ToDecimal(txtLimite.Text);
          else if ((txtLimite.Text.Equals("")) && (Id_Tipo_Relatorio != 40))
            throw new ApplicationException("Preencha o campo 'Limite'!");
          
          obj.Percentual = Convert.ToInt16(txtPercentual.Text);
          obj.Data_Validade = dtpDataValidade.Value.Date;
        }
    
        private void cboVerba_SelectedIndexChanged(object sender, EventArgs e)
        {
          txtLimite.Text = "";
    
          if ((!cboCodigoVerbaUsuario.Enabled) && (cboVerba.SelectedValue != null))
          {
            txtPercentual.Text = ((Verba)cboVerba.SelectedItem).Percentual.ToString();
            ckbVerbaAnual.Checked = ((Verba)cboVerba.SelectedItem).Anual;
            ckbVerbaMensal.Checked = ((Verba)cboVerba.SelectedItem).Mensal;
    
            if(((Verba)cboVerba.SelectedItem).Limite != null)
              txtLimite.Text = ((Verba)cboVerba.SelectedItem).Limite.Value.ToString("N2");
          }
    
          if (cboVerba.SelectedValue != null)
            HabilitaLimitePercentual((Verba)cboVerba.SelectedItem);
        }
    
        private void HabilitaLimitePercentual(Verba vVerbaUsuario)
        {
          if (vVerbaUsuario.Id_Tipo_Relatorio == 40)
          {
            txtLimite.ReadOnly = true;
            txtPercentual.ReadOnly = true;
    
            if (vVerbaUsuario.Mensal)
              txtLimite.ReadOnly = false;
            
          }
          else
          {
            txtLimite.ReadOnly = false;
            txtPercentual.ReadOnly = true;
            if(vVerbaUsuario.Percentual_Variavel)
              txtPercentual.ReadOnly = false;
    
          }
        }
    
        private void butNovaVerba_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelVerba);
          butCancelarVerba.Enabled = true;
          butNovaVerba.Enabled = false;
          butExcluirVerba.Enabled = false;
          cboCodigoVerbaUsuario.Enabled = false;
          cboVerba.Enabled = true;
          dgvVerba.Enabled = false;
    
          dtpDataValidade.Value = Convert.ToDateTime("31/12/" + DateTime.Now.Year);
    
          cboVerba.Focus();
    
          cboVerba.Text = "";
        }
    
        private void butCancelarVerba_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(tabVerbas);
          butCancelarVerba.Enabled = false;
          butNovaVerba.Enabled = true;
          butExcluirVerba.Enabled = true;
          cboCodigoVerbaUsuario.Enabled = true;
          cboVerba.Enabled = false;
          dgvVerba.Enabled = true;
    
        }
    
        private void butGravarVerba_Click(object sender, EventArgs e)
        {
          VerbaUsuario obj = new VerbaUsuario();
    
          try
          {
            if (((cboCodigoVerbaUsuario.Enabled) && (cboCodigoVerbaUsuario.SelectedValue != null)) || (!cboCodigoVerbaUsuario.Enabled))
            {
              PreencherObjetoVerba(obj);
    
              VerbaUsuarioManeger.Gravar(obj);                    
              CarregaDadosVerbaUsuario();
              ControleForms.Limpar(panelVerba);
              dtpDataValidade.Value = Convert.ToDateTime("31/12/" + DateTime.Now.Year);
              butCancelarVerba_Click(sender, e);
              cboCodigoVerbaUsuario.Focus();          
            }
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
    
        private void butExcluirVerba_Click(object sender, EventArgs e)
        {
          if (cboCodigoVerbaUsuario.SelectedValue != null)
          {
            try
            {
              VerbaUsuarioManeger.Excluir((VerbaUsuario)cboCodigoVerbaUsuario.SelectedItem);
              CarregaDadosVerbaUsuario();
              ControleForms.Limpar(panelVerba);
              cboCodigoVerbaUsuario.Focus();
    
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
    
          }
        }
    
        private void txtLimite_Leave(object sender, EventArgs e)
        {
          if (!string.IsNullOrEmpty(txtLimite.Text))
            txtLimite.Text = Decimal.Parse(txtLimite.Text).ToString("N2");
        }
        #endregion
    
        #region Bonus
        private void cboVerbaBonus_SelectedIndexChanged(object sender, EventArgs e)
        {
          if(cboVerbaBonus.SelectedValue != null)        
            if (butNovoBonus.Enabled == true)
              txtValorBonus.Text = ((Bonus)cboVerbaBonus.SelectedItem).Valor.Value.ToString("C2");
    
        }
    
        private void CarregaDadosBonus()
        {
          cboVerbaBonus.DataSource = null;
          cboVerbaBonus.DisplayMember = "Desc_Verba_Periodo";
    
          listBonus = BonusManeger.LerLista(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          
          cboVerbaBonus.DataSource = listBonus;
          dgvDadosBonus.AutoGenerateColumns = false;
          dgvDadosBonus.DataSource = listBonus;
        }
    
        private void butNovoBonus_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelBonus);
          butCancelBonus.Enabled = true;
          butNovoBonus.Enabled = false;
          butExcluirBonus.Enabled = false;
    
          cboVerbaBonus.DisplayMember = "desc_verba";
          cboVerbaBonus.DataSource = VerbaUsuarioManeger.LerListaVerbasSemBonus(((Usuario)cboCodigo.SelectedItem).Id_Usuario, frmLogin.PeriodoAtual.Id_Periodo);
    
          dgvDadosBonus.Enabled = false;
    
          cboVerbaBonus.Text = "";
        }
    
        private void butCancelBonus_Click(object sender, EventArgs e)
        {
          ControleForms.Limpar(panelBonus);
          butCancelBonus.Enabled = false;
          butNovoBonus.Enabled = true;
          butExcluirBonus.Enabled = true;
    
          CarregaDadosBonus();
    
          dgvDadosBonus.Enabled = true;
    
          cboVerbaBonus.Text = "";
        }
    
        private void butGravarBonus_Click(object sender, EventArgs e)
        {
          try
          { 
            if (cboVerbaBonus.SelectedValue != null)
            {
              Bonus obj;
              if (butNovoBonus.Enabled)
                obj = (Bonus)cboVerbaBonus.SelectedItem;
              else
              {            
                obj = new Bonus();
                obj.Entidade = ((Usuario)cboCodigo.SelectedItem).Entidade;
                obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
                obj.Id_Verba = ((VerbaUsuario)cboVerbaBonus.SelectedItem).Id_Verba;
                obj.Id_Periodo = frmLogin.PeriodoAtual.Id_Periodo;
              }
    
              obj.Valor = Convert.ToDecimal(txtValorBonus.Text);
    
              BonusManeger.Gravar(obj);
    
              CarregaDadosBonus();
              ControleForms.Limpar(panelBonus);
              butCancelBonus_Click(sender, e);
            }
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
    
        private void butExcluirBonus_Click(object sender, EventArgs e)
        {
          if (cboVerbaBonus.SelectedValue != null)
          {
            try
            {
              BonusManeger.Excluir((Bonus)cboVerbaBonus.SelectedItem);
              CarregaDadosBonus();
              ControleForms.Limpar(panelBonus);
    
            }
            catch (Exception ex)
            {
              TratarErro.AnalizarErro(ex);
            }
    
          }
        }
    
        private void txtValorBonus_Leave(object sender, EventArgs e)
        {
          txtValorBonus.Text = ControleNumeros.FormatarNumero(txtValorBonus.Text);
        }
    
        #endregion
    
        #region Entidade
    
        private void CarregaDadosEntidade()
        {
          listaEntidadeUsuario = EntidadeManeger.LerListaEntidadeUsuario(((Usuario)cboCodigo.SelectedItem).Id_Usuario);
    
          dgvEntidade.AutoGenerateColumns = false;
          dgvEntidade.DataSource = listaEntidadeUsuario;
        }
    
        private void butGravarEntidade_Click(object sender, EventArgs e)
        {
          try
          {
            Entidade obj = new Entidade();
    
            obj.Codigo = cboEntidade.SelectedValue.ToString();
            obj.Id_Usuario = ((Usuario)cboCodigo.SelectedItem).Id_Usuario;
    
            EntidadeManeger.GravarEntidadeUsuario(obj);
    
            CarregaDadosEntidade();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
    
        }
    
    
    
        private void dgvEntidade_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          try
          {
            EntidadeManeger.ExcluirEntidadeUsuario((Entidade)dgvEntidade.CurrentRow.DataBoundItem);
    
            CarregaDadosEntidade();
          }
          catch (Exception ex)
          {
            TratarErro.AnalizarErro(ex);
          }
        }
        #endregion
    
        private void frmUsuario_Leave(object sender, EventArgs e)
        {
          if (cboCodigo.SelectedValue != null)
           UsuarioManeger.TravarDestravarRegistro(cboCodigo.SelectedValue.ToString(), false);
        }
    
        private void dgvDados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigo.SelectedValue = ((Usuario)dgvDados.CurrentRow.DataBoundItem).Codigo;
        }
    
        private void dgvVerba_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboCodigoVerbaUsuario.SelectedValue = ((Verba)dgvVerba.CurrentRow.DataBoundItem).Id_Verba;
        }
    
        private void dgvDadosBonus_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
          cboVerbaBonus.SelectedValue = ((Bonus)dgvDadosBonus.CurrentRow.DataBoundItem).Id_Verba;
        }
      }
    }
    
    
    quinta-feira, 7 de outubro de 2010 19:35
  • Parabens pelo ato de postar a solução, pois poderá servi para outras pessoas com a mesma duvida.
    Esta resposta lhe ajudou? Marque a como útil. -- www.EdgarEsteves.com.br
    quinta-feira, 7 de outubro de 2010 23:45