src/App/Api/Controller/Admin/AbstractExemptionStatisticController.php line 15

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Api\Controller\Admin;
  4. use App\Api\DTO\Statistic\AbstractExemptionStatistic;
  5. use App\Api\Service\StatisticManager;
  6. use App\Api\Service\UserPermissionService;
  7. use Sonata\AdminBundle\Controller\CRUDController;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  10. use Symfony\Component\Security\Core\User\UserInterface;
  11. abstract class AbstractExemptionStatisticController extends CRUDController
  12. {
  13.     public const EXEMPTION_TABLE_ROW_TITLES = ['''Nombre''Pourcentage'];
  14.     public const EXEMPTION_TABLE_COLUMN_TITLES = [
  15.         'En cours',
  16.         'Dispenses finalisées',
  17.         'Dispenses validées',
  18.         'Dispenses  invalidées',
  19.         'Utilisation dispenses',
  20.     ];
  21.     protected $statisticManager;
  22.     protected $userPermissionService;
  23.     public function __construct(StatisticManager $statisticManagerUserPermissionService $userPermissionService)
  24.     {
  25.         $this->statisticManager $statisticManager;
  26.         $this->userPermissionService $userPermissionService;
  27.     }
  28.     abstract protected function getLabelForCheckPermission(): string;
  29.     abstract protected function getExemptionStatistic(UserInterface $user): AbstractExemptionStatistic;
  30.     abstract protected function getTableColumnTitles(): array;
  31.     public function listAction(): Response
  32.     {
  33.         if (!$this->userPermissionService->checkPermissionForBackOffice($this->getLabelForCheckPermission())) {
  34.             throw new AccessDeniedException();
  35.         }
  36.         $exemptionStatistic $this->getExemptionStatistic($this->getUser());
  37.         return $this->renderWithExtraParams('admin/statistic/statistic.html.twig', [
  38.             'data' => $this->statisticManager->transformExemptionStatisticForDisplay(
  39.                 $exemptionStatistic,
  40.                 $this->getTableColumnTitles()
  41.             ),
  42.             'tableRowTitles' => self::EXEMPTION_TABLE_ROW_TITLES ,
  43.         ]);
  44.     }
  45. }