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