<?php
namespace App\Controller;
use App\Repository\ActivitiesRepository;
use App\Repository\DocumentsRepository;
use App\Repository\TitlesRepository;
use Psr\Cache\InvalidArgumentException;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Cache\CacheInterface;
use Symfony\Contracts\Cache\ItemInterface;
class ActivitiesController extends AbstractController
{
/**
* @Route({
* "fr": "/fr/activite",
* "en": "/en/our-activities"
* }, name="app_activities_index")
*/
public function index(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
{
$domain = $activitiesRepository->findActivitiesByTag('domain_index');
$documents = $documentsRepository->findDocsByTag('docs_about');
return $this->render('activities/index.html.twig', [
'domains' => $domain,
'docs' => $documents
]);
}
/**
* @Route({
* "fr": "/fr/processus-titrisation",
* "en": "/en/process"
* }, name="app_activities_process")
*/
public function process(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
{
$process = $activitiesRepository->findActivitiesByTag('process_index');
$documents = $documentsRepository->findDocsByTag('docs_about');
$processdetail = $activitiesRepository->findActivitiesByTag('process_detail');
return $this->render('activities/process.html.twig', [
'processs' => $process,
'processDetail' => $processdetail,
'docs' => $documents
]);
}
/**
* @Route({
* "fr": "/fr/processus-cas-etude",
* "en": "/en/process-study-case"
* }, name="app_process_etude")
*/
public function etude(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
{
$process = $activitiesRepository->findActivitiesByTag('process_etude');
$documents = $documentsRepository->findDocsByTag('docs_about');
$etudeContent = $activitiesRepository->findActivitiesByTag('etude_content');
return $this->render('activities/etude.html.twig', [
'processEtude' => $process,
'etudes' => $etudeContent,
'docs' => $documents
]);
}
/**
* @Route({
* "fr": "/fr/partenariats-collaboration",
* "en": "/en/partnership-collaboration"
* }, name="app_activities_partner")
*/
public function partnership(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
{
$process = $activitiesRepository->findActivitiesByTag('partnership_index');
$documents = $documentsRepository->findDocsByTag('docs_about');
return $this->render('activities/partners.html.twig', [
'partnerships' => $process,
'docs' => $documents
]);
}
/**
* @Route({
* "fr": "/fr/innovations-financieres",
* "en": "/en/finacials-innovations"
* }, name="app_activities_fincance")
*/
public function finance(TitlesRepository $titlesRepository, ActivitiesRepository $activitiesRepository, DocumentsRepository $documentsRepository): Response
{
$process = $activitiesRepository->findActivitiesByTag('finances_index');
$documents = $documentsRepository->findDocsByTag('docs_about');
return $this->render('activities/finance.html.twig', [
'partnerships' => $process,
'docs' => $documents
]);
}
/**
* @Route("/{_locale<%app.supported_locales%>}/activities/process/{slug}", name="app_activities_processdetails", requirements={"slug": "[a-z0-9\-]*"})
* @param $slug
* @param ActivitiesRepository $activitiesRepository
* @param CacheInterface $cache
* @return Response
* @throws InvalidArgumentException
*/
public function processDetails($slug, ActivitiesRepository $activitiesRepository, CacheInterface $cache, DocumentsRepository $documentsRepository): Response
{
// $popular = $newsRepository->findByIsActive(1);
$documents = $documentsRepository->findDocsByTag('docs_about');
$processDetail = $cache->get('app_activities_processdetails' . $slug, function (ItemInterface $item) use ($activitiesRepository, $slug) {
$item->expiresAfter(20);
return $activitiesRepository->findOneBy(['slug' => $slug]);
});
if (!$processDetail) {
throw new NotFoundHttpException('Pas d\'annonce trouvée');
}
return $this->render('activities/details.html.twig', [
'processDetail' => $processDetail,
'docs' => $documents
// 'popularNews' => $popular
]);
}
}