src/Ui/Http/Rest/Controller/Faq/GetFaqCategoriesAction.php line 14

Open in your IDE?
  1. <?php
  2. namespace Ui\Http\Rest\Controller\Faq;
  3. use App\Faq\Application\Query\GetFaqCategories\GetFaqCategoriesQuery;
  4. use App\Shared\Application\Query\QueryBusInterface;
  5. use FOS\RestBundle\View\View;
  6. use FOS\RestBundle\View\ViewHandlerInterface;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  9. use Symfony\Contracts\Cache\ItemInterface;
  10. use Symfony\Contracts\Cache\TagAwareCacheInterface;
  11. final class GetFaqCategoriesAction
  12. {
  13.     public function __construct(
  14.         private QueryBusInterface $queryBus,
  15.         private ViewHandlerInterface $viewHandler,
  16.         private TagAwareCacheInterface $cache
  17.     ) {
  18.     }
  19.     public function __invoke() : Response
  20.     {
  21.         try {
  22.             return $this->cache->get(
  23.                 'get-faq-categories-action',
  24.                 function (ItemInterface $item) {
  25.                     $item->tag(['faq-categories']);
  26.                     return $this->viewHandler->handle(View::create(
  27.                         $this->queryBus->ask(new GetFaqCategoriesQuery()),
  28.                         Response::HTTP_OK
  29.                     ));
  30.                 });
  31.         } catch (\InvalidArgumentException $exception) {
  32.             throw new BadRequestHttpException($exception->getMessage());
  33.         }
  34.     }
  35. }