src/Controller/Admin/DashboardController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\User;
  4. use App\Entity\Expert;
  5. use App\Entity\Specie;
  6. use App\Entity\Country;
  7. use App\Entity\Organism;
  8. use App\Entity\SpecieArea;
  9. use App\Entity\GeneralSkill;
  10. use App\Entity\ExpertAreaSpecie;
  11. use App\Repository\ExpertRepository;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  15. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  16. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  17. class DashboardController extends AbstractDashboardController
  18. {
  19.     /**
  20.      * @Route("/admin", name="admin")
  21.      */
  22.     public function index(): Response
  23.     {
  24.         $entityManager $this->getDoctrine()->getManager();
  25.         $expertRepository $entityManager->getRepository(Expert::class);
  26.         $entitiesExperts $expertRepository->findAll();
  27.         $nbCountries 0;
  28.         $countries =array();
  29.         foreach ($entitiesExperts as $entityExpert)
  30.         {
  31.             if (!in_array($entityExpert->getCountry(),$countries)) array_push($countries,$entityExpert->getCountry());
  32.         }
  33.         $nbCountries count($countries);
  34.         $entitiesSpecies $entityManager->getRepository(Specie::class)->findAll();
  35.         $entitiesSpecieArea $entityManager->getRepository(SpecieArea::class)->findAll();
  36.         // $datas=$expertRepository->getCountByCountry();
  37.         // $dataCountries=$this->generateGraphe("Country","pie","chartContainer1",$datas);
  38.         // $datas=$entityManager->getRepository(ExpertAreaSpecie::class)->getCountBy("specie");
  39.         // $dataGS=$this->generateGraphe("Specie","pie","chartContainer2",$datas);
  40.         return $this->render('admin/dashboard.html.twig', [
  41.             'entitiesExperts' => $entitiesExperts,
  42.             'entitiesSpecies' => $entitiesSpecies,
  43.             'entitiesSpecieArea' => $entitiesSpecieArea,
  44.             'nbCountries' => $nbCountries,
  45.             // 'dataCountries' => $dataCountries,
  46.             // 'dataGS' => $dataGS,
  47.         ]);
  48.     }
  49.     public function configureDashboard(): Dashboard
  50.     {
  51.         return Dashboard::new()
  52.             ->setTitle('Eurcaw Experts');
  53.     }
  54.     public function configureMenuItems(): iterable
  55.     {
  56.         yield MenuItem::linkToRoute('Home''fa fa-home','accueil');
  57.         yield MenuItem::linkToDashboard('Dashboard''fa fa-home');
  58.         yield MenuItem::linkToCrud('Experts''fas fa-users'Expert::class);
  59.         yield MenuItem::linkToCrud('User''fas fa-user'User::class);
  60.         yield MenuItem::linkToCrud('General Skills''fas fa-graduation-cap'GeneralSkill::class);
  61.         yield MenuItem::linkToCrud('Species Area''fas fa-list'SpecieArea::class);
  62.         yield MenuItem::linkToCrud('Species''fas fa-list'Specie::class);
  63.         yield MenuItem::linkToCrud('Organism''fas fa-list'Organism::class);
  64.         yield MenuItem::linkToCrud('Country''fas fa-list'Country::class);
  65.         // yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class);
  66.     }
  67.     public function generateGraphe($champ,$type,$container,$datas)
  68.     {
  69.         $color="";
  70.         $color="'#82C46C','#791CF8','#9D3E0C','#BBAE98','#79F8F8','#83A697','#FDEE00','#EF9B0F','#E73E01'";
  71.         $data='<div style="width: 100%; display: inline-block;margin-right: 50px;"><canvas style="background-color: #ffffff;" id="'.$container.'" class="chartjs"></canvas></div>
  72.         <script>
  73.         new Chart(
  74.             document.getElementById("'.$container.'"),
  75.             {
  76.                 type:"'.$type.'",
  77.         
  78.                 data:
  79.                 {
  80.                     labels:[';
  81.         foreach($datas as $ligne
  82.         {
  83.             $func "get" $champ;
  84.             if ($ligne[0]->{$func}()==""$data.="'NA',";
  85.             else $data.="'".$ligne[0]->{$func}()."',";
  86.         }
  87.         $data.='],
  88.                     datasets:
  89.                     [
  90.                         {
  91.                             "label":"",
  92.                             "data":[';
  93.         foreach($datas as $ligne$data.= "'".$ligne["nb"]. "',";
  94.         $data.='],
  95.                             "fill":false,
  96.                             "backgroundColor":['.$color.'],
  97.                             "borderColor":['.$color.'],
  98.                             "borderWidth":1
  99.                         }
  100.                     ]
  101.                 },
  102.                 options:
  103.                 {
  104.                     scales:
  105.                     {
  106.                         yAxes:
  107.                         [
  108.                             {
  109.                                 ticks:
  110.                                 {
  111.                                     beginAtZero:true
  112.                                 }
  113.                             }
  114.                         ]
  115.                     }
  116.                 }
  117.             }
  118.         );
  119.         </script>';
  120.         return $data;
  121.     }
  122. }