<?php
namespace App\Controller;
use App\Entity\Hebergements;
use App\Entity\SearchData;
use App\Entity\SearchHomeData;
use App\Entity\Statistiques;
use App\Form\SearchHomeType;
use App\Form\SearchType;
use App\Repository\HebergementsRepository;
use App\Repository\StatistiquesRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
#[Route('/hebergements', name: 'app_hebergements_')]
class HebergementsController extends AbstractController
{
/////
#[Route('/home/{page?1}/{nbre?100}', name: 'index')]
public function index(ManagerRegistry $mr, $page, $nbre, Request $request,
HebergementsRepository $hebergementsRepository, StatistiquesRepository $statistiquesRepository): Response
{
$searchHomeData = new SearchHomeData();
$form = $this->createForm(SearchHomeType::class, $searchHomeData);
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_HEBERGEMENT']);
$form = $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$allHebergements = $hebergementsRepository->findBySearchHome($searchHomeData, ['city' => 'ASC']);
if($allHebergements > 0)
{
return $this->render('hebergements/index.html.twig',[
'form' => $form->createView(),
'allHebergements' => $allHebergements,
'allStatistiques' => $allStatistiques
]);
}
}
///////////////////////////
$idUserConnect = $this->getUser();
$session = $request->getSession(); // Equivalent à session_star()
$elementVisite = new Statistiques();
$pageStat = 'ACCUEIL_HEBERGEMENTS';
/// $idElementStat = $id;
$nameElementStat = 'PAGE_HEBERGEMENTS_INDEX';
$idUserStat = $idUserConnect;
if(($session != null) and ($idUserConnect != null))
{
$visitorIdentityStat = 'Email';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
/// $elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
else
{
if(($session != null) and ($idUserConnect <= 0))
{
$visitorIdentityStat = 'INCONNU';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
/// $elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
}
$em = $mr->getManager();
$em->persist($elementVisite);
$em->flush();
///////////////////
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_HEBERGEMENT']);
$hebergementsRepo = $mr->getRepository(Hebergements::class);
$nbHebergements = $hebergementsRepo->count([]);
$nbrePage = ceil($nbHebergements / $nbre);
$allHebergements = $hebergementsRepo->findBy([], ['created_at' => 'DESC'], $nbre, ($page - 1) * $nbre);
return $this->render('hebergements/index.html.twig', [
'form' => $form->createView(),
'allHebergements' => $allHebergements,
'isPaginated' => true,
'nbrePage' => $nbrePage,
'page' => $page,
'nbre' => $nbre,
'allStatistiques' => $allStatistiques
]);
}
////////
// Par Pays
#[Route('/test/{parPays}', name: 'test')]
public function test(ManagerRegistry $mr, $parPays, HebergementsRepository $repo): Response
{
$repository = $mr->getRepository(Hebergements::class);
$hebergements = $repo->findByCountry($parPays);
return $this->render('hebergements/test.html.twig', [
'hebergements' => $hebergements
]);
}
/////
#[Route('/similaire/{catego}', name: 'similars')]
public function similars($catego, ManagerRegistry $mr, Request $request,
HebergementsRepository $hebergementsRepository, StatistiquesRepository $statistiquesRepository): Response
{
$searchHomeData = new SearchHomeData();
$catSimilar = $catego;
$form = $this->createForm(SearchHomeType::class, $searchHomeData);
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_HEBERGEMENT']);
$form = $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$hebergementsSimilars = $hebergementsRepository->findBySearchHome($searchHomeData, ['city' => 'ASC']);
if($hebergementsSimilars > 0)
{
return $this->render('hebergements/similars.html.twig', [
'form' => $form->createView(),
'hebergementsSimilars' => $hebergementsSimilars,
'catSimilar' => $catSimilar,
'allStatistiques' => $allStatistiques
]);
}
$this->addFlash('danger', 'Aucun élement trouvé. Vérifiez l\'orthographe ou Utilisez les synonymes:' . $searchHomeData);
return $this->render('hebergements/similars.html.twig', [
'form' => $form->createView(),
'hebergementsSimilars' => $hebergementsSimilars,
'catSimilar' => $catSimilar,
'allStatistiques' => $allStatistiques
]);
}
$hebergementsSimilars = $mr->getRepository(Hebergements::class)->findBy(['categorieshebergements' => $catego]);
return $this->render('hebergements/similars.html.twig', [
'form' => $form->createView(),
'hebergementsSimilars' => $hebergementsSimilars,
'catSimilar' => $catSimilar,
'allStatistiques' => $allStatistiques
]);
}
#[Route('/{slug}/{id}', name: 'details')]
public function details($id, ManagerRegistry $mr, StatistiquesRepository $statistiquesRepository,
Request $request): Response
{
$idUserConnect = $this->getUser();
$session = $request->getSession(); // Equivalent à session_star()
$elementVisite = new Statistiques();
$pageStat = 'DETAIL_HEBERGEMENT';
$idElementStat = $id;
$nameElementStat = 'NOM_HEBERGEMENT';
$idUserStat = $idUserConnect;
if(($session != null) and ($idUserConnect != null))
{
$visitorIdentityStat = 'Email';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
$elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
else
{
if(($session != null) and ($idUserConnect <= 0))
{
$visitorIdentityStat = 'INCONNU';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
$elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
}
$em = $mr->getManager();
$em->persist($elementVisite);
$em->flush();
///////////////
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_HEBERGEMENT']);
$hebergementProperties = $mr->getRepository(Hebergements::class)->findOneBy(['id' => $id]);
// return $this->render('hebergements/details.html.twig', compact('hebergement'));
return $this->render('hebergements/details.html.twig', [
'hebergementProperties' => $hebergementProperties,
'allStatistiques' => $allStatistiques
]);
}
}