src/Controller/FavoriController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Properties;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. /**
  11.  * @Route("/favori")
  12.  */
  13. class FavoriController extends AbstractController
  14. {
  15.     /**
  16.      * @Route("/favoris", name="app_favoris")
  17.      */
  18.     public function show(Request $requestEntityManagerInterface $entityManager): Response
  19.     {
  20.         $cookieValue $request->cookies->get('favoris');
  21.         $identifiants json_decode($cookieValuetrue);
  22.         $queryBuilder $entityManager->createQueryBuilder();
  23.         $queryBuilder
  24.             ->select('p')
  25.             ->from(Properties::class, 'p')
  26.             ->where($queryBuilder->expr()->in('p.id'':identifiants'))
  27.             ->setParameter('identifiants'$identifiants);
  28.         $properties $queryBuilder->getQuery()->getResult();
  29.         return $this->render(
  30.             'home/favoris.html.twig',
  31.             ["properties" => $properties]
  32.         );
  33.     }
  34. /**
  35.  * @Route("/app_favori_update", name="app_favori_update", methods={"POST"})
  36.  */
  37.  public function updateFavorisNumber(Request $request): Response
  38.  {
  39.      // Récupérer les données JSON envoyées par la requête
  40.      $data json_decode($request->getContent(), true);
  41.  
  42.      // Assurez-vous que les clés propertyId et isAddition existent dans les données
  43.      if (isset($data['propertyId']) && isset($data['isAddition'])) {
  44.          // Récupérer l'ID de la propriété
  45.          $propertyId $data['propertyId'];
  46.  
  47.          // Récupérer la propriété depuis la base de données
  48.          $entityManager $this->getDoctrine()->getManager();
  49.          $property $entityManager->getRepository(Properties::class)->find($propertyId);
  50.  
  51.          if (!$property) {
  52.              // Si la propriété n'est pas trouvée, répondre avec un message d'erreur
  53.              return new JsonResponse(['message' => 'La propriété avec l\'ID ' $propertyId ' n\'existe pas.'], Response::HTTP_NOT_FOUND);
  54.          }
  55.  
  56.          // Mettre à jour la propriété favoritNumber
  57.          $favorisNumber $property->getFavoritNumber();
  58.  
  59.          // Si c'est une addition, augmenter le nombre de favoris
  60.          if ($data['isAddition']) {
  61.              $favorisNumber++;
  62.          } else if($property->getFavoritNumber() > 0){
  63.              // Sinon, réduire le nombre de favoris
  64.                          $favorisNumber--;
  65.          }
  66.          // Mettre à jour la propriété favoritNumber dans la base de données
  67.          $property->setFavoritNumber($favorisNumber);
  68.          $entityManager->flush();
  69.  
  70.          // Répondre avec un message de succès
  71.          return new JsonResponse(['message' => 'Nombre de favoris de la propriété mis à jour avec succès.'], Response::HTTP_OK);
  72.      }
  73.  
  74.      // Si la clé propertyId ou isAddition est absente dans les données JSON, répondre avec un message d'erreur
  75.      return new JsonResponse(['message' => 'La clé propertyId ou isAddition est manquante.'], Response::HTTP_BAD_REQUEST);
  76.  }
  77. }