src/Controller/CaseStudiesDefaultController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CaseStudies;
  4. use App\Entity\Testimonial;
  5. use App\Annotation\CmsComponent;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. class CaseStudiesDefaultController extends AbstractController
  13. {
  14.     public function __construct(private EntityManagerInterface $em, private PaginatorInterface $paginator)
  15.     {
  16.     }
  17.     /**
  18.      * @CmsComponent("Embed CaseStudies", active=true, routeName="embed_casestudies")
  19.      */
  20.     #[Route(path'/tlb-casestudies'name'embed_casestudies')]
  21.     public function embedCaseStudies(Request $request): Response
  22.     {
  23.         $perpage 12;
  24.         $query $this->em->createQuery('SELECT e FROM App:CaseStudies e WHERE e.deleted = 0 AND e.active = 1');
  25.         $paginatedCaseStudies $this->paginator->paginate($query$request->query->getInt('page'1), $perpage);
  26.         return $this->render('@theme/casestudies/casestudies.html.twig', [
  27.             'studies' => $paginatedCaseStudies,
  28.         ]);
  29.     }
  30.     /**
  31.      * @CmsComponent("Featured Case Study", active=true, routeName="embed_casestudies_featured")
  32.      *
  33.      * @param mixed $request
  34.      */
  35.     #[Route(path'/tlb-casestudies/featured'name'embed_casestudies_featured')]
  36.     public function embedFeaturedCaseStudy(Request $request): Response
  37.     {
  38.         $study $this->em->getRepository(CaseStudies::class)->findLastestFeatured();
  39.         return $this->render('@theme/casestudies/featured_casestudy.html.twig', [
  40.             'study' => $study,
  41.         ]);
  42.     }
  43.     /**
  44.      * @CmsComponent("Embed Testimonial Slider", active=true, routeName="embed_testimonial_slider")
  45.      */
  46.     #[Route(path'/tlb-testimonials'name'embed_testimonial_slider')]
  47.     public function embedTestimonialSlider(Request $request): Response
  48.     {
  49.         $testimonials $this->em->getRepository(Testimonial::class)->findBy(['active' => true'deleted' => false], ['sortOrder' => 'ASC']);
  50.         return $this->render('@theme/casestudies/testimonial_slider.html.twig', [
  51.             'testimonials' => $testimonials,
  52.         ]);
  53.     }
  54.     /**
  55.      * @CmsComponent("Single Case Study", slug="{caseStudy_slug}", slugEntity="CaseStudies", active=true, routeName="embed_casestudy_content")
  56.      */
  57.     #[Route('/tlb-casestudies/content/{caseStudy_slug}'name'embed_casestudy_content')]
  58.     public function embedCaseStudyContent(mixed $caseStudy_slug): Response
  59.     {
  60.         $prev $next null;
  61.         $study $this->em->getRepository(CaseStudies::class)->findBySlugWithGallery($caseStudy_slug);
  62.         if (!$study) {
  63.             return new Response('Not Found');
  64.         }
  65.         $next $this->em->getRepository(CaseStudies::class)->findNextPublished($study);
  66.         $prev $this->em->getRepository(CaseStudies::class)->findLastPublished($study);
  67.         return $this->render('@theme/casestudies/casestudy.html.twig', [
  68.             'study' => $study,
  69.             'prev' => $prev,
  70.             'next' => $next,
  71.         ]);
  72.     }
  73. }