src/Controller/Cart/GetController.php line 26

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Cart;
  4. use App\Controller\Traits\ExceptionTrait;
  5. use App\Entity\User;
  6. use App\Manager\CartManager;
  7. use App\Repository\CartRepository;
  8. use App\Serializer\Serializer;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\Security\Core\Security;
  14. /**
  15.  * @Route(
  16.  *     "/cart",
  17.  *     methods={"GET"}
  18.  * )
  19.  * Class GetController
  20.  * @package App\Controller\Cart
  21.  */
  22. class GetController
  23. {
  24.     use ExceptionTrait;
  25.     public Serializer $serializer;
  26.     public CartManager $cartManager;
  27.     private CartRepository $cartRepository;
  28.     private GetByIdController $getByIdController;
  29.     private Security $security;
  30.     public function __construct(
  31.         Serializer $serializer,
  32.         CartManager $cartManager,
  33.         CartRepository $cartRepository,
  34.         GetByIdController $getByIdController,
  35.         Security $security
  36.     ) {
  37.         $this->serializer $serializer;
  38.         $this->cartManager $cartManager;
  39.         $this->cartRepository $cartRepository;
  40.         $this->getByIdController $getByIdController;
  41.         $this->security $security;
  42.     }
  43.     public function __invoke(Request $request): JsonResponse
  44.     {
  45.         try {
  46.             $user $this->security->getUser();
  47.             $cart null;
  48.             if ($user instanceof User) {
  49.                 $cart $this->cartRepository->userOf($user);
  50.             } elseif ($request->headers->has('Guest-Token')) {
  51.                 $cart $this->cartRepository->guestTokenOf($request->headers->get('Guest-Token'));
  52.             }
  53.             if ($cart !== null) {
  54.                 return $this->getByIdController->__invoke($cart$request);
  55.             }
  56.             return new JsonResponse(['message' => 'Pas de panier en cours'], Response::HTTP_NOT_FOUND);
  57.         } catch (\Throwable $e) {
  58.             return $this->exceptionOutput($e);
  59.         }
  60.     }
  61. }