60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
public async Task CreateCustomOfferReport(CrudAPI api, GiftProject giftProject)
|
|
{
|
|
var reportName = "Offerte 3";
|
|
var report = await LoadReport(api, reportName);
|
|
|
|
var order = ConvertProjectToOrder(giftProject);
|
|
|
|
report.DataSource = new List()
|
|
{
|
|
new UnicontaMasterDetail()
|
|
{
|
|
Master = order,
|
|
Details = order.OfferLines.ToArray()
|
|
}
|
|
};
|
|
|
|
var stream = new MemoryStream();
|
|
var pdfOptions = new PdfExportOptions();
|
|
await report.ExportToPdfAsync(stream, pdfOptions);
|
|
stream.Position = 0;
|
|
var data = stream.ToArray();
|
|
var fileName = "Offerte 123";
|
|
var attachment = new UserDocsClient()
|
|
{
|
|
_Data = data,
|
|
_Text = fileName,
|
|
_DocumentType = FileextensionsTypes.PDF
|
|
};
|
|
return attachment;
|
|
}
|
|
|
|
private static async Task LoadReport(CrudAPI api, string reportName)
|
|
{
|
|
var apiWrapper = new ApiWrapper(api);
|
|
|
|
var reports = await apiWrapper.Filter()
|
|
.WhereEqual(x => x.Name, reportName)
|
|
.Run();
|
|
var reportRow = reports.FirstOrDefault();
|
|
if (reportRow == null)
|
|
throw new Exception($"Kon rapport '{reportName}' niet vinden!");
|
|
// Load Layout bytes in repord
|
|
_ = await api.Read(reportRow);
|
|
var reportLayout = reportRow.Layout;
|
|
if (reportLayout == null)
|
|
throw new Exception($"Kon rapport '{reportName}' layout niet laden!");
|
|
|
|
XtraReport report;
|
|
try
|
|
{
|
|
report = ReportUtil.GetXtraReportFromLayout(reportLayout);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
report = null;
|
|
}
|
|
if (report == null)
|
|
throw new Exception($"Kon rapport '{reportName}' niet laden! (error while loading layout)");
|
|
return report;
|
|
} |