using DevExpress.XtraReports.UI; using DevExpress.XtraReports.Services; using EnvelopeGenerator.WebUI.Client.PredefinedReports; namespace EnvelopeGenerator.WebUI.Client.Services { public class CustomReportProvider : IReportProviderAsync { private readonly InMemoryReportStorageWebExtension reportStorage; public CustomReportProvider(InMemoryReportStorageWebExtension reportStorage) { this.reportStorage = reportStorage; } public Task GetReportAsync(string id, ReportProviderContext context) { if(reportStorage.TryGetReport(id, out var savedReport)) return Task.FromResult(savedReport); return Task.FromResult(ReportsFactory.GetReport(id)); } } }