/// <summary> /// Preload reports that are used in access rules. /// </summary> private static void PreloadAccessRuleReports( ) { var authReports = Entity.GetInstancesOfType <AccessRule>(true, "accessRuleReport.isOfType.id") .Select(auth => auth.AccessRuleReport) .Where(r => r != null) .Select(r => r.Id) .Distinct( ); foreach (long reportId in authReports) { try { ReportHelpers.PreloadQuery(new EntityRef(reportId)); } catch (Exception ex) { EventLog.Application.WriteError("Access rule report {0} failed to preload\n{1}", reportId, ex); } } }
/// <summary> /// Converts a report into a structured query object. /// </summary> /// <param name="report">The report to convert</param> /// <param name="settings">Conversion settings.</param> /// <returns>The structured query.</returns> public static StructuredQuery ConvertReport(Report report, ReportToQueryConverterSettings settings) { if (report == null) { throw new ArgumentNullException(); } if (settings == null) { settings = ReportToQueryConverterSettings.Default; } Report reportToLoad = report; if (report.RootNode == null) { throw new ArgumentException(string.Format("Invalid report '{0}' to load the structured query", report.Id)); } // Preload the entities if (!settings.SuppressPreload) { ReportHelpers.PreloadQuery(reportToLoad.Id); } // Create context that contains information for conversion FromEntityContext fromEntityContext = new FromEntityContext { Report = reportToLoad, Settings = settings }; // Convet the report entity StructuredQuery sq = BuildStructuredQuery(fromEntityContext, settings); // Attach the report to the structured query (why??) sq.Report = report; return(sq); }