src/Controller/ReportController.php line 21

  1. <?php
  2. namespace App\Controller;
  3. use App\Presenter\TablePresenter;
  4. use App\ReportService;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. #[Route('/report')]
  9. class ReportController extends AbstractController
  10. {
  11.     public function __construct(
  12.         private TablePresenter $tablePresenter,
  13.     )
  14.     {
  15.     }
  16.     #[Route('/'name'app_report'methods'GET')]
  17.     public function report(ReportService $reportService): Response
  18.     {
  19.         $donations $reportService->getDonationsReportByAudience();
  20.         $refills =$reportService->getRefillsReportByAudience();
  21.         $scans $reportService->getScansReportByAudience();
  22.         $data = [
  23.             'meta' => $scans['meta'],
  24.             'donationsView' => $this->buildTablePresentation($donations['data'], ['Time''User Email''JOENATION Amount'], $donations['emptyDataText'])->renderView(),
  25.             'refillsView' => $this->buildTablePresentation($refills['data'], ['Time''User Email''Refill Amount'], $refills['emptyDataText'])->renderView(),
  26.             'scansView' => $this->buildTablePresentation($scans['data'], ['Scan''Tag''User Email''Current JOENATION Level'], $scans['emptyDataText'])->renderView(),
  27.         ];
  28.         return $this->render('home/report.html.twig', ['data' => $data]);
  29.     }
  30.     private function buildTablePresentation(array $data, array $header = [], string $emptyDataText ''): TablePresenter
  31.     {
  32.         return $this->tablePresenter
  33.             ->setHeader($header)
  34.             ->setRows($data)
  35.             ->setEmptyDataText($emptyDataText)
  36.             ;
  37.     }
  38. }