src/Component/ProductComparer/Controller/ShowProductsAction.php line 23

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\ProductComparer\Controller;
  4. use BitBag\OpenMarketplace\Component\Core\Common\Helper\FlashHelperInterface;
  5. use BitBag\OpenMarketplace\Component\ProductComparer\Manager\ProductComparerManagerInterface;
  6. use RuntimeException;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Twig\Environment;
  10. final class ShowProductsAction
  11. {
  12.     public function __construct(
  13.         private ProductComparerManagerInterface $productComparerManager,
  14.         private Environment $environment,
  15.         private FlashHelperInterface $flashHelper,
  16.         ) {
  17.     }
  18.     public function __invoke(Request $request): Response
  19.     {
  20.         try {
  21.             $comparer $this->productComparerManager->getComparer();
  22.             $products $comparer->getProducts();
  23.             $attributes $comparer->getComparerAttributes(
  24.                 $products,
  25.                 $request->getLocale(),
  26.                 $request->getDefaultLocale()
  27.             );
  28.         } catch (RuntimeException) {
  29.             $this->flashHelper->addFlashMessage(
  30.                 FlashHelperInterface::ERROR,
  31.                 'app.product_compare.fail',
  32.             );
  33.             $products = [];
  34.             $attributes = [];
  35.         }
  36.         return new Response(
  37.             $this->environment->render('Context/Shop/ProductComparer/index.html.twig', [
  38.                 'products' => $products,
  39.                 'attributes' => $attributes,
  40.             ])
  41.         );
  42.     }
  43. }