<?php
namespace App\Controller\Admin;
use App\Entity\User;
use App\Entity\Expert;
use App\Entity\Specie;
use App\Entity\Country;
use App\Entity\Organism;
use App\Entity\SpecieArea;
use App\Entity\GeneralSkill;
use App\Entity\ExpertAreaSpecie;
use App\Repository\ExpertRepository;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
class DashboardController extends AbstractDashboardController
{
/**
* @Route("/admin", name="admin")
*/
public function index(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$expertRepository = $entityManager->getRepository(Expert::class);
$entitiesExperts = $expertRepository->findAll();
$nbCountries = 0;
$countries =array();
foreach ($entitiesExperts as $entityExpert)
{
if (!in_array($entityExpert->getCountry(),$countries)) array_push($countries,$entityExpert->getCountry());
}
$nbCountries = count($countries);
$entitiesSpecies = $entityManager->getRepository(Specie::class)->findAll();
$entitiesSpecieArea = $entityManager->getRepository(SpecieArea::class)->findAll();
// $datas=$expertRepository->getCountByCountry();
// $dataCountries=$this->generateGraphe("Country","pie","chartContainer1",$datas);
// $datas=$entityManager->getRepository(ExpertAreaSpecie::class)->getCountBy("specie");
// $dataGS=$this->generateGraphe("Specie","pie","chartContainer2",$datas);
return $this->render('admin/dashboard.html.twig', [
'entitiesExperts' => $entitiesExperts,
'entitiesSpecies' => $entitiesSpecies,
'entitiesSpecieArea' => $entitiesSpecieArea,
'nbCountries' => $nbCountries,
// 'dataCountries' => $dataCountries,
// 'dataGS' => $dataGS,
]);
}
public function configureDashboard(): Dashboard
{
return Dashboard::new()
->setTitle('Eurcaw Experts');
}
public function configureMenuItems(): iterable
{
yield MenuItem::linkToRoute('Home', 'fa fa-home','accueil');
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
yield MenuItem::linkToCrud('Experts', 'fas fa-users', Expert::class);
yield MenuItem::linkToCrud('User', 'fas fa-user', User::class);
yield MenuItem::linkToCrud('General Skills', 'fas fa-graduation-cap', GeneralSkill::class);
yield MenuItem::linkToCrud('Species Area', 'fas fa-list', SpecieArea::class);
yield MenuItem::linkToCrud('Species', 'fas fa-list', Specie::class);
yield MenuItem::linkToCrud('Organism', 'fas fa-list', Organism::class);
yield MenuItem::linkToCrud('Country', 'fas fa-list', Country::class);
// yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class);
}
public function generateGraphe($champ,$type,$container,$datas)
{
$color="";
$color="'#82C46C','#791CF8','#9D3E0C','#BBAE98','#79F8F8','#83A697','#FDEE00','#EF9B0F','#E73E01'";
$data='<div style="width: 100%; display: inline-block;margin-right: 50px;"><canvas style="background-color: #ffffff;" id="'.$container.'" class="chartjs"></canvas></div>
<script>
new Chart(
document.getElementById("'.$container.'"),
{
type:"'.$type.'",
data:
{
labels:[';
foreach($datas as $ligne)
{
$func = "get" . $champ;
if ($ligne[0]->{$func}()=="") $data.="'NA',";
else $data.="'".$ligne[0]->{$func}()."',";
}
$data.='],
datasets:
[
{
"label":"",
"data":[';
foreach($datas as $ligne) $data.= "'".$ligne["nb"]. "',";
$data.='],
"fill":false,
"backgroundColor":['.$color.'],
"borderColor":['.$color.'],
"borderWidth":1
}
]
},
options:
{
scales:
{
yAxes:
[
{
ticks:
{
beginAtZero:true
}
}
]
}
}
}
);
</script>';
return $data;
}
}