<?php
namespace App\Controller\Site;
use App\Controller\BaseController;
use App\Entity\Evenement;
use App\Repository\CategorieRepository;
use App\Repository\EvenementRepository;
use App\Repository\PaysRepository;
use App\Repository\ZoneRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class EvenementsController extends BaseController
{
private $em,$paginator;
public function __construct(EntityManagerInterface $em, PaginatorInterface $paginator)
{
$this->em=$em;
$this->paginator = $paginator;
}
/**
* @throws \Exception
*/
#[Route(path: '/evenements', name: 'site_evenements')]
public function index(Request $request, EvenementRepository $repository, CategorieRepository $categorieRepository,
PaysRepository $paysRepository, ZoneRepository $zoneRepository)
{
$date= null;
$from=null;
$to=null;
$periode=false;
$pays=[]; $szone=[];
$pays=$request->query->get('pays');
$szone=$request->query->get('zone');
$viewType=$request->query->get('view');
$type=$request->query->get('type');
$selectedDate=$request->query->get('date');
$dates=$request->query->get('dates');
$importance=$request->query->get('importance');
$q=$request->query->get('q');
if($dates){
$temp= explode('-',$dates);
$from = date('Y-m-d',strtotime(str_replace('/', '-',trim($temp[0]))));
$to = date('Y-m-d',strtotime(str_replace('/', '-',trim($temp[1]))));
}
$periode = true;
if($selectedDate){
$date = date('Y-m-d',strtotime(trim($selectedDate)));
}
//dd($from,$to,$date,$pays,$importance,$szone);
$date=($date)?new \DateTime($date):new \DateTime();
$from=($from)?new \DateTime($from):new \DateTime(date('Y-m-d',time()));
$to=($to)?new \DateTime($to):new \DateTime(date('Y-m-d',time()));
if($viewType =='pays'){
$szone=[];
}else if($viewType == 'zone'){
$pays=[];
}
$all=$repository->findBytype($date,$from,$to,$importance,$type,$pays,$szone,$q);
$paginedData=$this->paginator->paginate($all,$request->query->getInt('page', 1),20);
return $this->render('site/evenements/index.html.twig', [
'evenements'=>$paginedData,
'categories'=>$categorieRepository->findAll(),
'countries'=>$paysRepository->eventCountries(),
'zones'=>$zoneRepository->findAll(),
'selectedDate'=> $selectedDate,
'dates'=> $dates,
'type'=> $type,
'rechdate'=>null,
'periode'=>$periode,
'pays'=>$pays,
'szone'=>$szone,
'viewType'=> $viewType,
'importance'=> $importance,
'q'=>$q,
]);
}
/**
* @throws \Exception
*/
#[Route(path: '/evenements/datesevices', name: 'evenementsds')]
public function CEDS(Request $request, EvenementRepository $repository, CategorieRepository $categorieRepository,
PaysRepository $paysRepository, ZoneRepository $zoneRepository)
{
$date= null;
$from=null;
$to=null;
$periode=false;
$pays=[]; $szone=[];
$pays=$request->query->get('pays');
$szone=$request->query->get('zone');
$viewType=$request->query->get('view');
$type=$request->query->get('type');
$selectedDate=$request->query->get('date');
$dates=$request->query->get('dates');
$importance=$request->query->get('importance');
$q=$request->query->get('q');
if($dates){
$temp= explode('-',$dates);
$from = date('Y-m-d',strtotime(str_replace('/', '-',trim($temp[0]))));
$to = date('Y-m-d',strtotime(str_replace('/', '-',trim($temp[1]))));
}
$periode = true;
if($selectedDate){
$date = date('Y-m-d',strtotime(trim($selectedDate)));
}
//dd($from,$to,$date,$pays,$importance,$szone);
$date=($date)?new \DateTime($date):new \DateTime();
$from=($from)?new \DateTime($from):new \DateTime(date('Y-m-d',time()));
$to=($to)?new \DateTime($to):new \DateTime(date('Y-m-d',time()));
if($viewType =='pays'){
$szone=[];
}else if($viewType == 'zone'){
$pays=[];
}
$all=$repository->findBytype($date,$from,$to,$importance,$type,$pays,$szone,$q);
$paginedData=$this->paginator->paginate($all,$request->query->getInt('page', 1),20);
return $this->render('site/evenements/CEDS.html.twig', [
'evenements'=>$paginedData,
'categories'=>$categorieRepository->findAll(),
'countries'=>$paysRepository->eventCountries(),
'zones'=>$zoneRepository->findAll(),
'selectedDate'=> $selectedDate,
'dates'=> $dates,
'type'=> $type,
'rechdate'=>null,
'periode'=>$periode,
'pays'=>$pays,
'szone'=>$szone,
'viewType'=> $viewType,
'importance'=> $importance,
'q'=>$q,
]);
}
#[Route(path: '/evenements/{id}', name: 'site_evenement_show')]
public function show(Request $request,Evenement $evenement,EvenementRepository $EvenementRepository)
{
$repo=$this->em->getRepository(Evenement::class);
$events=$repo->findRelated($evenement);
$historiques=[];$repo->findHisto($evenement);
$status=true;
$nom=$evenement->getNom();
$categorie=$evenement->getCategorie();
$pays=$evenement->getPays();
$histo=$EvenementRepository->findByDCEA($status,$nom,$categorie,$pays,'ASC');
//récuperation des valeurs actuelles dans un tableau --
$chartvalues= array_map(function ($element){
if($element->getActuelle()){
$temp=trim(str_replace(',','.',$element->getActuelle()));
return (float) $temp;
}
},$histo);
//récupération des dates dans un tableau --
$chartdates = array_map(function ($element){
if($element->getActuelle()) {
return '"' . $element->getDate()->format('d/m/Y') . '"';
}
},$histo);
//filtrer les element vides
$chartvalues = array_filter($chartvalues,fn($element) => !is_null($element));
$chartdates = array_filter($chartdates,fn($element) => !is_null($element));
//récupération de l'unité
$unit = '';
$i=0;
while(count($histo) > $i AND !($histo[$i])->getActuelle()){
$i++;
}
if(array_key_exists($i,$histo) AND ($histo[$i])->getActuelle()){
$unit = substr((string) ($histo[$i])->getActuelle(),-1,1);
$unit = (ctype_digit($unit))? '':$unit;
}
//dd($chartvalues,$chartdates,$unit);
$chartvalues = implode(',',$chartvalues);
$chartdates = implode(',',$chartdates);
$histo=$EvenementRepository->findByDCEA($status,$nom,$categorie,$pays);
$paginedData=$this->paginator->paginate($histo,$request->query->getInt('page', 1),15);
return $this->render('site/evenements/show.html.twig', [
'evenement'=>$evenement,
'events'=>$events,
'historiques'=>$historiques,
'histoeven'=>$paginedData,
'chartdates'=>$chartdates,
"chartvalues"=>$chartvalues,
"unit"=>$unit,
]);
}
#[Route(path: '/evenements/CE/{id}', name: 'site_evenement_CE')]
public function showCEDS(Request $request,Evenement $evenement,EvenementRepository $EvenementRepository)
{
$repo=$this->em->getRepository(Evenement::class);
$events=$repo->findRelated($evenement);
$historiques=[];$repo->findHisto($evenement);
$status=true;
$nom=$evenement->getNom();
$categorie=$evenement->getCategorie();
$pays=$evenement->getPays();
$histo=$EvenementRepository->findByDCEA($status,$nom,$categorie,$pays,'ASC');
//récuperation des valeurs actuelles dans un tableau --
$chartvalues= array_map(function ($element){
if($element->getActuelle()){
$temp=trim(str_replace(',','.',$element->getActuelle()));
return (float) $temp;
}
},$histo);
//récupération des dates dans un tableau --
$chartdates = array_map(function ($element){
if($element->getActuelle()) {
return '"' . $element->getDate()->format('d/m/Y') . '"';
}
},$histo);
//filtrer les element vides
$chartvalues = array_filter($chartvalues,fn($element) => !is_null($element));
$chartdates = array_filter($chartdates,fn($element) => !is_null($element));
//récupération de l'unité
$unit = '';
$i=0;
while(count($histo) > $i AND !($histo[$i])->getActuelle()){
$i++;
}
if(array_key_exists($i,$histo) AND ($histo[$i])->getActuelle()){
$unit = substr((string) ($histo[$i])->getActuelle(),-1,1);
$unit = (ctype_digit($unit))? '':$unit;
}
//dd($chartvalues,$chartdates,$unit);
$chartvalues = implode(',',$chartvalues);
$chartdates = implode(',',$chartdates);
$histo=$EvenementRepository->findByDCEA($status,$nom,$categorie,$pays);
$paginedData=$this->paginator->paginate($histo,$request->query->getInt('page', 1),15);
return $this->render('site/evenements/show_CEDS.html.twig', [
'evenement'=>$evenement,
'events'=>$events,
'historiques'=>$historiques,
'histoeven'=>$paginedData,
'chartdates'=>$chartdates,
"chartvalues"=>$chartvalues,
"unit"=>$unit,
]);
}
}