<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\ProductComparer\Controller;
use BitBag\OpenMarketplace\Component\Core\Common\Helper\FlashHelperInterface;
use BitBag\OpenMarketplace\Component\ProductComparer\Manager\ProductComparerManagerInterface;
use RuntimeException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;
final class ShowProductsAction
{
public function __construct(
private ProductComparerManagerInterface $productComparerManager,
private Environment $environment,
private FlashHelperInterface $flashHelper,
) {
}
public function __invoke(Request $request): Response
{
try {
$comparer = $this->productComparerManager->getComparer();
$products = $comparer->getProducts();
$attributes = $comparer->getComparerAttributes(
$products,
$request->getLocale(),
$request->getDefaultLocale()
);
} catch (RuntimeException) {
$this->flashHelper->addFlashMessage(
FlashHelperInterface::ERROR,
'app.product_compare.fail',
);
$products = [];
$attributes = [];
}
return new Response(
$this->environment->render('Context/Shop/ProductComparer/index.html.twig', [
'products' => $products,
'attributes' => $attributes,
])
);
}
}