<?php
declare(strict_types=1);
/**
* @author Mehrez Labidi
*/
namespace App\Controller;
use App\Services\MetaTag;
use App\Services\ManagerEntity\{
DocumentationManagers,
StatDonneesCessionReprise
};
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use App\Twig\TranslationExtension;
class DocumentationController extends EntityUsingController {
public const MAX_AGE = 43200; // 12heures
/**
* @var \App\Services\ManagerEntity\DocumentationManagers
*/
private $dm;
/**
* @var EntityManagerInterface
*/
private $em;
/**
* @var MetaTag
*/
private $metaTag;
/**
*
* @var type
*/
private $stat;
public function __construct(EntityManagerInterface $em, DocumentationManagers $dm, StatDonneesCessionReprise $stat, MetaTag $metaTag) {
$this->dm = $dm;
$this->em = $em;
$this->stat = $stat;
$this->metaTag = $metaTag;
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
public function documentation() {
$response = $this->render(
'documentation/documentation.html.twig',
[
'controller_name' => 'DocumentationController',
]
);
$response->setPublic();
$response->setMaxAge(self::MAX_AGE); // 12heures
return $response;
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
public function avisExperts(PaginatorInterface $paginator, Request $request) {
$listAvis = $this->dm->getListAvisPagination($request, $paginator);
// parameters to template
return $this->render('documentation/avis_experts.html.twig', [
'controller_name' => 'DocumentationController',
'listAvis' => $listAvis,
]);
}
/**
* @param $idavis
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function avisExpert(Request $request, TranslationExtension $translationExtension, $idavis) {
if (!$idavis) {
throw $this->createNotFoundException('No avis expert found for id ' . $idavis);
}
$avis = $this->dm->avisDetails($idavis);
$metaTitle = 'avis d\'expert FUSACQ, %$titre_avis%$';
$metaDescription = 'consultez l\'avis d\'expert FUSACQ, %$titre_avis%$';
$arrayVarsTrans['titre_avis'] = $avis['question'];
$lang = $request->getSession()->get('lang');
$metaTag = $this->metaTag
->setTitle($translationExtension->translate($metaTitle, $lang, "", "M", "", $arrayVarsTrans))
->setDescription($translationExtension->translate($metaDescription, $lang, "", "M", "", $arrayVarsTrans));
return $this->render('documentation/avis_expert.html.twig', [
'metaTag' => $metaTag,
'controller_name' => 'DocumentationController',
'avis' => $avis,
]);
}
/**
* Affiche les statistiques des cessions d'entreprises selon différents critères.
*
* Cette fonction récupère et traite les données statistiques sur les cessions d'entreprises
* en fonction des filtres spécifiés dans la requête. Elle définit également les méta-données
* SEO appropriées selon le type de donnée sélectionné (CA, secteur, effectif ou localisation).
*
* @param Request $request La requête HTTP contenant les filtres à appliquer
* @param string $codePays Le code du pays pour lequel récupérer les statistiques (non utilisé dans le code actuel)
*
* @return Response Une réponse contenant la vue rendue avec les données statistiques
*
* @throws \Exception Si une erreur survient lors de la récupération ou du traitement des données
*/
public function donnneesCession(Request $request, $codePays) {
$filters = (!empty($request->query->all())) ? $request->query->all() : ["donnee" => "ca"]; // le choix par defaut
$data = $this->stat->getResultCession($filters);
switch ($filters["donnee"]) {
case "secteur":
$metaTitle = "Statistiques des cessions d'entreprises par secteur | Fusacq";
$metaDescription = "Consultez les statistiques complètes des cessions d'entreprises en France analysées par secteur d'activité. Données exclusives Fusacq.";
break;
case "ca":
$metaTitle = "Statistiques des cessions d'entreprises par CA | Fusacq";
$metaDescription = "Consultez les statistiques complètes des cessions d'entreprises en France analysées par chiffre d'affaires. Données exclusives Fusacq.";
break;
case "nb_personnes":
$metaTitle = "Statistiques des cessions d'entreprises par effectif | Fusacq";
$metaDescription = "Consultez les statistiques complètes des cessions d'entreprises en France analysées par nombre de salariés . Données exclusives Fusacq.";
break;
case "localisation":
$metaTitle = "Statistiques des cessions d'entreprises par localisation | Fusacq";
$metaDescription = "Consultez les statistiques complètes des cessions d'entreprises en France analysées par localisation géographique. Données exclusives Fusacq.";
break;
default:
$metaTitle = "Statistiques des cessions d'entreprises par CA, secteur, effectif et localisation | Fusacq";
$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.";
}
$metaTag = $this->metaTag
->setTitle($metaTitle)
->setDescription($metaDescription);
return $this->render('documentation/donnnees_cession.html.twig', [
'controller_name' => 'DocumentationController', 'metaTag' => $metaTag,
"data" => $data, "filters" => $filters
]);
}
/**
* Affiche les statistiques des acquisitions d'entreprises selon différents critères.
*
* Cette fonction récupère et traite les données statistiques sur les acquisitions d'entreprises
* en fonction des filtres spécifiés dans la requête. Elle définit également les méta-données
* SEO appropriées selon le type de donnée sélectionné.
*
* @param Request $request La requête HTTP contenant les filtres à appliquer
* @param string $codePays Le code du pays pour lequel récupérer les statistiques (non utilisé dans le code actuel)
*
* @return Response Une réponse contenant la vue rendue avec les données statistiques
*
* @throws \Exception Si une erreur survient lors de la récupération ou du traitement des données
*/
public function donnneesReprise(Request $request, $codePays) {
$filters = (!empty($request->query->all())) ? $request->query->all() : ["donnee" => "age"]; // le choix par defaut
$data = $this->stat->getResultAcquisition($filters);
switch ($filters["donnee"]) {
case "age":
$metaTitle = "Statistiques des acquisitions d'entreprises par âge| Fusacq";
$metaDescription = "Analysez les tendances du marché des acquisitions d'entreprises en France selon l'âge des acquéreurs. Données exclusives Fusacq.";
break;
case "secteur":
$metaTitle = "Statistiques des acquisitions d'entreprises par secteur | Fusacq";
$metaDescription = "Analysez les tendances du marché des acquisitions d'entreprises en France selon le secteur d'activité. Données exclusives Fusacq.";
break;
case "localisation":
$metaTitle = "Statistiques des acquisitions d'entreprises par localisation | Fusacq";
$metaDescription = "Analysez les tendances du marché des acquisitions d'entreprises en France selon la localisation géographique . Données exclusives Fusacq.";
break;
case "apport":
$metaTitle = "Statistiques des acquisitions d'entreprises par apport | Fusacq";
$metaDescription = "Analysez les tendances du marché des acquisitions d'entreprises en France selon l'apport personnel. Données exclusives Fusacq.";
break;
default:
$metaTitle = "Statistiques des acquisitions d'entreprises par âge, secteur, localisation et apport | Fusacq";
$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.";
}
$metaTag = $this->metaTag
->setTitle($metaTitle)
->setDescription($metaDescription);
return $this->render('documentation/donnnees_reprise.html.twig', [
'controller_name' => 'DocumentationController', 'metaTag' => $metaTag,
"data" => $data, "filters" => $filters
]);
}
}