src/Controller/ActivitiesController.php line 112

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\ActivitiesRepository;
  4. use App\Repository\DocumentsRepository;
  5. use App\Repository\TitlesRepository;
  6. use Psr\Cache\InvalidArgumentException;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Contracts\Cache\CacheInterface;
  12. use Symfony\Contracts\Cache\ItemInterface;
  13. class ActivitiesController extends AbstractController
  14. {
  15.     /**
  16.      * @Route({
  17.      *     "fr": "/fr/activite",
  18.      *     "en": "/en/our-activities"
  19.      * }, name="app_activities_index")
  20.      */
  21.     public function index(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
  22.     {
  23.         $domain = $activitiesRepository->findActivitiesByTag('domain_index');
  24.         $documents = $documentsRepository->findDocsByTag('docs_about');
  25.         return $this->render('activities/index.html.twig', [
  26.             'domains' => $domain,
  27.             'docs' => $documents
  28.         ]);
  29.     }
  30.     /**
  31.      * @Route({
  32.      *     "fr": "/fr/processus-titrisation",
  33.      *     "en": "/en/process"
  34.      * }, name="app_activities_process")
  35.      */
  36.     public function process(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
  37.     {
  38.         $process = $activitiesRepository->findActivitiesByTag('process_index');
  39.         $documents = $documentsRepository->findDocsByTag('docs_about');
  40.         $processdetail = $activitiesRepository->findActivitiesByTag('process_detail');
  41.         return $this->render('activities/process.html.twig', [
  42.             'processs' => $process,
  43.             'processDetail' => $processdetail,
  44.             'docs' => $documents
  45.         ]);
  46.     }
  47.     /**
  48.      * @Route({
  49.      *     "fr": "/fr/processus-cas-etude",
  50.      *     "en": "/en/process-study-case"
  51.      * }, name="app_process_etude")
  52.      */
  53.     public function etude(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
  54.     {
  55.         $process = $activitiesRepository->findActivitiesByTag('process_etude');
  56.         $documents = $documentsRepository->findDocsByTag('docs_about');
  57.         $etudeContent = $activitiesRepository->findActivitiesByTag('etude_content');
  58.         return $this->render('activities/etude.html.twig', [
  59.             'processEtude' => $process,
  60.             'etudes' => $etudeContent,
  61.             'docs' => $documents
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route({
  66.      *     "fr": "/fr/partenariats-collaboration",
  67.      *     "en": "/en/partnership-collaboration"
  68.      * }, name="app_activities_partner")
  69.      */
  70.     public function partnership(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
  71.     {
  72.         $process = $activitiesRepository->findActivitiesByTag('partnership_index');
  73.         $documents = $documentsRepository->findDocsByTag('docs_about');
  74.         return $this->render('activities/partners.html.twig', [
  75.             'partnerships' => $process,
  76.             'docs' => $documents
  77.         ]);
  78.     }
  79.     /**
  80.      * @Route({
  81.      *     "fr": "/fr/innovations-financieres",
  82.      *     "en": "/en/finacials-innovations"
  83.      * }, name="app_activities_fincance")
  84.      */
  85.     public function finance(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
  86.     {
  87.         $process = $activitiesRepository->findActivitiesByTag('finances_index');
  88.         $documents = $documentsRepository->findDocsByTag('docs_about');
  89.         return $this->render('activities/finance.html.twig', [
  90.             'partnerships' => $process,
  91.             'docs' => $documents
  92.         ]);
  93.     }
  94.     /**
  95.      * @Route("/{_locale<%app.supported_locales%>}/activities/process/{slug}", name="app_activities_processdetails", requirements={"slug": "[a-z0-9\-]*"})
  96.      * @param $slug
  97.      * @param ActivitiesRepository $activitiesRepository
  98.      * @param CacheInterface $cache
  99.      * @return Response
  100.      * @throws InvalidArgumentException
  101.      */
  102.     public function processDetails($slug, ActivitiesRepository $activitiesRepository, CacheInterface $cache, DocumentsRepository $documentsRepository): Response
  103.     {
  104. //        $popular = $newsRepository->findByIsActive(1);
  105.         $documents = $documentsRepository->findDocsByTag('docs_about');
  106.         $processDetail = $cache->get('app_activities_processdetails' . $slug, function (ItemInterface $item) use ($activitiesRepository, $slug) {
  107.             $item->expiresAfter(20);
  108.             return $activitiesRepository->findOneBy(['slug' => $slug]);
  109.         });
  110.         if (!$processDetail) {
  111.             throw new NotFoundHttpException('Pas d\'annonce trouvĂ©e');
  112.         }
  113.         return $this->render('activities/details.html.twig', [
  114.             'processDetail' => $processDetail,
  115.             'docs' => $documents
  116. //            'popularNews' => $popular
  117.         ]);
  118.     }
  119. }