Esempio n. 1
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);
        }
 public override void CargaDatosActuales()
 {
     base.CargaDatosActuales();
     _PerfilUsuario = ObjetoLista.Current as PerfilUsuarioInfo;
 }
 public override void CargaDatosActuales()
 {
     base.CargaDatosActuales();
     _PerfilUsuario = ObjetoLista.Current as PerfilUsuarioInfo;
 }