<?php
namespace App\Controller;
use App\Entity\Properties;
use App\Repository\PropertiesRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use App\Entity\Category;
/**
* @Route("/home")
*/
class HomeController extends AbstractController
{
/**
* @Route("/accueil", name="app_home")
*/
public function index(EntityManagerInterface $em): Response
{
// Récupérer toutes les catégories
$categories = $em->getRepository(Category::class)->findAll();
$properties = [];
foreach ($categories as $category) {
// Récupérer les 3 dernières propriétés pour chaque catégorie
$query = $em->createQuery(
'SELECT p
FROM App\Entity\Properties p
WHERE p.category = :category
ORDER BY p.createdAt DESC'
)->setParameter('category', $category)
->setMaxResults(3);
$categoryProperties = $query->getResult();
// Ajouter les propriétés de chaque catégorie à la liste des dernières propriétés
$properties = array_merge($properties, $categoryProperties);
}
// Filtrer les doublons en utilisant les identifiants uniques (IDs)
$propertyIds = [];
$uniqueProperties = [];
foreach ($properties as $property) {
$propertyId = $property->getId();
if (!in_array($propertyId, $propertyIds)) {
$propertyIds[] = $propertyId;
$uniqueProperties[] = $property;
}
}
// Utilisez array_slice pour limiter à 9 (3 propriétés de chaque catégorie)
$properties = array_slice($uniqueProperties, 0, 9);
return $this->render('home/index.html.twig', [
'properties' => $properties,
]);
}
/**
* @Route("/about", name="app_about")
*/
public function about(): Response
{
return $this->render(
'home/about.html.twig',
[]
);
}
/**
* @Route("/cgu", name="app_cgu")
*/
public function cgu(): Response
{
return $this->render(
'home/cgu.html.twig',
[]
);
}
/**
* @Route("/cgv", name="app_cgv")
*/
public function cgv(): Response
{
return $this->render(
'home/cgv.html.twig',
[]
);
}
public function menuDeroulant(EntityManagerInterface $em): Response
{
$properties = $em->getRepository(Properties::class)->findAll();
return $this->render('shared/menuDeroulant.html.twig', [
'properties' => $properties,
]);
}
}