src/Controller/GrilleAnalysePostMerController.php line 76

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Mehrez Labidi
  5.  */
  6. namespace App\Controller;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use App\Helper\Utils;
  10. use App\Entity\{
  11.     GrilleAnalysePostMer,
  12.     FeedbackFeuilleRoute,
  13.     AnnoncesVendeur
  14. };
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Component\HttpFoundation\{
  17.     Request,
  18.     Response
  19. };
  20. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  21. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  22. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  23. use App\Services\PDFGenerator;
  24. use App\Services\MetaTag;
  25. use App\Services\ManagerEntity\AnnoncesManagers;
  26. class GrilleAnalysePostMerController extends EntityUsingController {
  27.     public const MAX_AGE 43200// 12heures
  28.     private $em;
  29.     private $am;
  30.     private $pdf;
  31.     public function __construct(EntityManagerInterface $emPDFGenerator $pdfMetaTag $metaTagAnnoncesManagers $am) {
  32.         $this->em $em;
  33.         $this->am $am;
  34.         $this->pdf $pdf;
  35.         $this->metaTag $metaTag;
  36.     }
  37.     public function consulter(Request $request$id_annonce$type_raprochement$codePays) {
  38.         $this->denyAccessUnlessGranted('ROLE_FEUILLE_ROUTE_STRATEGIQUE', [// ELITE ou feuille deja commadé !
  39.             'id_annonce' => $id_annonce
  40.         ]);
  41.         $grille $this->em->getRepository(GrilleAnalysePostMer::class)->detailGrille($id_annonce);
  42.         if (!$grille) {
  43.             throw $this->createNotFoundException('Page introuvable');
  44.         }
  45.         $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'];
  46.         return $this->pdf->generatePDFviewBrowser(
  47.                         'templates_pdf/annonces/grille_analyse_post_mer/feuille_de_route_repreneur.html.twig',
  48.                         [
  49.                             'titre_annonce' => $grille['titre_annonce'] ?? '',
  50.                             'synthese_executive' => $grille['synthese_executive'] ?? '',
  51.                             'enjeu_structurant_dominant' => $grille['enjeu_structurant_dominant'] ?? '',
  52.                             'analyse_marche' => $grille['analyse_marche'] ?? '',
  53.                             'analyse_pilotage_et_organisation' => $grille['analyse_pilotage_et_organisation'] ?? [],
  54.                             'analyse_clientele' => $grille['analyse_clientele'] ?? [],
  55.                             'analyse_financiere' => $grille['analyse_financiere'] ?? [],
  56.                             'leviers_strategiques' => $grille['leviers_strategiques'] ?? [],
  57.                             'fil_conducteur' => $grille['fil_conducteur'] ?? '',
  58.                             'priorites_premier_echange' => $grille['priorites_premier_echange'] ?? [],
  59.                             'dynamique_post_reprise' => $grille['dynamique_post_reprise'] ?? '',
  60.                             'identifiant' => $grille['identifiant'] ?? '',
  61.                         ],
  62.                         'feuille_de_route_' $grille['identifiant'],
  63.                         'Feuille de route repreneur',
  64.                         $footer
  65.                 );
  66.     }
  67.     public function exempleFeuilleRoute(Request $request$codePays) {
  68.         $metaTag $this->metaTag
  69.                 ->setTitle("Exemple de feuille de route stratégique")
  70.                 ->setDescription("Découvrez un exemple réel de feuille de route stratégique.");
  71.         $annonce $this->am->getAnnonceVendeurById(GrilleAnalysePostMer::ID_ANNONCE_EXEMPLENULLfalse);
  72.         $grillePostMer $this->em->getRepository(GrilleAnalysePostMer::class)->detailGrille(GrilleAnalysePostMer::ID_ANNONCE_EXEMPLE);
  73.         $response $this->render('reprendre_entreprise/fragments/feuille_route_repreneur/exemple_feuille_route.html.twig', [
  74.             "metaTag" => $metaTag,
  75.             "grillePostMer" => $grillePostMer ?? [],
  76.             "annonce" => $annonce,
  77.         ]);
  78.         $response->setPublic();
  79.         $response->setMaxAge(self::MAX_AGE); // 12heures
  80.         return $response;
  81.     }
  82.     public function feedbacks(Request $request$feuille_route_id$codePays) {
  83.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  84.         $user $this->getUser(); // CURRENT USER
  85.         $feedback $this->em->getRepository(FeedbackFeuilleRoute::class)
  86.                 ->findOneByIdUtilisateurIdFeuilleRoute((int) $user->getId(), (int) $feuille_route_id);
  87.         $feedback Utils::entityToArray($feedback);
  88.         if ($feedback) {
  89.             $response $this->render(
  90.                     'reprendre_entreprise/fragments/feuille_route_repreneur/feedbacks_done.html.twig',
  91.                     [
  92.                         'feuille_route_id' => $feuille_route_id,
  93.                         "feedback" => $feedback,
  94.                         'codePays' => $codePays,
  95.                     ]
  96.             );
  97.         } else {
  98.             $response $this->render(
  99.                     'reprendre_entreprise/fragments/feuille_route_repreneur/feedbacks.html.twig',
  100.                     [
  101.                         'feuille_route_id' => $feuille_route_id,
  102.                         'codePays' => $codePays,
  103.                     ]
  104.             );
  105.         }
  106.         $response->setPublic();
  107.         $response->setMaxAge(self::MAX_AGE); // 12heures
  108.         return $response;
  109.     }
  110. }