예제 #1
0
        private void MostrarRolesAsignados(string usuarioSistema)
        {
            try
            {
                LIST_ROLES_SIS = null;
                rtvRolesDisponibles.Nodes.Clear();
                rtvRolesAsignados.Nodes.Clear();
                //Roles disponibles
                List <E.VMRol> roles = LIST_ROLES_SIS;
                //Roles asignados
                List <E.VMRol> rolesAsignados = new NegocioAdmin(sistema.USR_LOGIN, sistema.PASS).ObtenerRolesUsuario(usuarioSistema,
                                                                                                                      Convert.ToInt32(ddlSistemas.SelectedItem.Value));

                var rolesDisponibles = (from x in roles
                                        group x by x.IdPais into rolPais
                                        select new
                {
                    idPais = rolPais.Key,
                    roles = rolPais.ToList()
                }).ToList();


                for (int i = 0; i < rolesDisponibles.Count(); i++)
                {
                    RadTreeNode nodoPais = new RadTreeNode(rolesDisponibles[i].roles[0].Pais, rolesDisponibles[i].idPais.ToString());
                    nodoPais.AllowDrag = false;
                    nodoPais.AllowDrop = false;

                    foreach (E.VMRol rol in rolesDisponibles[i].roles)
                    {
                        if (rolesAsignados.Where(x => x.IdRol == rol.IdRol).FirstOrDefault() == null)
                        {
                            RadTreeNode nodoItem = new RadTreeNode(rol.Nombre, rol.IdRol.ToString());
                            nodoItem.Attributes.Add("Descripcion", rol.Descripcion);
                            nodoItem.AllowDrag = true;
                            nodoItem.AllowDrop = true;
                            nodoPais.Nodes.Add(nodoItem);
                        }
                    }
                    if (nodoPais.Nodes.Count > 0)
                    {
                        rtvRolesDisponibles.Nodes.Add(nodoPais);
                    }
                }

                //Muestra roles asigandos
                var rolesUsuario = (from x in rolesAsignados
                                    group x by x.IdPais into rolPais
                                    select new
                {
                    idPais = rolPais.Key,
                    roles = rolPais.ToList()
                }).ToList();


                for (int i = 0; i < rolesUsuario.Count(); i++)
                {
                    RadTreeNode nodoPais = new RadTreeNode(rolesUsuario[i].roles[0].Pais, rolesUsuario[i].idPais.ToString());
                    nodoPais.AllowDrag = false;
                    nodoPais.AllowDrop = false;

                    foreach (E.VMRol rol in rolesUsuario[i].roles)
                    {
                        RadTreeNode nodoItem = new RadTreeNode(rol.Nombre, rol.IdRol.ToString());
                        nodoItem.Attributes.Add("Descripcion", rol.Descripcion);
                        nodoItem.AllowDrag = true;
                        nodoItem.AllowDrop = true;
                        nodoPais.Nodes.Add(nodoItem);
                    }

                    rtvRolesAsignados.Nodes.Add(nodoPais);
                }


                rtvRolesDisponibles.ExpandAllNodes();
                rtvRolesDisponibles.DataBind();

                rtvRolesAsignados.ExpandAllNodes();
                rtvRolesAsignados.DataBind();


                lblNomUsuarioSel.InnerText = usuarioSistema;
                ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "openWinRoles", "openWinRoles()", true);
            }
            catch (Exception ex)
            {
                MostrarErrorRoles(ex.Message);
            }
        }