src/Controller/PartialController.php line 29

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\Cache\APCuCache;
  5. use App\Doctrine\ORM\GoogleReviewRepository;
  6. use App\Doctrine\ORM\TextWithIconsRepositoryInterface;
  7. use BitBag\SyliusCmsPlugin\Repository\MediaRepositoryInterface;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Odiseo\BlogBundle\Model\ArticleInterface;
  10. use Sylius\Component\Locale\Context\LocaleContextInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Response;
  13. class PartialController extends AbstractController
  14. {
  15.     public function __construct(
  16.         private EntityManagerInterface $entityManager,
  17.         private MediaRepositoryInterface $mediaRepository,
  18.         private TextWithIconsRepositoryInterface $textWithIconsRepository,
  19.         private LocaleContextInterface $localeContext,
  20.         private GoogleReviewRepository $googleReviewRepository,
  21.         private APCuCache $apcuCache,
  22.     ) {
  23.     }
  24.     public function renderTextWithIcons(?bool $showText false): Response
  25.     {
  26.         $items $this->textWithIconsRepository->findBy(['enabled' => true], ['priority' => 'desc']);
  27.         $args = ['items' => $items];
  28.         if ($showText) {
  29.             $args['showText'] = true;
  30.         }
  31.         $response $this->render('@SyliusShop/Partial/iconsWithText.html.twig'$args);
  32.         return $response;
  33.         $response->setPublic();
  34.         $response->setMaxAge(120);
  35.         return $response;
  36.         return $this->apcuCache->getCached('text-with-icons-2', function () {
  37.             $items $this->textWithIconsRepository->findBy(['enabled' => true], ['priority' => 'desc']);
  38.             return $this->render('@SyliusShop/Partial/iconsWithText.html.twig', ['items' => $items]);
  39.         }, 60);
  40.     }
  41.     public function latestBlogPosts(): Response
  42.     {
  43.         /** @var ArticleInterface[] $posts */
  44.         $posts $this->entityManager->createQuery("SELECT a FROM Odiseo\\BlogBundle\\Model\\ArticleInterface a order by a.createdAt DESC")
  45.             ->setMaxResults(3)
  46.             ->getResult();
  47.         return $this->render('@SyliusShop/Homepage/topPosts.html.twig', [
  48.             'posts' => $posts,
  49.         ]);
  50.     }
  51.     public function reviews(): Response
  52.     {
  53.         $review $this->googleReviewRepository->findLatestReview(substr($this->localeContext->getLocaleCode(), 02));
  54.         if ($review === null) {
  55.             return new Response();
  56.         }
  57.         $reviewData json_decode($review->getContent(), true);
  58.         //$media1 = $this->mediaRepository->findOneBy(['code' => 'trustpilot_1']);
  59.         //$media2 = $this->mediaRepository->findOneBy(['code' => 'trustpilot_2']);
  60.         return $this->render('@SyliusShop/Homepage/reviews.html.twig', [
  61.             'data' => $reviewData,
  62.         ]);
  63.     }
  64.     public function reviewsLong(): Response
  65.     {
  66.         $media $this->mediaRepository->findOneBy(['code' => 'trustpilot_3']);
  67.         return $this->render('@SyliusShop/Homepage/reviews_long.html.twig', [
  68.             'image' => $media,
  69.         ]);
  70.     }
  71. }