Commit Graph

2 Commits

Author SHA1 Message Date
d24f7541f1 Deserialize into the shared C# model so master/detail bands render
Templates like report_3.frx use FastReport BusinessObjectDataSource with
nested datasources (e.g. abnormally_high_water_levels_report contains
abnormally_high). FastReport discovers the nested list by reflecting on
the C# type — register a flat DataTable and the inner band stays empty,
which is why customers saw 26-page PDFs with the master headers but no
detail rows.

Pull the report DTOs into the sidecar via cross-project Compile Include
from pwa_api/Modules/Report/Models, take a typeName field in the request,
deserialize JSON into the same concrete type, and call RegisterData with
the typed list — so reflection sees the same shape it always did.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 12:04:03 +07:00
af48f51e4c Initial commit: FastReport PDF rendering sidecar
Tiny .NET 6 web app that accepts a JSON dataset and a FastReport template
name, renders to PDF, and returns the bytes. Exists because System.Drawing
is unsupported on .NET 8 Linux even with libgdiplus, but works on .NET 6
with `System.Drawing.EnableUnixSupport=true`. The main pwa_api (.NET 8)
calls this over loopback HTTP.

Endpoints:
  POST /render        single template, returns one PDF
  POST /render/multi  array of sections, merges into one PDF
  GET  /health        liveness probe

Templates and Fonts are sourced at build time from the sibling pwa_api
project so there's a single source of truth for .frx files.

Deployed as pwa-pdf-service.service on api.pwabilling.com, listening on
127.0.0.1:7082, self-contained (no system .NET 6 runtime needed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:40:16 +07:00