src/Controller/DocumentationController.php line 71

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Mehrez Labidi
  5.  */
  6. namespace App\Controller;
  7. use App\Services\MetaTag;
  8. use App\Services\ManagerEntity\{
  9.     DocumentationManagers,
  10.     StatDonneesCessionReprise
  11. };
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use App\Twig\TranslationExtension;
  16. class DocumentationController extends EntityUsingController {
  17.     public const MAX_AGE 43200// 12heures
  18.     /**
  19.      * @var \App\Services\ManagerEntity\DocumentationManagers
  20.      */
  21.     private $dm;
  22.     /**
  23.      * @var EntityManagerInterface
  24.      */
  25.     private $em;
  26.     /**
  27.      * @var MetaTag
  28.      */
  29.     private $metaTag;
  30.     /**
  31.      * 
  32.      * @var type
  33.      */
  34.     private $stat;
  35.     public function __construct(EntityManagerInterface $emDocumentationManagers $dmStatDonneesCessionReprise $statMetaTag $metaTag) {
  36.         $this->dm $dm;
  37.         $this->em $em;
  38.         $this->stat $stat;
  39.         $this->metaTag $metaTag;
  40.     }
  41.     /**
  42.      * @return \Symfony\Component\HttpFoundation\Response
  43.      */
  44.     public function documentation() {
  45.         $response $this->render(
  46.                 'documentation/documentation.html.twig',
  47.                 [
  48.                     'controller_name' => 'DocumentationController',
  49.                 ]
  50.         );
  51.         $response->setPublic();
  52.         $response->setMaxAge(self::MAX_AGE); // 12heures
  53.         return $response;
  54.     }
  55.     /**
  56.      * @return \Symfony\Component\HttpFoundation\Response
  57.      */
  58.     public function avisExperts(PaginatorInterface $paginatorRequest $request) {
  59.         $listAvis $this->dm->getListAvisPagination($request$paginator);
  60.         // parameters to template
  61.         return $this->render('documentation/avis_experts.html.twig', [
  62.                     'controller_name' => 'DocumentationController',
  63.                     'listAvis' => $listAvis,
  64.         ]);
  65.     }
  66.     /**
  67.      * @param $idavis
  68.      *
  69.      * @return \Symfony\Component\HttpFoundation\Response
  70.      */
  71.     public function avisExpert(Request $requestTranslationExtension $translationExtension$idavis) {
  72.         if (!$idavis) {
  73.             throw $this->createNotFoundException('No avis expert found for id ' $idavis);
  74.         }
  75.         $avis $this->dm->avisDetails($idavis);
  76.         $metaTitle 'avis d\'expert FUSACQ, %$titre_avis%$';
  77.         $metaDescription 'consultez l\'avis d\'expert FUSACQ, %$titre_avis%$';
  78.         $arrayVarsTrans['titre_avis'] = $avis['question'];
  79.         $lang $request->getSession()->get('lang');
  80.         $metaTag $this->metaTag
  81.                 ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  82.                 ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans));
  83.         return $this->render('documentation/avis_expert.html.twig', [
  84.                     'metaTag' => $metaTag,
  85.                     'controller_name' => 'DocumentationController',
  86.                     'avis' => $avis,
  87.         ]);
  88.     }
  89.     /**
  90.      * Affiche les statistiques des cessions d'entreprises selon différents critères.
  91.      *
  92.      * Cette fonction récupère et traite les données statistiques sur les cessions d'entreprises
  93.      * en fonction des filtres spécifiés dans la requête. Elle définit également les méta-données
  94.      * SEO appropriées selon le type de donnée sélectionné (CA, secteur, effectif ou localisation).
  95.      *
  96.      * @param Request $request La requête HTTP contenant les filtres à appliquer
  97.      * @param string $codePays Le code du pays pour lequel récupérer les statistiques (non utilisé dans le code actuel)
  98.      * 
  99.      * @return Response Une réponse contenant la vue rendue avec les données statistiques
  100.      * 
  101.      * @throws \Exception Si une erreur survient lors de la récupération ou du traitement des données
  102.      */
  103.     public function donnneesCession(Request $request$codePays) {
  104.         $filters = (!empty($request->query->all())) ? $request->query->all() : ["donnee" => "ca"]; // le choix par defaut
  105.         $data $this->stat->getResultCession($filters);
  106.         switch ($filters["donnee"]) {
  107.             case "secteur":
  108.                 $metaTitle "Statistiques des cessions d'entreprises par  secteur | Fusacq";
  109.                 $metaDescription "Consultez les statistiques complètes des cessions d'entreprises en France analysées par secteur d'activité. Données exclusives Fusacq.";
  110.                 break;
  111.             case "ca":
  112.                 $metaTitle "Statistiques des cessions d'entreprises par CA | Fusacq";
  113.                 $metaDescription "Consultez les statistiques complètes des cessions d'entreprises en France analysées par chiffre d'affaires. Données exclusives Fusacq.";
  114.                 break;
  115.             case "nb_personnes":
  116.                 $metaTitle "Statistiques des cessions d'entreprises par effectif | Fusacq";
  117.                 $metaDescription "Consultez les statistiques complètes des cessions d'entreprises en France analysées par nombre de salariés . Données exclusives Fusacq.";
  118.                 break;
  119.             case "localisation":
  120.                 $metaTitle "Statistiques des cessions d'entreprises par  localisation | Fusacq";
  121.                 $metaDescription "Consultez les statistiques complètes des cessions d'entreprises en France analysées par localisation géographique. Données exclusives Fusacq.";
  122.                 break;
  123.             default:
  124.                 $metaTitle "Statistiques des cessions d'entreprises par CA, secteur, effectif et localisation | Fusacq";
  125.                 $metaDescription "Consultez les statistiques complètes des cessions d'entreprises en France analysées par chiffre d'affaires, secteur d'activité, nombre de salariés et localisation géographique. Données exclusives Fusacq.";
  126.         }
  127.         $metaTag $this->metaTag
  128.                 ->setTitle($metaTitle)
  129.                 ->setDescription($metaDescription);
  130.         return $this->render('documentation/donnnees_cession.html.twig', [
  131.                     'controller_name' => 'DocumentationController''metaTag' => $metaTag,
  132.                     "data" => $data"filters" => $filters
  133.         ]);
  134.     }
  135.     /**
  136.      * Affiche les statistiques des acquisitions d'entreprises selon différents critères.
  137.      *
  138.      * Cette fonction récupère et traite les données statistiques sur les acquisitions d'entreprises
  139.      * en fonction des filtres spécifiés dans la requête. Elle définit également les méta-données
  140.      * SEO appropriées selon le type de donnée sélectionné.
  141.      *
  142.      * @param Request $request La requête HTTP contenant les filtres à appliquer
  143.      * @param string $codePays Le code du pays pour lequel récupérer les statistiques (non utilisé dans le code actuel)
  144.      * 
  145.      * @return Response Une réponse contenant la vue rendue avec les données statistiques
  146.      * 
  147.      * @throws \Exception Si une erreur survient lors de la récupération ou du traitement des données
  148.      */
  149.     public function donnneesReprise(Request $request$codePays) {
  150.         $filters = (!empty($request->query->all())) ? $request->query->all() : ["donnee" => "age"]; // le choix par defaut
  151.         $data $this->stat->getResultAcquisition($filters);
  152.         switch ($filters["donnee"]) {
  153.             case "age":
  154.                 $metaTitle "Statistiques des acquisitions d'entreprises par âge| Fusacq";
  155.                 $metaDescription "Analysez les tendances du marché des acquisitions d'entreprises en France selon l'âge des acquéreurs. Données exclusives Fusacq.";
  156.                 break;
  157.             case "secteur":
  158.                 $metaTitle "Statistiques des acquisitions d'entreprises par secteur | Fusacq";
  159.                 $metaDescription "Analysez les tendances du marché des acquisitions d'entreprises en France selon le secteur d'activité. Données exclusives Fusacq.";
  160.                 break;
  161.             case "localisation":
  162.                 $metaTitle "Statistiques des acquisitions d'entreprises par  localisation  | Fusacq";
  163.                 $metaDescription "Analysez les tendances du marché des acquisitions d'entreprises en France selon  la localisation géographique . Données exclusives Fusacq.";
  164.                 break;
  165.             case "apport":
  166.                 $metaTitle "Statistiques des acquisitions d'entreprises par apport | Fusacq";
  167.                 $metaDescription "Analysez les tendances du marché des acquisitions d'entreprises en France selon  l'apport personnel. Données exclusives Fusacq.";
  168.                 break;
  169.             default:
  170.                 $metaTitle "Statistiques des acquisitions d'entreprises par âge, secteur, localisation et apport | Fusacq";
  171.                 $metaDescription "Analysez les tendances du marché des acquisitions d'entreprises en France selon l'âge des acquéreurs, le secteur d'activité, la localisation géographique et l'apport personnel. Données exclusives Fusacq.";
  172.         }
  173.         $metaTag $this->metaTag
  174.                 ->setTitle($metaTitle)
  175.                 ->setDescription($metaDescription);
  176.         return $this->render('documentation/donnnees_reprise.html.twig', [
  177.                     'controller_name' => 'DocumentationController''metaTag' => $metaTag,
  178.                     "data" => $data"filters" => $filters
  179.         ]);
  180.     }
  181. }