src/Controller/Admin/DashboardController.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Acheteur;
  4. use App\Entity\Broker;
  5. use App\Entity\Category;
  6. use App\Entity\Client;
  7. use App\Entity\Cour;
  8. use App\Entity\Events;
  9. use App\Entity\Gestionnaire;
  10. use App\Entity\SerieBillet;
  11. use App\Entity\Session;
  12. use App\Entity\Sport;
  13. use App\Repository\CategoryRepository;
  14. use App\Repository\CourRepository;
  15. use App\Repository\SessionRepository;
  16. use App\Repository\SportRepository;
  17. use App\Services\BilletService;
  18. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  20. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  21. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  22. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  23. use Symfony\Component\Form\Extension\Core\Type\DateType;
  24. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  25. use Symfony\Component\HttpFoundation\Request;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. class DashboardController extends AbstractDashboardController
  29. {
  30.     #[Route(path'/admin'name'admin')]
  31.     public function dashboard(Request $requestBilletService $billetService): Response
  32.     {
  33.         $request $this->get('request_stack')->getCurrentRequest();
  34.         $eventId $request->cookies->get('current_event_id');
  35.         $form $this->createFormBuilder()
  36.             ->add('session'EntityType::class, [
  37.                 'class' => Session::class,
  38.                 'query_builder' => function (SessionRepository $er) use ($eventId) {
  39.                     return $er->createQueryBuilder('a')
  40.                         ->where('a.event = :currentEventId')
  41.                         ->setParameter('currentEventId'$eventId)
  42.                         ->orderBy('a.codeSession''ASC');
  43.                 },
  44.                 'choice_label' => 'codeSession',
  45.                 'required' => false
  46.             ])
  47.             ->add('sessionDate'EntityType::class, [
  48.                 'class' => Session::class,
  49.                 'query_builder' => function (SessionRepository $er) use ($eventId) {
  50.                     return $er->createQueryBuilder('a')
  51.                         ->where('a.event = :currentEventId')
  52.                         ->groupBy('a.date')
  53.                         ->setParameter('currentEventId'$eventId)
  54.                         ->orderBy('a.date''ASC');
  55.                 },
  56.                 'choice_label' => 'getLocalizedDate',
  57.                 'required' => false
  58.             ])
  59.             ->add('cour'EntityType::class, [
  60.                 'class' => Cour::class,
  61.                 'query_builder' => function (CourRepository $er) use ($eventId) {
  62.                     return $er->createQueryBuilder('a')
  63.                         ->where('a.event = :currentEventId')
  64.                         ->setParameter('currentEventId'$eventId)
  65.                         ->orderBy('a.nom''ASC');
  66.                 },
  67.                 'choice_label' => 'nom',
  68.                 'required' => false
  69.             ])
  70.             ->add('categorie'EntityType::class, [
  71.                 'class' => Category::class,
  72.                 'query_builder' => function (CategoryRepository $er) use ($eventId) {
  73.                     return $er->createQueryBuilder('a')
  74.                         ->where('a.event = :currentEventId')
  75.                         ->setParameter('currentEventId'$eventId)
  76.                         ->orderBy('a.nom''ASC');
  77.                 },
  78.                 'choice_label' => 'nom',
  79.                 'required' => false
  80.             ])
  81.             ->add('sport'EntityType::class, [
  82.                 'class' => Sport::class,
  83.                 'query_builder' => function (SportRepository $er) use ($eventId) {
  84.                     return $er->createQueryBuilder('a')
  85.                         ->where('a.event = :currentEventId')
  86.                         ->setParameter('currentEventId'$eventId)
  87.                         ->orderBy('a.name''ASC');
  88.                 },
  89.                 'choice_label' => 'name',
  90.                 'required' => false
  91.             ])
  92.             ->add('submit'SubmitType::class, ['label' => 'Filtrer'])
  93.             ->getForm();
  94.         $form->handleRequest($request);
  95.         $request $this->get('request_stack')->getCurrentRequest();
  96.         $eventId $request->cookies->get('current_event_id');
  97.         $data = [];
  98.         if ($form->isSubmitted() && $form->isValid()) {
  99.             $data $form->getData();
  100.             $data['event'] = $eventId;
  101.             $processedDataSerieBillet $billetService->getProcessedData('serieBillet'$data$eventId);
  102.             $processedDataCommandes $billetService->getProcessedData('commande'$data$eventId);
  103.         } else {
  104.             $data['event'] = $eventId;
  105.             $processedDataSerieBillet $billetService->getProcessedData('serieBillet'$data$eventId);
  106.             $processedDataCommandes $billetService->getProcessedData('commande'$data$eventId);
  107.         }
  108.         $cours = [];
  109.         foreach ($processedDataSerieBillet as $sessions) {
  110.             foreach ($sessions as $cour_id => $session) {
  111.                 $cours[] = $cour_id;
  112.             }
  113.         }
  114.         $soldes $billetService->getSolde($processedDataSerieBillet$processedDataCommandes$eventId);
  115.         return $this->render('admin/dashboard.html.twig', [
  116.             'form' => $form->createView(),
  117.             'processedDataSerieBillet' => $processedDataSerieBillet,
  118.             'processedDataSerieCommande' => $processedDataCommandes,
  119.             'soldes' => $soldes,
  120.             'categories' => $billetService->getCategories($eventId)
  121.         ]);
  122.     }
  123.     public function configureDashboard(): Dashboard
  124.     {
  125.         return Dashboard::new()
  126.             ->setTitle('Teamgradi');
  127.     }
  128.     public function configureMenuItems(): iterable
  129.     {
  130.         yield MenuItem::linkToDashboard('Dashboard''fa fa-home');
  131.         yield MenuItem::linkToCrud('EvĂ©nements''fa fa-home'Events::class);
  132.         yield MenuItem::linkToCrud('Serie Billet''icone menu_1'SerieBillet::class);
  133.         yield MenuItem::linkToCrud('Acheteurs''fa fa-user'Acheteur::class);
  134.         yield MenuItem::linkToCrud('Clients''fa fa-user'Client::class);
  135.         yield MenuItem::linkToCrud('Brokers''fa fa-user'Broker::class);
  136.         yield MenuItem::linkToCrud('Gestionnaires''fa fa-user'Gestionnaire::class);
  137.     }
  138. }