libra/docs/stories/story-6.7-monthly-statistic...

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