async Task <AttachementForSend> ResolveReportAsync(MessageReport rep, MessageResolver resolver) { var repName = await resolver.ResolveAsync(this, rep.Name); if (repName == null) { repName = "report"; } repName = Path.ChangeExtension(repName.Trim(), ".pdf"); var ma = new AttachementForSend() { Name = repName, Mime = MimeTypes.Application.Pdf, Stream = await resolver.ResolveReportAsync(this, rep) }; return(ma); }
public async Task <Stream> ResolveReportAsync(TemplatedMessage msg, MessageReport rep) { if (rep == null) { return(null); } _reportHelper.SetupLicense(); var dm = await msg.GetDataModelAsync(_dbContext, _msgParams); // get report source using (Stream input = await ResolveStreamStringAsync(msg, rep.Report)) { if (input == null) { throw new MessagingException($"ReportStream not found ({rep.Report})."); } // get report datamodel IDataModel repDataModel = null; if (rep.Model != null) { var repPrms = new ExpandoObject(); if (rep.Model.Parameters != null) { foreach (var p in rep.Model.Parameters) { repPrms.Set(p.Key, await ResolveAsync(msg, p.Value?.Value)); } } repDataModel = await _dbContext.LoadModelAsync(rep.Model.Source, $"[{rep.Model.Schema}].[{rep.Model.Model}.Report]", repPrms); } var ms = new MemoryStream(); var repName = await _reportHelper.ExportDocumentAsync(input, repDataModel, ms); ms.Seek(0, SeekOrigin.Begin); return(ms); } }