public async Task <String> ResolveDataModelAsync(TemplatedMessage msg, String text) { if (text.IndexOf("{{") == -1) { return(text); } var dm = await msg.GetDataModelAsync(_dbContext, _msgParams); return(dm.Root.Resolve(text)); }
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); } }
public async Task <Stream> ResolveStreamAsync(TemplatedMessage msg, String text) { if (text == null) { return(null); } if (text.StartsWith("`")) { text = text.Substring(1); } if (text.IndexOf("{{") == -1) { return(null); } var dm = await msg.GetDataModelAsync(_dbContext, _msgParams); var bytes = dm.Root.Eval <Byte[]>(text.Substring(2, text.Length - 4)); if (bytes == null || bytes.Length == 0) { return(null); } return(new MemoryStream(bytes)); }
public async Task <Stream> ResolveStreamStringAsync(TemplatedMessage msg, String text) { if (text == null) { return(null); } if (text.StartsWith("`")) { text = text.Substring(1); } if (text.IndexOf("{{") == -1) { return(null); } var dm = await msg.GetDataModelAsync(_dbContext, _msgParams); var data = dm.Root.Eval <String>(text.Substring(2, text.Length - 4)); if (String.IsNullOrEmpty(data)) { return(null); } return(new MemoryStream(Encoding.UTF8.GetBytes(data))); }