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; }