1.8 KiB
1.8 KiB
Story 6.7: Monthly Statistics Report
Epic Reference
Epic 6: Admin Dashboard
User Story
As an admin, I want to generate comprehensive monthly PDF reports, So that I have professional summaries of business performance.
Acceptance Criteria
Generation
- "Generate Monthly Report" button
- Select month/year
PDF Report Includes
- Overview of key metrics
- Charts (rendered as images)
- User statistics
- Consultation statistics
- Timeline statistics
- Post statistics
Design
- Professional layout with branding
- Table of contents
- Printable format
- Bilingual based on admin preference
UX
- Loading indicator during generation
- Download on completion
Technical Notes
Pre-render charts as base64 images for PDF inclusion.
public function generateMonthlyReport(int $year, int $month)
{
$startDate = Carbon::create($year, $month, 1)->startOfMonth();
$endDate = $startDate->copy()->endOfMonth();
$data = [
'period' => $startDate->format('F Y'),
'userStats' => $this->getUserStatsForPeriod($startDate, $endDate),
'consultationStats' => $this->getConsultationStatsForPeriod($startDate, $endDate),
'timelineStats' => $this->getTimelineStatsForPeriod($startDate, $endDate),
'postStats' => $this->getPostStatsForPeriod($startDate, $endDate),
'charts' => $this->renderChartsAsImages($startDate, $endDate),
];
$pdf = Pdf::loadView('exports.monthly-report', $data)
->setPaper('a4', 'portrait');
return $pdf->download("monthly-report-{$year}-{$month}.pdf");
}
Definition of Done
- Month/year selector works
- All statistics accurate
- Charts rendered in PDF
- Professional branding
- Bilingual support
- Tests pass
Estimation
Complexity: High | Effort: 5-6 hours