public static List <OpcionXPerfil_EL> SetearMenu(PerfilEL Rol, bool padre) { OpcionXPerfil_EL opcionesXPerfil = new OpcionXPerfil_EL() { Rol = Rol }; string postdata = JsonConvert.SerializeObject(opcionesXPerfil); var lista = JsonConvert.DeserializeObject <List <OpcionXPerfil_EL> >(Utilitario.Accion.Conect_WEBAPI("OpcionXPerfil", "GET", "", opcionesXPerfil.Rol.Id.ToString())); //menuBL.ListMenu(opcionesXPerfil); List <OpcionXPerfil_EL> menuArbol = new List <OpcionXPerfil_EL>(); //primero seteamos los padres foreach (OpcionXPerfil_EL m in lista.Where(x => x.Opcion.PadreId == 0)) { AsignarMenu(menuArbol, m); } //seteamos los hijos if (!padre) { foreach (OpcionXPerfil_EL m in lista.Where(x => x.Opcion.PadreId != 0)) { AsignarMenu(menuArbol, m); } } return(menuArbol); }
// Arma el arbol de menus del usuario. private static bool AsignarMenu(List <OpcionXPerfil_EL> menuLista, OpcionXPerfil_EL opcionXPerfil) { if (menuLista == null) { return(false); } if (opcionXPerfil.Opcion.PadreId == 0) { menuLista.Add(opcionXPerfil); return(true); } bool agregado = false; foreach (var m in menuLista) { if (m.Opcion.Id == opcionXPerfil.Opcion.PadreId) { if (m.Hijos == null) { m.Hijos = new List <OpcionXPerfil_EL>(); } m.Hijos.Add(opcionXPerfil); agregado = true; break; } } if (!agregado) { foreach (var m in menuLista) { //agregado = AsignarMenu(m.Hijos, opcion); if (agregado) { break; } } } return(agregado); }
public List <OpcionXPerfil_EL> ListMenu(OpcionXPerfil_EL opcionPerfil) { using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena)) { con.Open(); using (SqlCommand com = new SqlCommand("spOpcionXPerfil", con)) { com.CommandType = CommandType.StoredProcedure; com.Parameters.Add("@IdRol", SqlDbType.Int).Value = opcionPerfil.Rol.Id; List <OpcionXPerfil_EL> lstMenu = new List <OpcionXPerfil_EL>(); using (IDataReader dataReader = com.ExecuteReader()) { while (dataReader.Read()) { OpcionXPerfil_EL item = new OpcionXPerfil_EL(); Opcion_EL opcion = OPCION_DA.Opcion.GetOpcionByID((int)dataReader["OpcionId"]); item.Opcion = opcion; Rol_EL rol = new Rol_EL() { Id = dataReader["IdRol"] != DBNull.Value ? (int)dataReader["IdRol"] : 0, Nombre = dataReader["Perfil"] != DBNull.Value ? (string)dataReader["Perfil"] : "" }; item.Rol = rol; if (dataReader["Escritura"] != DBNull.Value) { item.Escritura = (bool)dataReader["Escritura"]; } lstMenu.Add(item); } } return(lstMenu); } } }
//================================================================ // CONTROL PRODUCCION ========================================= public List <OpcionXPerfil_EL> ListMenu(OpcionXPerfil_EL opcionPerfil) { return(OpcionXPerfil_DA.OpcionXPerfil.ListMenu(opcionPerfil)); }