diff --git a/apps/api/app/Http/Controllers/ReportController.php b/apps/api/app/Http/Controllers/ReportController.php index 85c6396..fb957d8 100644 --- a/apps/api/app/Http/Controllers/ReportController.php +++ b/apps/api/app/Http/Controllers/ReportController.php @@ -60,6 +60,9 @@ public function store(Request $request): JsonResponse 'layout.view_id' => 'nullable|uuid|exists:views,id', 'layout.show_headers_only' => 'nullable|boolean', 'layout.per_page' => 'nullable|integer|min:1|max:100', + 'layout.card_columns' => 'nullable|integer|min:1|max:4', + 'layout.orientation' => 'nullable|in:portrait,landscape', + 'layout.compact_cards' => 'nullable|boolean', ]); $report = Report::create($validated); @@ -94,6 +97,9 @@ public function update(Request $request, Report $report): JsonResponse 'layout.view_id' => 'nullable|uuid|exists:views,id', 'layout.show_headers_only' => 'nullable|boolean', 'layout.per_page' => 'nullable|integer|min:1|max:100', + 'layout.card_columns' => 'nullable|integer|min:1|max:4', + 'layout.orientation' => 'nullable|in:portrait,landscape', + 'layout.compact_cards' => 'nullable|boolean', ]); $report->update($validated); @@ -259,12 +265,15 @@ private function generatePdfResponse(string $reportName, array $columns, array $ { $html = $this->renderReportHtml($reportName, $columns, $groups, $groupBy, $layout); + $orientation = ($layout['orientation'] ?? 'portrait') === 'landscape' ? 'landscape' : 'portrait'; + $dompdf = new Dompdf([ 'isHtml5ParserEnabled' => true, 'isPhpEnabled' => false, 'defaultPaperSize' => 'a4', - 'defaultPaperOrientation' => 'portrait', + 'defaultPaperOrientation' => $orientation, ]); + $dompdf->setPaper('a4', $orientation); $dompdf->loadHtml($html); $dompdf->render(); diff --git a/apps/api/resources/views/reports/pdf.blade.php b/apps/api/resources/views/reports/pdf.blade.php index 1c38b60..6660718 100644 --- a/apps/api/resources/views/reports/pdf.blade.php +++ b/apps/api/resources/views/reports/pdf.blade.php @@ -4,6 +4,11 @@