From 7d627c15a34d866aae0f77fa763605b71852b163 Mon Sep 17 00:00:00 2001
From: Julian PEREZ-RAMIREZ <julian.perez-ramirez@imt-atlantique.net>
Date: Sat, 15 Mar 2025 16:22:00 +0100
Subject: [PATCH] adding filter to get all items for the same wishList

---
 server/web_app/src/Controller/ItemController.php | 10 ++++++++--
 server/web_app/src/Repository/ItemRepository.php | 10 +++++++++-
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/server/web_app/src/Controller/ItemController.php b/server/web_app/src/Controller/ItemController.php
index 19583fc..fcbfb65 100644
--- a/server/web_app/src/Controller/ItemController.php
+++ b/server/web_app/src/Controller/ItemController.php
@@ -35,6 +35,9 @@ final class ItemController extends AbstractController
     #[Route('', methods: ['GET'])]
     public function getAllItems(Request $req): JsonResponse
     {
+        $wishList = $req->query->get('wishList');
+        $wishList = $wishList !== null ? (int) $wishList : null; // Convert to int if provided
+
         // Validate "onlyBought" as boolean (default: false)
         $onlyBought = filter_var($req->query->get('onlyBought', false), 
             FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ?? false;
@@ -62,7 +65,7 @@ final class ItemController extends AbstractController
             ["options" => ["min_range" => 1]]) ?: 1;
 
         // Fetch items from repository with filters
-        $items = $this->itemRepository->findAllItemsFiltered($onlyBought, $sortBy,
+        $items = $this->itemRepository->findAllItemsFiltered($wishList, $onlyBought, $sortBy,
              $sort, $max, $page);
 
         if (!$items) {
@@ -71,7 +74,7 @@ final class ItemController extends AbstractController
 
         $itemArray = array_map(fn($item) => [
             'id' => $item->getId(),
-            'wishList' => $item->getWishList(),
+            'wishList' => $item->getWishList()->getId(),
             'title' => $item->getTitle(),
             'description' => $item->getDescription(),
             'price' => $item->getPrice(),
@@ -115,4 +118,7 @@ final class ItemController extends AbstractController
             'path' => 'src/Controller/ItemController.php',
         ]);
     }
+
+
+
 }
diff --git a/server/web_app/src/Repository/ItemRepository.php b/server/web_app/src/Repository/ItemRepository.php
index abc603f..b1554a6 100644
--- a/server/web_app/src/Repository/ItemRepository.php
+++ b/server/web_app/src/Repository/ItemRepository.php
@@ -27,10 +27,16 @@ class ItemRepository extends ServiceEntityRepository
     }
 
     // Custom method to manage pagination and filters.
-    public function findAllItemsFiltered(bool $onlyBought, string $sortBy, string $sort, int $max, int $page)
+    public function findAllItemsFiltered(?int $wishList, bool $onlyBought, string $sortBy, string $sort, int $max, int $page)
     {
         $queryBuilder = $this->createQueryBuilder('i');
 
+        // Filter by wishListId if provided
+        if ($wishList !== null) {
+            $queryBuilder->andWhere('i.wishList = :wishListId')
+                        ->setParameter('wishListId', $wishList);
+        }
+
         if ($onlyBought) {
             $queryBuilder->innerJoin('App\Entity\Purchase', 'p', 'WITH', 'p.item = i.id');
         }
@@ -52,4 +58,6 @@ class ItemRepository extends ServiceEntityRepository
         return $queryBuilder->getQuery()->getResult();
     }
 
+
+
 }
-- 
GitLab