Usuário com melhor resposta
Pegar acesso por grupo em uma treeview

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 } }
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; } } }
- Marcado como Resposta Moizés Cerqueira 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; } } }
- Marcado como Resposta Moizés Cerqueira quinta-feira, 7 de outubro de 2010 19:35
-