<?php
declare(strict_types=1);
/**
* @author Mehrez Labidi
*/
namespace App\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use App\Helper\Utils;
use App\Entity\{
GrilleAnalysePostMer,
FeedbackFeuilleRoute,
AnnoncesVendeur
};
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\{
Request,
Response
};
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use App\Services\PDFGenerator;
use App\Services\MetaTag;
use App\Services\ManagerEntity\AnnoncesManagers;
class GrilleAnalysePostMerController extends EntityUsingController {
public const MAX_AGE = 43200; // 12heures
private $em;
private $am;
private $pdf;
public function __construct(EntityManagerInterface $em, PDFGenerator $pdf, MetaTag $metaTag, AnnoncesManagers $am) {
$this->em = $em;
$this->am = $am;
$this->pdf = $pdf;
$this->metaTag = $metaTag;
}
public function consulter(Request $request, $id_annonce, $type_raprochement, $codePays) {
$this->denyAccessUnlessGranted('ROLE_FEUILLE_ROUTE_STRATEGIQUE', [// ELITE ou feuille deja commadé !
'id_annonce' => $id_annonce
]);
$grille = $this->em->getRepository(GrilleAnalysePostMer::class)->detailGrille($id_annonce);
if (!$grille) {
throw $this->createNotFoundException('Page introuvable');
}
$footer = "Ce rapport a été généré automatiquement par la plateforme d’intelligence artificielle FUSACQ ELITE et son moteur d’analyse stratégique, alimentée par les données de l’annonce FUSACQ V" . $grille['identifiant'];
return $this->pdf->generatePDFviewBrowser(
'templates_pdf/annonces/grille_analyse_post_mer/feuille_de_route_repreneur.html.twig',
[
'titre_annonce' => $grille['titre_annonce'] ?? '',
'synthese_executive' => $grille['synthese_executive'] ?? '',
'enjeu_structurant_dominant' => $grille['enjeu_structurant_dominant'] ?? '',
'analyse_marche' => $grille['analyse_marche'] ?? '',
'analyse_pilotage_et_organisation' => $grille['analyse_pilotage_et_organisation'] ?? [],
'analyse_clientele' => $grille['analyse_clientele'] ?? [],
'analyse_financiere' => $grille['analyse_financiere'] ?? [],
'leviers_strategiques' => $grille['leviers_strategiques'] ?? [],
'fil_conducteur' => $grille['fil_conducteur'] ?? '',
'priorites_premier_echange' => $grille['priorites_premier_echange'] ?? [],
'dynamique_post_reprise' => $grille['dynamique_post_reprise'] ?? '',
'identifiant' => $grille['identifiant'] ?? '',
],
'feuille_de_route_' . $grille['identifiant'],
'Feuille de route repreneur',
$footer
);
}
public function exempleFeuilleRoute(Request $request, $codePays) {
$metaTag = $this->metaTag
->setTitle("Exemple de feuille de route stratégique")
->setDescription("Découvrez un exemple réel de feuille de route stratégique.");
$annonce = $this->am->getAnnonceVendeurById(GrilleAnalysePostMer::ID_ANNONCE_EXEMPLE, NULL, false);
$grillePostMer = $this->em->getRepository(GrilleAnalysePostMer::class)->detailGrille(GrilleAnalysePostMer::ID_ANNONCE_EXEMPLE);
$response = $this->render('reprendre_entreprise/fragments/feuille_route_repreneur/exemple_feuille_route.html.twig', [
"metaTag" => $metaTag,
"grillePostMer" => $grillePostMer ?? [],
"annonce" => $annonce,
]);
$response->setPublic();
$response->setMaxAge(self::MAX_AGE); // 12heures
return $response;
}
public function feedbacks(Request $request, $feuille_route_id, $codePays) {
$this->denyAccessUnlessGranted('ROLE_USER'); // page inaccessible sans authentification
$user = $this->getUser(); // CURRENT USER
$feedback = $this->em->getRepository(FeedbackFeuilleRoute::class)
->findOneByIdUtilisateurIdFeuilleRoute((int) $user->getId(), (int) $feuille_route_id);
$feedback = Utils::entityToArray($feedback);
if ($feedback) {
$response = $this->render(
'reprendre_entreprise/fragments/feuille_route_repreneur/feedbacks_done.html.twig',
[
'feuille_route_id' => $feuille_route_id,
"feedback" => $feedback,
'codePays' => $codePays,
]
);
} else {
$response = $this->render(
'reprendre_entreprise/fragments/feuille_route_repreneur/feedbacks.html.twig',
[
'feuille_route_id' => $feuille_route_id,
'codePays' => $codePays,
]
);
}
$response->setPublic();
$response->setMaxAge(self::MAX_AGE); // 12heures
return $response;
}
}