DigitalDoor.Reporting.Extensions
1.16.59
dotnet add package DigitalDoor.Reporting.Extensions --version 1.16.59
NuGet\Install-Package DigitalDoor.Reporting.Extensions -Version 1.16.59
<PackageReference Include="DigitalDoor.Reporting.Extensions" Version="1.16.59" />
paket add DigitalDoor.Reporting.Extensions --version 1.16.59
#r "nuget: DigitalDoor.Reporting.Extensions, 1.16.59"
// Install DigitalDoor.Reporting.Extensions as a Cake Addin #addin nuget:?package=DigitalDoor.Reporting.Extensions&version=1.16.59 // Install DigitalDoor.Reporting.Extensions as a Cake Tool #tool nuget:?package=DigitalDoor.Reporting.Extensions&version=1.16.59
DigitalDoor.Reporting
Using DigitalDoor Reporting to create ViewModel and use to export in PDF or use in DigitalDoor.Reporting.Blazor to preview in HTML.
How to use:
Install nuget
dotnet add package DigitalDoor.Reporting.Extensions --version 1.16.57
Register the services
services.AddReportingPdfServices();
Create a report ViewModel
Create object page setup
Setup reportSetUp = new(PageSize.A4, Orientation.Portrait);
Setup Header, Body and Footer (header and footer is not required, default all document it's a Body)
reportSetUp.Header = new Section(new Format(210, 70));
reportSetUp.Body = new Section()
{
Format = new Format()
{
Dimension = new Dimension(210, 222), //full body size
},
Row = new Row() //define size per each element to iterate
{
Dimension = new Dimension(89, 18)
}
};
reportSetUp.Footer = new Section(new Format(210, 7.3));
Add columns (elements) to each section
reportSetUp.Header.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Body.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Footer.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
Add data to the collection. Data will be loop in a foreach to render the report
List<Model> content = new List<Model>(await Repository.GetModelData());
List<ColumnData> data = new List<ColumnData>();
int row = 1; //define first row in the section
if(content.Any())
{
//header data
data.Add(new ColumnData() { Section = SectionType.Header, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
// more row data then increment row++
//body data
row = 1; //reset row
foreach(PackByTrolley item in content)
{
data.Add(new ColumnData() { Section = SectionType.Body, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
row++;
}
//footer data
row = 1; //reset row
data.Add(new ColumnData() { Section = SectionType.Footer, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
}
Full class example
public class CreateReportHandler
{
readonly IReportsOutputPort Output; //from digitalDoor.Reporting.Entities, registered by services.AddReportsServices();
readonly IGetDataRepository Repository;
public GetReportHandler(IReportsOutputPort output, IGetDataRepository repository)
{
Output = output;
Repository = repository;
}
public async ValueTask Handle()
{
Setup reportSetUp = new(PageSize.A4, Orientation.Portrait);
reportSetUp.Header.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Body.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
reportSetUp.Footer.AddColumn(new ColumnSetup()
{
Format = new(165, 6) { FontDetails = new Font(new Shade(13)), Position = new(3, 7) },
DataColumn = Item.SetItem<Model>(p => p.Name)
});
List<Model> content = new List<Model>(await Repository.GetModelData());
List<ColumnData> data = new List<ColumnData>();
int row = 1; //define first row in the section
if(content.Any())
{
//header data
data.Add(new ColumnData() { Section = SectionType.Header, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
// more row data then increment row++
//body data
row = 1; //reset row
foreach(PackByTrolley item in content)
{
data.Add(new ColumnData() { Section = SectionType.Body, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
row++;
}
//footer data
row = 1; //reset row
data.Add(new ColumnData() { Section = SectionType.Footer, Column = Item.SetItem<Model>(p => p.Name), Value = content.Name, Row = row });
}
else
{
reportSetUp = new();
}
await Output.Handle(reportSetUp, data); //create ReportViewModel in a property IReportsOutputPort.Content
}
}
Create a PDF
To create a PDF need to manage the report ViewModel using a Handler and then use with the abtractions
byte[] pdf = await IReportAsBytes.GenerateReport(reportModel);
IReportAsBytes it's registered by services.AddReportsServices();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- DigitalDoor.Reporting (>= 1.16.58)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
-
net8.0
- DigitalDoor.Reporting (>= 1.16.58)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.16.59 | 70 | 11/2/2024 |
1.16.58 | 82 | 10/10/2024 |
1.16.57 | 99 | 6/7/2024 |
1.14.56 | 107 | 5/26/2024 |
1.14.53 | 103 | 5/11/2024 |
1.14.52 | 128 | 3/19/2024 |
1.14.51 | 217 | 12/11/2023 |
1.14.50 | 158 | 11/22/2023 |
1.13.51 | 122 | 11/22/2023 |
1.13.50 | 123 | 11/7/2023 |
1.13.49 | 122 | 11/3/2023 |
1.13.48 | 136 | 10/24/2023 |
1.13.47 | 133 | 10/4/2023 |
1.13.46 | 126 | 9/8/2023 |
1.13.45 | 118 | 9/4/2023 |
1.13.44 | 146 | 8/27/2023 |
1.12.43 | 149 | 8/25/2023 |
0.7.22 | 434 | 7/28/2022 |
0.7.21 | 387 | 7/28/2022 |
2024-11-02: Update nugets.
2024-10-10: Update nugets.
2024-05-26: Update nugets.
2024-05-11: Update DigitalDoor.Reporting to version 1.16.54.
2023-12-12: Update DigitalDoor.Reporting to version 1.14.52.
2023-12-11: Update DigitalDoor.Reporting to version 1.14.51.
2023-11-22: Update frameworks target to NET 6 and NET 8. Update DigitalDoor.Reporting to version 1.14.50.
2023-11-07: Update DigitalDoor.Reporting to version 1.13.51.
2023-11-03: Update DigitalDoor.Reporting to version 1.13.50.
2023-10-24: Update DigitalDoor.Reporting to version 1.13.49.
2023-10-04: Update DigitalDoor.Reporting to version 1.13.48.
2023-09-08: Update DigitalDoor.Reporting to version 1.13.47.
2023-09-04: Update DigitalDoor.Reporting to version 1.13.46.
2023-08-28: Using register container from DigitalDoor.Reporting. Change name space in the dependency container to avid need to add a new namespace reference when want to use the helper to add Services.AddReportingPdfServices().