Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }