public async Task <Object> InvokeAsync(Int64 UserId, Int32 TenantId, Int64 Id, String Report, String Model, String Schema) { _reportHelper.SetupLicense(); var dm = await _dbContext.LoadModelAsync(String.Empty, $"[{Schema}].[{Model}.Report]", new { UserId, TenantId, Id }); using (var stream = CreateStream(dm, Report)) { var r = StiReportExtensions.CreateReport(stream, String.Empty); r.AddDataModel(dm); using (var ms = new MemoryStream()) { r.Render(); r.ExportDocument(StiExportFormat.Pdf, ms, StiReportExtensions.GetDefaultPdfSettings()); ms.Seek(0, SeekOrigin.Begin); AttachmentUpdateInfo ai = new AttachmentUpdateInfo() { UserId = UserId, TenantId = TenantId, Id = Id, Mime = "application/pdf", Stream = ms, Name = r.ReportName }; if (String.IsNullOrEmpty(ai.Name)) { ai.Name = "Attachment"; } await _dbContext.ExecuteAsync(String.Empty, $"[{Schema}].[{Model}.SaveAttachment]", ai); return(new { ai.Id }); } } }
public async Task <Object> InvokeAsync(Int64 UserId, Int32 TenantId, Int64 Id, String Report, String Model, String Schema) { _reportHelper.SetupLicense(); var dm = await _dbContext.LoadModelAsync(String.Empty, $"[{Schema}].[{Model}.Report]", new { UserId, TenantId, Id }); String path = _host.ApplicationReader.MakeFullPath(Report, String.Empty); path = Path.ChangeExtension(path, ".mrt"); if (!_host.ApplicationReader.FileExists(path)) { throw new FileNotFoundException(path); } var r = StiReportExtensions.CreateReport(_host.ApplicationReader.FileStreamFullPathRO(path), String.Empty); r.AddDataModel(dm); using (var ms = new MemoryStream()) { r.Render(); r.ExportDocument(StiExportFormat.Pdf, ms, StiReportExtensions.GetDefaultPdfSettings()); ms.Seek(0, SeekOrigin.Begin); AttachmentUpdateInfo ai = new AttachmentUpdateInfo() { UserId = UserId, TenantId = TenantId, Id = Id, Mime = "application/pdf", Stream = ms, Name = r.ReportName }; if (String.IsNullOrEmpty(ai.Name)) { ai.Name = "Attachment"; } await _dbContext.ExecuteAsync(String.Empty, $"[{Schema}].[{Model}.SaveAttachment]", ai); return(new { ai.Id }); } }