Skip to content
Snippets Groups Projects
Commit dcc48e64 authored by PEREZ-RAMIREZ Julian's avatar PEREZ-RAMIREZ Julian
Browse files

adding first methods for ItemController

parent 576fbbba
No related branches found
No related tags found
No related merge requests found
...@@ -2,17 +2,85 @@ ...@@ -2,17 +2,85 @@
namespace App\Controller; namespace App\Controller;
use App\Repository\ItemRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;
#[Route('/items')]
final class ItemController extends AbstractController final class ItemController extends AbstractController
{ {
#[Route('/item', name: 'app_item')] private EntityManagerInterface $entityManager;
public function index(): JsonResponse private ItemRepository $itemRepository;
private UserPasswordHasherInterface $passwordHasher;
private ValidatorInterface $validator;
public function __construct(
EntityManagerInterface $entityManager,
ItemRepository $itemRepository,
UserPasswordHasherInterface $passwordHasher,
ValidatorInterface $validator
) {
$this->entityManager = $entityManager;
$this->itemRepository = $itemRepository;
$this->passwordHasher = $passwordHasher;
$this->validator = $validator;
}
#[Route('', methods: ['GET'])]
public function getAllItems(): JsonResponse
{
$items = $this->itemRepository->findAllItems();
if (!$items) {
return new JsonResponse(['error' => 'Item not found'], Response::HTTP_NOT_FOUND);
}
$itemArray = array_map(fn($item) =>
[
'id' => $item->getId(),
'wishList' => $item->getWishList(),
'title' => $item->getTitle(),
'description' =>$item->getDescription(),
'price' =>$item->getPrice(),
'purchaseUrl' =>$item->getPurchaseUrl(),
'createdAt' => $item->getCreatedAt()
]
, $items);
return $this->json([
'items' => $itemArray,
'path' => 'src/Controller/ItemController.php',
]);
}
#[Route('/{itemId}', methods: ['GET'])]
public function getItemsById($itemId): JsonResponse
{ {
$item = $this->itemRepository->findOneById($itemId);
if (!$item) {
return new JsonResponse(['error' => 'Item not found'], Response::HTTP_NOT_FOUND);
}
$itemDTO = [
'id' => $item->getId(),
'wishList' => $item->getWishList(),
'title' => $item->getTitle(),
'description' =>$item->getDescription(),
'price' =>$item->getPrice(),
'purchaseUrl' =>$item->getPurchaseUrl(),
'isBought' =>$item->isBought(),
'createdAt' => $item->getCreatedAt()
];
return $this->json([ return $this->json([
'message' => 'Welcome to your new controller!', 'user' => $itemDTO,
'path' => 'src/Controller/ItemController.php', 'path' => 'src/Controller/ItemController.php',
]); ]);
} }
......
...@@ -102,7 +102,7 @@ final class UserController extends AbstractController implements UserControllerI ...@@ -102,7 +102,7 @@ final class UserController extends AbstractController implements UserControllerI
return $this->json([ return $this->json([
'users' => $userArray, 'users' => $userArray,
'path' => 'src/Controller/ItemController.php', 'path' => 'src/Controller/UserController.php',
]); ]);
} }
...@@ -123,11 +123,11 @@ final class UserController extends AbstractController implements UserControllerI ...@@ -123,11 +123,11 @@ final class UserController extends AbstractController implements UserControllerI
]; ];
return $this->json([ return $this->json([
'user' => $userDTO, 'user' => $userDTO,
'path' => 'src/Controller/ItemController.php', 'path' => 'src/Controller/UserController.php',
]); ]);
} }
#[Route('/{userId}', methods: ['PUT'])] #[Route('/{userId}', methods: ['PATCH'])]
public function updateUser(int $userId, Request $req): JsonResponse public function updateUser(int $userId, Request $req): JsonResponse
{ {
$user = $this->userRepository->findOneById($userId); $user = $this->userRepository->findOneById($userId);
...@@ -196,7 +196,7 @@ final class UserController extends AbstractController implements UserControllerI ...@@ -196,7 +196,7 @@ final class UserController extends AbstractController implements UserControllerI
'isBlocked' => $user->isBlocked(), 'isBlocked' => $user->isBlocked(),
'role' => $user->getRole()->value, 'role' => $user->getRole()->value,
], ],
'path' => 'src/Controller/ItemController.php' 'path' => 'src/Controller/UserController.php'
], Response::HTTP_OK); ], Response::HTTP_OK);
} }
...@@ -214,7 +214,7 @@ final class UserController extends AbstractController implements UserControllerI ...@@ -214,7 +214,7 @@ final class UserController extends AbstractController implements UserControllerI
return $this->json([ return $this->json([
'message' => 'User deleted successfully', 'message' => 'User deleted successfully',
'path' => 'src/Controller/ItemController.php', 'path' => 'src/Controller/UserController.php',
]); ]);
} }
...@@ -223,7 +223,7 @@ final class UserController extends AbstractController implements UserControllerI ...@@ -223,7 +223,7 @@ final class UserController extends AbstractController implements UserControllerI
{ {
return $this->json([ return $this->json([
'message' => 'Welcome to your new controller!', 'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/ItemController.php', 'path' => 'src/Controller/UserController.php',
]); ]);
} }
...@@ -232,7 +232,7 @@ final class UserController extends AbstractController implements UserControllerI ...@@ -232,7 +232,7 @@ final class UserController extends AbstractController implements UserControllerI
{ {
return $this->json([ return $this->json([
'message' => 'Welcome to your new controller!', 'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/ItemController.php', 'path' => 'src/Controller/UserController.php',
]); ]);
} }
} }
...@@ -16,28 +16,23 @@ class ItemRepository extends ServiceEntityRepository ...@@ -16,28 +16,23 @@ class ItemRepository extends ServiceEntityRepository
parent::__construct($registry, Item::class); parent::__construct($registry, Item::class);
} }
// /** public function findAllItems (): array {
// * @return Item[] Returns an array of Item objects return $this->findAll();
// */ }
// public function findByExampleField($value): array
// { // Custom query method to find active users
// return $this->createQueryBuilder('i') public function findByStatus($isBought): array
// ->andWhere('i.exampleField = :val') {
// ->setParameter('val', $value) return $this->createQueryBuilder('u')
// ->orderBy('i.id', 'ASC') ->andWhere('u.isBought = :isBought')
// ->setMaxResults(10) ->setParameter('isBought', $isBought)
// ->getQuery() ->getQuery()
// ->getResult() ->getResult();
// ; }
// }
// public function findOneBySomeField($value): ?Item // Custom query method to find a user by id
// { public function findOneById(int $id): ?Item
// return $this->createQueryBuilder('i') {
// ->andWhere('i.exampleField = :val') return $this->findOneBy(['id' => $id]);
// ->setParameter('val', $value) }
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment