Example #1
0
        private static void AgregarOpcionesAnidadas(ResponseOpcionUI respuestaPermiso, IEnumerable <ErickOrlando.Seguridad.Negocio.Editables.Permiso> lista)
        {
            //Filtramos los ítems de esta opcion
            var listaFiltrada = lista.Where(l => l.IdOpcionPadre == respuestaPermiso.IdOpcion);

            foreach (var permiso in listaFiltrada)
            {
                var permisoOpcion = new ResponseOpcionUI
                {
                    IdOpcion      = permiso.IdOpcion,
                    Codigo        = permiso.Codigo,
                    NombreControl = permiso.Opcion,
                    ControlPadre  = permiso.OpcionPadre,
                    Tipo          = permiso.Tipo,
                    Clase         = permiso.Clase,
                    Url           = permiso.Url,
                    Conceder      = true,
                    NumeroOrden   = permiso.NroOrden
                };
                AgregarOpcionesAnidadas(permisoOpcion, lista);
                if (!respuestaPermiso.Opciones.Contains(permisoOpcion))
                {
                    respuestaPermiso.Opciones.Add(permisoOpcion);
                }
            }
        }
        private static bool tieneHijos(ResponseOpcionUI menu)
        {
            //var menus = menu.Opciones.Where(x => x.Clase == "Menu").ToList();
            var menus = menu.Opciones;

            if (menus.Count > 0)
            {
                Boolean encontrado = false;
                foreach (var item in menu.Opciones)
                {
                    if (tieneHijos(item))
                    {
                        encontrado = true;
                        break;
                    }
                }
                return(encontrado);
            }
            else
            {
                if (string.IsNullOrEmpty(menu.ControlPadre))
                {
                    return(false);
                }
                else
                {
                    return(menu.Clase == "Menu" && !string.IsNullOrEmpty(menu.Url));
                }
            }
        }
Example #3
0
        private static IEnumerable <ResponseOpcionUI> ListarOpciones(PerfilUsuarioInfo perfilNegocio, IEnumerable <string> roles)
        {
            var response = new List <ResponseOpcionUI>();
            //var lis = new List<ResponseOpcionUI>();
            //var Opcion = new ResponseOpcionUI();
            //int count1 = 0;
            //int count2 = 0;
            //List<string> ListString;

            var RolesPermisos = new List <List <ResponseOpcionUI> >();

            foreach (var rolPerfil in perfilNegocio.Roles.Where(r => roles.Contains(r.IdRol)))
            {
                var RolPerfil = new List <ResponseOpcionUI>();

                var lista = rolPerfil.Permisos.Where(p => p.Conceder.Equals(true));
                foreach (var permiso in lista.Where(p => p.Nivel == 1))
                {
                    var respuestaPermiso = new ResponseOpcionUI
                    {
                        IdOpcion      = permiso.IdOpcion,
                        Codigo        = permiso.Codigo,
                        Clase         = permiso.Clase,
                        Tipo          = permiso.Tipo,
                        Url           = permiso.Url,
                        NombreControl = permiso.Opcion,
                        ControlPadre  = permiso.OpcionPadre,
                        Conceder      = true,
                        NumeroOrden   = permiso.NroOrden
                    };
                    AgregarOpcionesAnidadas(respuestaPermiso, lista);
                    if (!RolPerfil.Contains(respuestaPermiso))
                    {
                        RolPerfil.Add(respuestaPermiso);
                    }
                    #region "Código Version Anterior"
                    //else
                    //{
                    //    count1 = 0;
                    //    foreach (var rsp in response)
                    //    {
                    //        if (rsp.NombreControl == respuestaPermiso.NombreControl)
                    //        {
                    //            foreach (var nivel1 in respuestaPermiso.Opciones)
                    //            {
                    //                if (!rsp.Opciones.Contains(nivel1))
                    //                {
                    //                    Opcion = nivel1;
                    //                    InsertNivel(response, Opcion, count1, count2, 1);
                    //                }

                    //                count2 = 0;
                    //                foreach (var nivel2 in respuestaPermiso.Opciones[count1].Opciones)
                    //                {
                    //                    if (!rsp.Opciones[count2].Opciones[count2].Codigo.Contains(nivel2.Codigo))
                    //                    {
                    //                        Opcion = nivel2;
                    //                        InsertNivel(response, Opcion, count1, count2, 2);
                    //                    }
                    //                }
                    //                count2++;
                    //            }
                    //        }
                    //        count1++;
                    //    }
                    //}



                    //lis = response;

                    //AgregarOpcionesAnidadas(respuestaPermiso, lista);
                    //if (!response.Contains(respuestaPermiso))
                    //{
                    //    response.Add(respuestaPermiso);
                    //    lis.Add(respuestaPermiso);
                    //}
                    //else
                    //{

                    //    int nivel1 = 0;
                    //    foreach (var rsp in response)
                    //    {
                    //        if (rsp.NombreControl == respuestaPermiso.NombreControl)
                    //        {
                    //            foreach (var op in rsp.Opciones)
                    //            {

                    //                if (respuestaPermiso.Opciones.Count > 0)
                    //                {

                    //                    foreach (var RspOp in respuestaPermiso.Opciones)
                    //                    {
                    //                        if (!op.IdOpcion.Contains(RspOp.IdOpcion))
                    //                        {
                    //                            var clonado = RspOp.cl;

                    //                            lis[nivel1].Opciones.Add(clonado);

                    //                            //rsp.Opciones.Add(respuestaPermiso.Opciones[count]);
                    //                            break;
                    //                        }
                    //                    }
                    //                }
                    //            }
                    //        }


                    //        nivel1 += 1;
                    //    }
                    //}
                    #endregion
                }

                RolesPermisos.Add(RolPerfil);
            }

            var ultimorol = RolesPermisos[0];
            for (int i = 1; i < RolesPermisos.Count; i++)
            {
                ultimorol = MergePermisos(ultimorol, RolesPermisos[i]);
            }

            response.AddRange(ultimorol);

            //ListString = getPermisos(response);

            return(response);
        }