public List<GrupoPermiso> TraerGruposPermiso() { try { List<GrupoPermiso> permisos = new List<GrupoPermiso>(); GrupoPermiso permiso = null; using (SqlConnection conexion = Conexion.ObtenerInstancia().CrearConexionSQL()) { using (SqlCommand comando = conexion.CreateCommand()) { comando.CommandType = CommandType.StoredProcedure; comando.CommandText = "SPS_Grupos_Permiso"; comando.Connection.Open(); SqlDataReader dataReader = comando.ExecuteReader(CommandBehavior.CloseConnection); while (dataReader.Read()) { permiso = new GrupoPermiso(); permiso.ID = Convert.ToInt16(dataReader["ID"]); permiso.Descripcion = dataReader["DESCRIPCION"].ToString(); permiso.Accion = Convert.ToInt16(dataReader["ACCION"]); if (permiso.TieneHijos()) { List<PermisoBase> permisosHijos = TraerPermisosHijos(permiso.ID); if (permisosHijos != null) { foreach (PermisoBase per in permisosHijos) { permiso.AgregarHijo(per); } } } permisos.Add(permiso); } } } return permisos; } catch (AccesoBDException ex) { throw new SecurityDAOException("TraerGruposPermiso", "AccesoBD", ex.Message, ex); } catch (SqlException ex) { throw new SecurityDAOException("TraerGruposPermiso", "SQL", ex.Message, ex); } catch (Exception ex) { throw new SecurityDAOException("TraerGruposPermiso", "General: " + ex.GetType().ToString(), ex.Message, ex); } }