src/Controller/FrontEndDefaultController.php line 156

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Page;
  4. use App\Entity\Value;
  5. use App\Entity\Client;
  6. use App\Entity\Sector;
  7. use App\Entity\History;
  8. use App\Entity\Service;
  9. use App\Entity\Vacancy;
  10. use App\Entity\CaseStudies;
  11. use App\Entity\Testimonial;
  12. use App\Entity\Accreditation;
  13. use App\Annotation\CmsComponent;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. class FrontEndDefaultController extends AbstractController
  21. {
  22.     // /**
  23.     //  * @CmsComponent("Embed Home Featured Pages", active=true, routeName="embed_home_featured_pages")
  24.     //  */
  25.     // #[Route(path: '/pcgc-home-featured-pages', name: 'embed_home_featured_pages')]
  26.     // public function embedHomeFeaturedPages(Request $request, EntityManagerInterface $em): Response
  27.     // {
  28.     //     $pages = $em->getRepository(Page::class)->findBy(
  29.     //       ['deleted' => false, 'active' => true, 'featured' => true],
  30.     //       ['sortOrder' => 'ASC'],
  31.     //       3, 0
  32.     //     );
  33.     //     return $this->render('@theme/pages/featured.html.twig', [
  34.     //         'pages' => $pages,
  35.     //     ]);
  36.     // }
  37.     // /**
  38.     //  * @CmsComponent("Embed Footer Featured Pages", active=true, routeName="embed_footer_featured_pages")
  39.     //  */
  40.     // #[Route(path: '/pcgc-footer-featured-pages', name: 'embed_footer_featured_pages')]
  41.     // public function embedFooterFeaturedPages(Request $request, EntityManagerInterface $em): Response
  42.     // {
  43.     //     $pages = $em->getRepository(Page::class)->findBy(
  44.     //       ['deleted' => false, 'active' => true, 'footerFeatured' => true],
  45.     //       ['sortOrder' => 'ASC'],
  46.     //       3, 0
  47.     //     );
  48.     //     return $this->render('@theme/pages/featured-footer.html.twig', [
  49.     //         'pages' => $pages,
  50.     //     ]);
  51.     // }
  52.     /**
  53.      * @CmsComponent("Embed Featured Sectors", active=true, routeName="embed_featured_sectors")
  54.      */
  55.     #[Route(path'/pcgc-featured-sectors'name'embed_featured_sectors')]
  56.     public function embedFeaturedSectors(Request $requestEntityManagerInterface $emPaginatorInterface $paginator): Response
  57.     {
  58.         $perpage 12;
  59.         $query $em->createQuery('SELECT s FROM App:Sector s WHERE s.deleted = 0 AND s.active = 1 AND s.featured = 1 AND s.parent IS NULL ORDER BY s.sortOrder ASC');
  60.         $paginatedResults $paginator->paginate($query$request->query->getInt('page'1), $perpage);
  61.         return $this->render('@theme/sectors/featured.html.twig', [
  62.             'sectors' => $paginatedResults,
  63.         ]);
  64.     }
  65.     /**
  66.      * @CmsComponent("Embed Sectors", active=true, routeName="embed_sectors")
  67.      */
  68.     #[Route(path'/pcgc-sectors'name'embed_sectors')]
  69.     public function embedSectors(Request $requestEntityManagerInterface $emPaginatorInterface $paginator): Response
  70.     {
  71.         $perpage 12;
  72.         $query $em->createQuery('SELECT s FROM App:Sector s WHERE s.deleted = 0 AND s.active = 1 AND s.parent IS NULL ORDER BY s.sortOrder ASC');
  73.         $paginatedResults $paginator->paginate($query$request->query->getInt('page'1), $perpage);
  74.         return $this->render('@theme/sectors/index.html.twig', [
  75.             'sectors' => $paginatedResults,
  76.         ]);
  77.     }
  78.     /**
  79.      * @CmsComponent("Embed Sectors (blocks)", active=true, routeName="embed_sectors_blocks")
  80.      */
  81.     #[Route(path'/pcgc-sectors-blocks'name'embed_sectors_blocks')]
  82.     public function embedSectorBlocks(Request $requestEntityManagerInterface $emPaginatorInterface $paginator): Response
  83.     {
  84.         return $this->render('@theme/sectors/blocks.html.twig', [
  85.             'sectors' => $em->getRepository(Sector::class)->findBy(['deleted' => false'active' => true'parent' => null], ['sortOrder' => 'ASC'])
  86.         ]);
  87.     }
  88.     /**
  89.      * @CmsComponent("Embed Sector", slug="{sector_slug}", slugEntity="Sector", active=true, routeName="embed_sector")
  90.      */
  91.     #[Route(path'/pcgc-sectors/{sector_slug}'name'embed_sector')]
  92.     public function embedSector(EntityManagerInterface $emRequest $requestmixed $sector_slug)
  93.     {
  94.         $sector $em->getRepository(Sector::class)->findOneBy(['slug' => $sector_slug'deleted' => false'active' => true]);
  95.         if (! $sector) {
  96.             return new Response('Not Found');
  97.         }
  98.         $sectorForQuery $sector;
  99.         if ($sector->getParent()) {
  100.             $sectorForQuery $sector->getParent();
  101.         }
  102.         $otherSectors $em->getRepository(Sector::class)->findBy(['deleted' => false'active' => true'parent' => $sectorForQuery], ['sortOrder' => 'ASC']);
  103.         return $this->render('@theme/sectors/sector.html.twig', [
  104.             'sector' => $sector,
  105.             'otherSectors' => $otherSectors,
  106.         ]);
  107.     }
  108.     /**
  109.      * @CmsComponent("Embed Services", active=true, routeName="embed_services")
  110.      */
  111.     #[Route(path'/pcgc-services'name'embed_services')]
  112.     public function embedServices(Request $requestEntityManagerInterface $emPaginatorInterface $paginator): Response
  113.     {
  114.         $perpage 12;
  115.         $query $em->createQuery('SELECT s FROM App:Service s WHERE s.deleted = 0 AND s.active = 1 AND s.parent IS NULL ORDER BY s.sortOrder ASC');
  116.         $paginatedResults $paginator->paginate($query$request->query->getInt('page'1), $perpage);
  117.         return $this->render('@theme/services/index.html.twig', [
  118.             'services' => $paginatedResults,
  119.         ]);
  120.     }
  121.     /**
  122.      * @CmsComponent("Embed Service", slug="{service_slug}", slugEntity="Service", active=true, routeName="embed_service")
  123.      */
  124.     #[Route(path'/pcgc-services/{service_slug}'name'embed_service')]
  125.     public function embedService(EntityManagerInterface $emRequest $requestmixed $service_slug)
  126.     {
  127.         $service $em->getRepository(Service::class)->findOneBy(['slug' => $service_slug'deleted' => false'active' => true]);
  128.         if (! $service) {
  129.             return new Response('Not Found');
  130.         }
  131.         $allServices $em->getRepository(Service::class)->findBy(['deleted' => false'active' => true'parent' => null], ['sortOrder' => 'ASC']);
  132.         return $this->render('@theme/services/service.html.twig', [
  133.             'service' => $service,
  134.             'allServices' => $allServices,
  135.         ]);
  136.     }
  137.     // /**
  138.     //  * @CmsComponent("Embed Sectors And Service Icons", active=true, routeName="embed_sectors_services_icons")
  139.     //  */
  140.     // #[Route(path: '/pcgc-sectors-services-icons', name: 'embed_sectors_services_icons')]
  141.     // public function embedSectorsServicesIcons(EntityManagerInterface $em)
  142.     // {
  143.     //     $sectors = $em->getRepository(Sector::class)->findBy(['deleted' => false, 'active' => true, 'parent' => null], ['sortOrder' => 'ASC']);
  144.     //     $services = $em->getRepository(Service::class)->findBy(['deleted' => false, 'active' => true, 'parent' => null], ['sortOrder' => 'ASC']);
  145.     //     return $this->render('@theme/common/sectors-services-icons.html.twig', [
  146.     //         'sectors' => $sectors,
  147.     //         'services' => $services,
  148.     //     ]);
  149.     // }
  150.     // /**
  151.     //  * @CmsComponent("Embed History", active=true, routeName="embed_history")
  152.     //  */
  153.     // #[Route(path: '/pcgc-history', name: 'embed_history')]
  154.     // public function embedHistory(EntityManagerInterface $em)
  155.     // {
  156.     //     $histories = $em->getRepository(History::class)->findBy(['deleted' => false, 'active' => true], ['year' => 'ASC']);
  157.     //     return $this->render('@theme/history/index.html.twig', [
  158.     //         'histories' => $histories,
  159.     //     ]);
  160.     // }
  161.     /**
  162.      * @CmsComponent("Embed Client Slider", active=true, routeName="embed_client_slider")
  163.      */
  164.     #[Route(path'/pcgc-client-slider'name'embed_client_slider')]
  165.     public function embedClientSlider(EntityManagerInterface $em)
  166.     {
  167.         $clients $em->getRepository(Client::class)->findBy(
  168.             [
  169.                 'deleted' => false,
  170.                 'active' => true,
  171.                 'featured' => true
  172.             ],
  173.             [
  174.                 'sortOrder' => 'ASC'
  175.             ]
  176.         );
  177.         return $this->render('@theme/clients/slider.html.twig', [
  178.             'clients' => $clients,
  179.         ]);
  180.     }
  181.     // /**
  182.     //  * @CmsComponent("Embed Value Slider", active=true, routeName="embed_value_slider")
  183.     //  */
  184.     // #[Route(path: '/pcgc-value-slider', name: 'embed_value_slider')]
  185.     // public function embedValueSlider(EntityManagerInterface $em)
  186.     // {
  187.     //     $values = $em->getRepository(Value::class)->findBy(
  188.     //         [
  189.     //             'deleted' => false,
  190.     //             'active' => true,
  191.     //         ],
  192.     //         [
  193.     //             'sortOrder' => 'ASC'
  194.     //         ]
  195.     //     );
  196.     //     return $this->render('@theme/values/slider.html.twig', [
  197.     //         'values' => $values,
  198.     //     ]);
  199.     // }
  200.     // /**
  201.     //  * @CmsComponent("Embed Vacancy Sidebar Menu", active=true, routeName="embed_vacancy_sidebar_menu")
  202.     //  */
  203.     // #[Route(path: '/pcgc-vacancy-sidebar-menu', name: 'embed_vacancy_sidebar_menu')]
  204.     // public function embedVacancySidebarMenu(Request $request, EntityManagerInterface $em)
  205.     // {
  206.     //     $pieces = explode('/', $request->getPathInfo());
  207.     //     $vacancies = $em->getRepository(Vacancy::class)->findBy(
  208.     //         [
  209.     //             'deleted' => false,
  210.     //             'active' => true,
  211.     //         ],
  212.     //         [
  213.     //             'sortOrder' => 'ASC'
  214.     //         ]
  215.     //     );
  216.     //     return $this->render('@theme/vacancy/sidebar-menu.html.twig', [
  217.     //         'vacancies' => $vacancies,
  218.     //         'current' => end($pieces)
  219.     //     ]);
  220.     // }
  221.     // /**
  222.     //  * @CmsComponent("Embed Vacancy", slug="{vacancy_slug}", slugEntity="Vacancy", active=true, routeName="embed_vacancy")
  223.     //  */
  224.     // #[Route(path: '/pcgc-vacancies/{vacancy_slug}', name: 'embed_vacancy')]
  225.     // public function embedVacancy(EntityManagerInterface $em, Request $request, mixed $vacancy_slug)
  226.     // {
  227.     //     $vacancy = $em->getRepository(Vacancy::class)->findOneBy(['slug' => $vacancy_slug, 'deleted' => false, 'active' => true]);
  228.     //     if (! $vacancy) {
  229.     //         return new Response('Not Found');
  230.     //     }
  231.     //     return $this->render('@theme/vacancy/vacancy.html.twig', [
  232.     //         'vacancy' => $vacancy
  233.     //     ]);
  234.     // }
  235.     // /**
  236.     //  * @CmsComponent("Embed Testimonials", active=true, routeName="embed_testimonials")
  237.     //  */
  238.     // #[Route(path: '/pcgc-testimonials', name: 'embed_testimonials')]
  239.     // public function embedTestimonials(Request $request, EntityManagerInterface $em)
  240.     // {
  241.     //     $testimonials = $em->getRepository(Testimonial::class)->findBy(
  242.     //         [
  243.     //             'deleted' => false,
  244.     //             'active' => true,
  245.     //         ],
  246.     //         [
  247.     //             'sortOrder' => 'ASC'
  248.     //         ]
  249.     //     );
  250.     //     return $this->render('@theme/testimonials/index.html.twig', [
  251.     //         'testimonials' => $testimonials,
  252.     //     ]);
  253.     // }
  254.     /**
  255.      * @CmsComponent("Embed Featured CaseStudies", active=true, routeName="embed_featured_casestudies")
  256.      */
  257.     #[Route(path'/cms-casestudies-featured'name'embed_featured_casestudies')]
  258.     public function embedFeaturedCaseStudies(EntityManagerInterface $em): \Symfony\Component\HttpFoundation\Response
  259.     {
  260.         $studies $em->getRepository(CaseStudies::class)->findBy(
  261.             ['deleted' => false'active' => true'featured' => true],
  262.             ['sortOrder' => 'ASC'],
  263.             30
  264.         );
  265.         return $this->render('@theme/casestudies/featured_casestudies.html.twig', [
  266.             'studies' => $studies,
  267.         ]);
  268.     }
  269.     /**
  270.      * @CmsComponent("Embed Case Study", slug="{study_slug}", slugEntity="CaseStudies", active=true, routeName="embed_study")
  271.      */
  272.     #[Route(path'/pcgc-casestudies/{study_slug}'name'embed_study')]
  273.     public function embedCaseStudy(EntityManagerInterface $emRequest $requestmixed $study_slug)
  274.     {
  275.         $study $em->getRepository(CaseStudies::class)->findOneBy(['slug' => $study_slug'deleted' => false'active' => true]);
  276.         if (! $study) {
  277.             return new Response('Not Found');
  278.         }
  279.         $next $em->getRepository(CaseStudies::class)->findNextPublished($study);
  280.         $prev $em->getRepository(CaseStudies::class)->findLastPublished($study);
  281.         return $this->render('@theme/casestudies/study.html.twig', [
  282.             'study' => $study,
  283.             'next' => $next,
  284.             'prev' => $prev,
  285.         ]);
  286.     }
  287.     /**
  288.      * @CmsComponent("Embed Accreditations", active=true, routeName="embed_accreditations")
  289.      */
  290.     #[Route(path'/pcgc-accreditations'name'embed_accreditations')]
  291.     public function embedAccreditations(Request $requestEntityManagerInterface $emPaginatorInterface $paginator): Response
  292.     {
  293.         return $this->render('@theme/accreditations/index.html.twig', [
  294.             'accreditations' => $em->getRepository(Accreditation::class)->findBy(['deleted' => false'active' => true], ['sortOrder' => 'ASC']),
  295.         ]);
  296.     }
  297. }