src/Controller/Client/ClientWidgetController.php line 635

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Client;
  3. use App\Entity\Actuv2Journal;
  4. use App\Entity\Page;
  5. use App\Entity\SeoPage;
  6. use App\Entity\SeoPageClient;
  7. use App\Entity\Actualiters;
  8. use App\Entity\Actualitecabinet;
  9. use App\Entity\Actuv2Bienetre;
  10. use App\Entity\Announcement;
  11. use App\Entity\ApplyRequest;
  12. use App\Entity\ContactParticipationPlaceExpert;
  13. use App\Entity\PodcastEpisode;
  14. use App\Entity\PodcastHost;
  15. use App\Entity\TypeSeoPage;
  16. use App\Entity\WebsiteNews;
  17. use App\Form\AnnouncementApplyType;
  18. use App\Repository\AccountingFirmRepository;
  19. use App\Repository\Actuv2HelpRepository;
  20. use App\Repository\Actuv2JournalRepository;
  21. use App\Repository\EbookRepository;
  22. use App\Repository\ActualitersRepository;
  23. use App\Repository\ActualitecabinetRepository;
  24. use App\Repository\Actuv2BienetreRepository;
  25. use App\Repository\Actuv2TransformationdigitaleRepository;
  26. use App\Services\QueriesV2Manager;
  27. use App\Repository\UsefulLinkRepository;
  28. use App\Repository\WebsiteNewsRepository;
  29. use App\Repository\AnnouncementRepository;
  30. use App\Repository\PodcastEpisodeRepository;
  31. use App\Services\SimulateurManager;
  32. use App\Services\WebSite;
  33. use App\Services\WidgetMailing;
  34. use DateTimeImmutable;
  35. use Doctrine\ORM\EntityManagerInterface;
  36. use GuzzleHttp\Client;
  37. use Symfony\Component\HttpFoundation\JsonResponse;
  38. use Symfony\Component\HttpFoundation\Request;
  39. use Symfony\Component\HttpFoundation\Response;
  40. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  41. use Symfony\Component\Routing\Annotation\Route;
  42. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  43. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  44. use Symfony\Component\Filesystem\Filesystem;
  45. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  46. use Symfony\Component\HttpFoundation\RedirectResponse;
  47. use Symfony\Component\Mime\Email;
  48. /**
  49.  * Class ClientWidgetController
  50.  * @package App\Controller\Client
  51.  */
  52. class ClientWidgetController extends AbstractClientController
  53. {
  54.     #[Route(path'/actualite-du-mois.php'name'widget_old')]
  55.     #[Route(path'/preview/{host}/actualite-du-mois.php'name'previewwidget_old')]
  56.     public function widgetOld(Request $requeststring $prefix null): Response
  57.     {
  58.         if ($redirect $this->redirectRouteV2($request$prefix)) {
  59.             return $this->redirect($redirect);
  60.         }
  61.         $url $this->generateUrl('client_widget_news_index');
  62.         return $this->redirect($prefix $url);
  63.     }
  64.     #[Route(path'/actualite-du-mois'name'client_widget_news_index')]
  65.     #[Route(path'/preview/{host}/actualite-du-mois'name'previewclient_widget_news_index')]
  66.     public function widgetNewsIndex(Request $requeststring $prefix null): Response
  67.     {
  68.         if ($redirect $this->redirectRouteV2($request$prefix)) {
  69.             return $this->redirect($redirect);
  70.         }
  71.         if ($this->accountingFirm->isActuv2OnlyPodcast()) {
  72.             return $this->redirectToRoute("client_widget_podcast_detail");
  73.         }
  74.         $entityManager $this->getDoctrine()->getManager();
  75.         $seopageclient = new SeoPageClient();
  76.         $parameters $this->accountingFirm->getParameters();
  77.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 12]);
  78.         if ($seopage) {
  79.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  80.         }
  81.         return $this->render('widget_actualite/index.html.twig', ['seopage' => $seopage]);
  82.     }
  83.     #[Route(path'/widget-actu/{token}'name'widget_actu')]
  84.     #[Route(path'/preview/{host}/widget-actu/{token}'name'previewwidget_actu')]
  85.     public function widgetHome(Request $requestQueriesV2Manager $qmAccountingFirmRepository $repositorystring $token)
  86.     {
  87.         $theHost str_replace('www.'''$request->getHost());
  88.         $host $request->get('host') ?: $theHost;
  89.         //$host = 'cabinet-za.de';
  90.         $accountingFirm $repository->findOneBy(['actuv2Token' => $token]);
  91.         if (!$accountingFirm || $accountingFirm->getHost() !== $host) {
  92.             throw new NotFoundHttpException();
  93.         }
  94.         $date $request->query->get('date'false);
  95.         $this->templateBase '/';
  96.         $sondage $qm->getSondage($date);
  97.         $quizrh $qm->getQuizRh($date);
  98.         $quizrhVote $qm->getQuizRhVote($date);
  99.         return $this->render('widget_actu_juridique_v2/home.html.twig', [
  100.             'actus' => $qm->getActualites($date),
  101.             'transformationDigitale' => $qm->getTransformationDigitale($date),
  102.             'infographie' => $qm->getInfographie($date),
  103.             'chiffreDuMois' => $qm->getChiffreDuMois($date),
  104.             'citation' => $qm->getCitation($date),
  105.             'bienEtre' => $qm->getBienEtre($date),
  106.             'podcast' => $qm->getPodcast($date),
  107.             'podcasts' => $qm->getPodcasts($date),
  108.             'sondage' => [
  109.                 'details' => $sondage,
  110.                 'results' => $sondage $qm->getSondageResult($sondage['id']) : null,
  111.             ],
  112.             'nextEvent' => $qm->getNextEvent(),
  113.             'previousPerdiods' => $qm->getPreviousPeriods(),
  114.             'quizrh' => $quizrh,
  115.             'quizrhVote' => $quizrhVote,
  116.         ]);
  117.     }
  118.     #[Route(path'/widget-dates'name'widget_dates')]
  119.     #[Route(path'/preview/{host}/widget-dates'name'previewwidget_dates')]
  120.     public function dates(QueriesV2Manager $qm)
  121.     {
  122.         $tabData $qm->getDates();
  123.         $tabDates = [];
  124.         foreach ($tabData as $lignes) {
  125.             foreach ($lignes as $ligne) {
  126.                 $key array_search($ligne['date'], array_column($tabDates'date'));
  127.                 if ($key === false) { // cas date jamais ajoutée
  128.                     $tabDates[] = ['date' => $ligne['date'], 'lien' => 'calendrier-fiscal.php?id=' $ligne['id']];
  129.                 } else { // cas date déjà ajoutée, donc plusieurs articles à la même date
  130.                     $tabDates[$key] = ['date' => $ligne['date'], 'lien' => 'actualites-calendrier-fiscal.php?date=' $ligne['date']];
  131.                 }
  132.             }
  133.         }
  134.         return $this->json($tabDates);
  135.     }
  136.     #[Route(path'/widget-footer/{token}'name'widget_footer')]
  137.     #[Route(path'/preview/{host}/widget-footer/{token}'name'previewwidget_footer')]
  138.     public function footer(Request $requestAccountingFirmRepository $repositoryQueriesV2Manager $qmWebSite $sitestring $token): Response
  139.     {
  140.         $theHost str_replace('www.'''$request->getHost());
  141.         $host $request->get('host') ?: $theHost;
  142.         // $host = 'cabinet-za.de';
  143.         $accountingFirm $repository->findOneBy(['actuv2Token' => $token]);
  144.         if (!$accountingFirm || $accountingFirm->getHost() !== $host) {
  145.             throw new NotFoundHttpException();
  146.         }
  147.         $this->templateBase '/';
  148.         return $this->render('widget_actu_juridique_v2/widget-footer.html.twig', [
  149.             'footer' => $qm->getFooterData(),
  150.             'serverActuUrl' => $site->getServerActuUrl()
  151.         ]);
  152.     }
  153.     #[Route(path'/actualite-du-mois/mois-{month}'name'client_widget_news_index_past')]
  154.     #[Route(path'/preview/{host}/actualite-du-mois/mois-{month}'name'previewclient_widget_news_index_past')]
  155.     public function widgetNewsIndexPast(Request $request): Response
  156.     {
  157.         $entityManager $this->getDoctrine()->getManager();
  158.         $seopageclient = new SeoPageClient();
  159.         $parameters $this->accountingFirm->getParameters();
  160.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 33]);
  161.         $month $request->get('month');
  162.         if ($seopage) {
  163.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  164.         }
  165.         return $this->render('widget_actualite/index.html.twig', [
  166.             'month' => $month,
  167.             'seopage' => $seopage
  168.         ]);
  169.     }
  170.     #[Route(path'/actualite-du-mois/actucabinet/{id}-{slug}'name'client_widget_news_cabinet_show')]
  171.     #[Route(path'/preview/{host}/actualite-du-mois/actucabinet/{id}-{slug}'name'previewclient_widget_news_cabinet_show')]
  172.     public function widgetNewsCabinetShow(Request $requestQueriesV2Manager $qm): Response
  173.     {
  174.         $entityManager $this->getDoctrine()->getManager();
  175.         $seopageclient = new SeoPageClient();
  176.         $parameters $this->accountingFirm->getParameters();
  177.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 16]);
  178.         $id $request->get('id');
  179.         if ($seopage) {
  180.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  181.         }
  182.         $data $qm->getActualiteCabinetDetails($id);
  183.         //dd($data);
  184.         if ($data != null && $seopage) {
  185.             $seopage->setTitle(str_replace("{{data.titre}}"$data['titre'], $seopage->getTitle()));
  186.             $seopage->setDescription(str_replace("{{data.descriptifTexte}}"substr($data['descriptifTexte'], 0160), $seopage->getDescription()));
  187.         }
  188.         return $this->render('widget_actualite/actu_cabinet.html.twig', [
  189.             'id' => $id,
  190.             'seopage' => $seopage
  191.         ]);
  192.     }
  193.     #[Route(path'/actualite-du-mois/fiscal/liste/{date}'name'client_widget_news_fisc_list_show')]
  194.     #[Route(path'/preview/{host}/actualite-du-mois/fiscal/liste/{date}'name'previewclient_widget_news_fisc_list_show')]
  195.     public function widgetNewsFiscListShow(Request $request): Response
  196.     {
  197.         $entityManager $this->getDoctrine()->getManager();
  198.         $seopageclient = new SeoPageClient();
  199.         $parameters $this->accountingFirm->getParameters();
  200.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 14]);
  201.         $date $request->get('date');
  202.         if ($seopage) {
  203.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  204.         }
  205.         return $this->render('widget_actualite/actu_fiscal_list.html.twig', [
  206.             'date' => $date,
  207.             'seopage' => $seopage
  208.         ]);
  209.     }
  210.     #[Route(path'/actualite-du-mois/fiscal/{id}'name'client_widget_news_fisc_show')]
  211.     #[Route(path'/preview/{host}/actualite-du-mois/fiscal/{id}'name'previewclient_widget_news_fisc_show')]
  212.     public function widgetNewsFiscShow(Request $requestQueriesV2Manager $qm): Response
  213.     {
  214.         $entityManager $this->getDoctrine()->getManager();
  215.         $seopageclient = new SeoPageClient();
  216.         $parameters $this->accountingFirm->getParameters();
  217.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 15]);
  218.         $id $request->get('id');
  219.         if ($seopage) {
  220.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  221.         }
  222.         $data $qm->getCalendrierDetails($id);
  223.         //   var_dump($data);exit;
  224.         if ($data != null && $seopage) {
  225.             $seopage->setTitle(str_replace("{{data.titre}}"$data->getTitre(), $seopage->getTitle()));
  226.             $seopage->setDescription(str_replace("{{data.descriptifTexte}}"substr($data->getDescriptiftexte(), 0160), $seopage->getDescription()));
  227.         }
  228.         return $this->render('widget_actualite/actu_fiscal_article.html.twig', [
  229.             'id' => $id,
  230.             'seopage' => $seopage
  231.         ]);
  232.     }
  233.     #[Route(path'/actualite-du-mois/juridique/{id}-{slug}'name'client_widget_news_juri_show')]
  234.     #[Route(path'/preview/{host}/actualite-du-mois/juridique/{id}-{slug}'name'previewclient_widget_news_juri_show')]
  235.     public function widgetNewsJuriShow(Request $requestQueriesV2Manager $qmstring $prefix null): Response
  236.     {
  237.         $entityManager $this->getDoctrine()->getManager();
  238.         $seopageclient = new SeoPageClient();
  239.         $parameters $this->accountingFirm->getParameters();
  240.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 16]);
  241.         $id $request->get('id');
  242.         if ($seopage) {
  243.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  244.         }
  245.         $data $qm->getActualitesDetails($id);
  246.         if ($data != null && $seopage) {
  247.             $seopage->setTitle(str_replace("{{data.titre}}"$data['titre'], $seopage->getTitle()));
  248.             $seopage->setDescription(str_replace("{{data.descriptifTexte}}"substr($data['descriptifTexte'], 0160), $seopage->getDescription()));
  249.         }
  250.         $histo null;
  251.         $histo $qm->getHistoActualites();
  252.         return $this->render('widget_actualite/actu_juridique.html.twig', [
  253.             'id' => $id,
  254.             'seopage' => $seopage,
  255.             'histo' => $histo,
  256.         ]);
  257.     }
  258.     #[Route(path'/actualite-du-mois/bien-etre'name'client_widget_bien_etre_noid')]
  259.     #[Route(path'/actualite-du-mois/bien-etre/{id}-{slug}'name'client_widget_bien_etre_show')]
  260.     #[Route(path'/preview/{host}/actualite-du-mois/bien-etre/{id}-{slug}'name'previewclient_widget_bien_etre_show')]
  261.     public function widgetNewsBienEtreShow(Request $requestQueriesV2Manager $qmActuv2BienetreRepository $actuv2BienetreRepository): Response
  262.     {
  263.         $entityManager $this->getDoctrine()->getManager();
  264.         $seopageclient = new SeoPageClient();
  265.         $parameters $this->accountingFirm->getParameters();
  266.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 13]);
  267.         $id $request->get('id');
  268.         if ($seopage) {
  269.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  270.         }
  271.         if (isset($id)) {
  272.             $data $qm->getBienEtreDetails($id);
  273.         } else {
  274.             $bienEtre $qm->getBienEtre();
  275.             $data $actuv2BienetreRepository->findOneBy(['id' => $bienEtre['id']]);
  276.             $id $data->getId();
  277.         }
  278.         if ($data != null && $seopage) {
  279.             $seopage->setTitle(str_replace("{{data.titre}}"$data->getTitre(), $seopage->getTitle()));
  280.             $seopage->setDescription(str_replace("{{data.descriptifTexte}}"substr($data->getDescriptiftexte(), 0160), $seopage->getDescription()));
  281.         }
  282.         $histo null;
  283.         $histo $qm->getHistoBienEtre();
  284.         return $this->render('widget_actualite/actu_bien_etre.html.twig', [
  285.             'id' => $id,
  286.             'seopage' => $seopage,
  287.             'histo' => $histo
  288.         ]);
  289.     }
  290.     #[Route(path'/actualite-du-mois/participation-place-a-l-expert'name'client_widget_participation_pal')]
  291.     #[Route(path'/preview/{host}/actualite-du-mois/participation-place-a-l-expert'name'previewclient_widget_participation_pal')]
  292.     public function widgetParticipationPal(Request $requestQueriesV2Manager $qm): Response
  293.     {
  294.         $footer $qm->getFooterData();
  295.         $seopage = new SeoPageClient();
  296.         $seopage->setTitle("Participation place à l'expert");
  297.         $seopage->setDescription("Participation place à l'expert");
  298.         return $this->render('widget_actualite/actu_participation_pal.html.twig', [
  299.             'seopage' => $seopage,
  300.             'footer' => $footer,
  301.             'interne' => true
  302.         ]);
  303.     }
  304.     #[Route('/actualite-du-mois/participation-place-a-l-expert/sendParticipation'name'client_widget_actu_send_form')]
  305.     #[Route(path'/preview/{host}/actualite-du-mois/participation-place-a-l-expert/sendParticipation'name'previewclient_widget_actu_send_form')]
  306.     public function sendParticipation(Request $requestEntityManagerInterface $emAccountingFirmRepository $accountingFirmRepositoryWidgetMailing $mailing)
  307.     {
  308.         $email $request->get('email');
  309.         $tel $request->get('tel');
  310.         $firstname $request->get('firstname');
  311.         $linkedin $request->get('linkedin');
  312.         $expertise $request->get('expertise');
  313.         $idCabinet $request->get('cabinet');
  314.         $cabinet $accountingFirmRepository->findById($idCabinet);
  315.         $bannedEmails = [
  316.             'pazapz@mailbox.in.ua',
  317.             // ajoute d'autres emails ici si besoin
  318.         ];
  319.         if (in_array(strtolower($email), $bannedEmails)) {
  320.             // On fait croire que tout s’est bien passé
  321.             return new JsonResponse('success');
  322.         }
  323.         if (!empty($email) && !empty($firstname) && !empty($tel) && !empty($cabinet) && !empty($linkedin) && !empty($expertise)) {
  324.             $participationContact = new ContactParticipationPlaceExpert;
  325.             $participationContact->setEmail($email);
  326.             $participationContact->setPhone($tel);
  327.             $participationContact->setFirstname($firstname);
  328.             $participationContact->setLinkLinkedin($linkedin);
  329.             $participationContact->setExpertise($expertise);
  330.             $participationContact->setRgpd(true);
  331.             $participationContact->setAccountingFirm($cabinet);
  332.             $participationContact->setCreatedAt(new DateTimeImmutable());
  333.             $em->persist($participationContact);
  334.             $em->flush();
  335.             //send mail
  336.             $mailing->sendParticipationPalToAgenceExpert($cabinet, [ //Envoie à lagence.expert
  337.                 'name' => $firstname,
  338.                 'email' => $email,
  339.                 'tel' => $tel,
  340.                 'linkedin' => $linkedin,
  341.                 'expertise' => $expertise,
  342.             ]);
  343.             $mailing->sendParticipationPalToClient($cabinet, [ //Envoie au client
  344.                 'name' => $firstname,
  345.                 'email' => $email,
  346.             ]);
  347.             return new JsonResponse('success');
  348.         }
  349.         return new JsonResponse('error');
  350.     }
  351.     #[Route(path'/actualite-du-mois/podcast/{id}'defaults: ['id' => null], name'client_widget_podcast_detail')]
  352.     #[Route(path'/preview/{host}/actualite-du-mois/podcast/{id}'defaults: ['id' => null], name'previewclient_widget_podcast_detail')]
  353.     public function widgetActuPodcastDetail(Request $requestPodcastEpisodeRepository $podcastEpisodeRepositoryQueriesV2Manager $qm)
  354.     {
  355.         $footer $qm->getFooterData();
  356.         $seopage = new SeoPageClient();
  357.         $seopage->setTitle("Podcast place à l'expert");
  358.         $seopage->setDescription("Podcast place à l'expert");
  359.         $id $request->get('id');
  360.         return $this->render('widget_actualite/actu_podcast.html.twig', [
  361.             'seopage' => $seopage,
  362.             'footer' => $footer,
  363.             'podcast_id' =>  $id
  364.         ]);
  365.     }
  366.     #[Route(path'/actualite-du-mois/infographie-rse'name'client_widget_infographie_rse_detail_noid')]
  367.     #[Route(path'/actualite-du-mois/infographie-rse/{id}'name'client_widget_infographie_rse_detail')]
  368.     #[Route(path'/preview/{host}/actualite-du-mois/infographie-rse/{id}'name'previewclient_widget_infographie_rse_detail')]
  369.     public function widgetActuInfographieRseDetail(Request $requestQueriesV2Manager $qm)
  370.     {
  371.         $footer $qm->getFooterData();
  372.         if (!$request->get('id')) {
  373.             $latestRSE $qm->getInfographie();
  374.             if ($latestRSE['id']) {
  375.                 return $this->redirectToRoute('client_widget_infographie_rse_detail', ['id' => $latestRSE['id']]);
  376.             } else {
  377.                 return $this->redirectToRoute('client_widget_news_index');
  378.             }
  379.         }
  380.         $seopage = new SeoPageClient();
  381.         $seopage->setTitle("Infographie RSE du mois");
  382.         $seopage->setDescription("Infographie RSE du mois");
  383.         return $this->render('widget_actualite/actu_infographie_rse.html.twig', [
  384.             'seopage' => $seopage,
  385.             'footer' => $footer,
  386.             'infographie_rse_id' =>  $request->get('id')
  387.         ]);
  388.     }
  389.     #[Route(path'/actualite-du-mois/transformation-digitale'name'client_widget_transformation_digitale_noid')]
  390.     #[Route(path'/actualite-du-mois/transformation-digitale/{id}-{slug}'name'client_widget_transformation_digitale_show')]
  391.     #[Route(path'/preview/{host}/actualite-du-mois/transformation-digitale/{id}-{slug}'name'previewclient_widget_transformation_digitale_show')]
  392.     public function widgetNewsTransformationDigitaleShow(Request $requestQueriesV2Manager $qmActuv2TransformationdigitaleRepository $actuv2TransformationdigitaleRepository): Response
  393.     {
  394.         $entityManager $this->getDoctrine()->getManager();
  395.         $seopageclient = new SeoPageClient();
  396.         $parameters $this->accountingFirm->getParameters();
  397.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 17]);
  398.         $id $request->get('id');
  399.         if ($seopage) {
  400.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  401.         }
  402.         if (isset($id)) {
  403.             $data $qm->getTransformationDigitaleDetails($id);
  404.         } else {
  405.             $Transformationdigitale $qm->getTransformationDigitale();
  406.             $data $actuv2TransformationdigitaleRepository->findOneBy(['id' => $Transformationdigitale['id']]);
  407.             $id $data->getId();
  408.         }
  409.         if ($data != null && $seopage) {
  410.             $seopage->setTitle(str_replace("{{data.titre}}"$data->getTitre(), $seopage->getTitle()));
  411.             $seopage->setDescription(str_replace("{{data.descriptifTexte}}"substr($data->getDescriptiftexte(), 0160), $seopage->getDescription()));
  412.         }
  413.         $histo null;
  414.         $histo $qm->getHistoTransfo();
  415.         return $this->render('widget_actualite/actu_transformation_digitale.html.twig', [
  416.             'id' => $id,
  417.             'seopage' => $seopage,
  418.             'histo' => $histo
  419.         ]);
  420.     }
  421.     #[Route(path'/actualite-du-mois/recherche'name'client_widget_recherche')]
  422.     #[Route(path'/preview/{host}/actualite-du-mois/recherche'name'previewclient_widget_recherche')]
  423.     public function widgetNewsSearch(Request $requeststring $prefix null): Response
  424.     {
  425.         $entityManager $this->getDoctrine()->getManager();
  426.         $seopageclient = new SeoPageClient();
  427.         $parameters $this->accountingFirm->getParameters();
  428.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 18]);
  429.         $query $request->get('q');
  430.         if ($seopage) {
  431.             $seopage->setTitle(str_replace("{{cabinet.name}}"$this->accountingFirm->getHost(), $seopage->getTitle()));
  432.         }
  433.         return $this->render('widget_actualite/recherche.html.twig', [
  434.             'query' => $query,
  435.             'seopage' => $seopage,
  436.             'prefix' => $prefix,
  437.         ]);
  438.     }
  439.     #[Route(path'/api/vote/'name'widget_vote'methods: ['POST'])]
  440.     #[Route(path'/preview/{host}/api/vote/'name'previewwidget_vote'methods: ['POST'])]
  441.     public function widgetVote(Request $requestQueriesV2Manager $qm): Response
  442.     {
  443.         $id $request->get('id');
  444.         $value $request->get('value');
  445.         $ip $request->getClientIp();
  446.         $req $qm->setSondageVote($id$value$ip);
  447.         return new Response($req);
  448.     }
  449.     #[Route(path'/voter'name'widget_voter'methods: ['GET'])]
  450.     #[Route(path'/preview/{host}/voter'name'previewwidget_voter'methods: ['GET'])]
  451.     public function widgetVoter(Request $requestQueriesV2Manager $qm)
  452.     {
  453.         $fromNewsletter $request->get('from'false) === 'newsletter';
  454.         try {
  455.             $id = (int)$request->get('id'true);
  456.             $reponse = (int)$request->get('reponse'true);
  457.             $retour $qm->setSondageVote($id$reponse$request->getClientIp());
  458.             $tabResult $qm->getSondageResult($id);
  459.         } catch (\Exception $e) {
  460.             if (!$fromNewsletter) {
  461.                 throw new \Exception($e->getMessage(), $e->getCode());
  462.             }
  463.             $retour false;
  464.         }
  465.         // Dans le cas où l'on vote par la newsletter, on affiche un message
  466.         if ($fromNewsletter) {
  467.             $this->templateBase '/';
  468.             return $this->render('widget_actu_juridique_v2/voter.html.twig', [
  469.                 'retour' => $retour
  470.             ]);
  471.         }
  472.         return $this->json([
  473.             "results" => $tabResult,
  474.             "erreur" => 0
  475.         ]);
  476.     }
  477.     #[Route(path'/simulateur'name'simulateur_index')]
  478.     #[Route(path'/preview/{host}/simulateur'name'previewsimulateur_index')]
  479.     #[IsGranted('WEBSITE_SIMULATEUR'statusCode404)]
  480.     public function SimulateurIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  481.     {
  482.         if ($redirect $this->redirectRouteV2($request$prefix)) {
  483.             return $this->redirect($redirect);
  484.         }
  485.         $entityManager $this->getDoctrine()->getManager();
  486.         $page $request->query->get('p');
  487.         $parameters $this->accountingFirm->getParameters();
  488.         $seopage $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 37]);
  489.         // if ($page) {
  490.         //     $type = $entityManager->getRepository(TypeSeoPage::class)->findOneBy(['urlParameter' => $page]);
  491.         //     $currentSeopage = $type ? $entityManager->getRepository(SeoPage::class)->findOneBy(['type' => $type]) : null;
  492.         //     $seopageType = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => $currentSeopage->getId()]);
  493.         //     if ($seopageType) {
  494.         //         $seopage = $simulateurManager->metadataByPage($this->accountingFirm, $seopageType, $page);
  495.         //     }
  496.         // }
  497.         return $this->render('simulateur/index.html.twig', ['seopage' => $seopage]);
  498.     }
  499.     #[Route(path'/appelle-ton-expert-comptable'name'call_your_ec_index')]
  500.     #[Route(path'/preview/{host}/appelle-ton-expert-comptable'name'preview_call_your_ec_index')]
  501.     public function callYourEcIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  502.     {
  503.         $seopage = new SeoPageClient();
  504.         $seopage->setTitle("Appelle ton expert-comptable");
  505.         $seopage->setDescription("Appelle ton expert-comptable");
  506.         return $this->render('widgets/call_your_ec/index.html.twig', ['seopage' => $seopage'cabinet' => $this->accountingFirm]);
  507.     }
  508.     #[Route(path'/ce'name'ce_index')]
  509.     #[Route(path'/preview/{host}/ce'name'preview_ce_index')]
  510.     public function ceIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  511.     {
  512.         $seopage = new SeoPageClient();
  513.         $seopage->setTitle("CE");
  514.         $seopage->setDescription("CE");
  515.         return $this->render('widgets/ce/index.html.twig', ['seopage' => $seopage]);
  516.     }
  517.     #[Route(path'/cir'name'cir_index')]
  518.     #[Route(path'/preview/{host}/cir'name'preview_cir_index')]
  519.     public function cirIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  520.     {
  521.         $seopage = new SeoPageClient();
  522.         $seopage->setTitle("CIR");
  523.         $seopage->setDescription("CIR");
  524.         return $this->render('widgets/cir/index.html.twig', ['seopage' => $seopage]);
  525.     }
  526.     #[Route(path'/customer_satisfaction'name'customer_satisfaction_index')]
  527.     #[Route(path'/preview/{host}/customer_satisfaction'name'preview_customer_satisfaction_index')]
  528.     public function customerSatisfactionIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  529.     {
  530.         $seopage = new SeoPageClient();
  531.         $seopage->setTitle("Satisfaction client");
  532.         $seopage->setDescription("Satisfaction client");
  533.         return $this->render('widgets/customer_satisfaction/index.html.twig', ['seopage' => $seopage]);
  534.     }
  535.     #[Route(path'/facture-electronique'name'electronic_invoice_index')]
  536.     #[Route(path'/preview/{host}/facture-electronique'name'preview_electronic_invoice_index')]
  537.     public function electronicInvoiceIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  538.     {
  539.         $seopage = new SeoPageClient();
  540.         $seopage->setTitle("Facture électronique");
  541.         $seopage->setDescription("Facture électronique");
  542.         return $this->render('widgets/electronic_invoicing/index.html.twig', ['seopage' => $seopage]);
  543.     }
  544.     #[Route(path'/evenement'name'event_index')]
  545.     #[Route(path'/preview/{host}/evenement'name'preview_event_index')]
  546.     public function eventIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  547.     {
  548.         $seopage = new SeoPageClient();
  549.         $seopage->setTitle("Appelle ton expert-comptable");
  550.         $seopage->setDescription("Appelle ton expert-comptable");
  551.         return $this->render('widgets/events/index.html.twig', ['seopage' => $seopage]);
  552.     }
  553.     #[Route(path'/aides-aux-entreprises'name'helpers_firms_index')]
  554.     #[Route(path'/preview/{host}/aides-aux-entreprises'name'preview_helpers_firms_index')]
  555.     public function helpersFirmsIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  556.     {
  557.         $seopage = new SeoPageClient();
  558.         $seopage->setTitle("Aides aux entreprises");
  559.         $seopage->setDescription("Aides aux entreprises");
  560.         return $this->render('widgets/helpers_firms/index.html.twig', ['seopage' => $seopage]);
  561.     }
  562.     #[Route(path'/tous-en-ligne'name'online_index')]
  563.     #[Route(path'/preview/{host}/tous-en-ligne'name'preview_online_index')]
  564.     public function onlineIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  565.     {
  566.         $seopage = new SeoPageClient();
  567.         $seopage->setTitle("Tous en ligne");
  568.         $seopage->setDescription("Tous en ligne");
  569.         return $this->render('widgets/online/index.html.twig', ['seopage' => $seopage]);
  570.     }
  571.     #[Route(path'/recommandation'name'recommendation_index')]
  572.     #[Route(path'/preview/{host}/recommandation'name'preview_recommendation_index')]
  573.     public function recommendationIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  574.     {
  575.         $seopage = new SeoPageClient();
  576.         $seopage->setTitle("Recommandation");
  577.         $seopage->setDescription("Recommandation");
  578.         return $this->render('widgets/recommendation/index.html.twig', ['seopage' => $seopage]);
  579.     }
  580.     #[Route(path'/rgpd'name'rgpd_index')]
  581.     #[Route(path'/preview/{host}/rgpd'name'preview_rgpd_index')]
  582.     public function rgpdIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  583.     {
  584.         $seopage = new SeoPageClient();
  585.         $seopage->setTitle("RGPD");
  586.         $seopage->setDescription("RGPD");
  587.         return $this->render('widgets/rgpd/index.html.twig', ['seopage' => $seopage]);
  588.     }
  589.     #[Route(path'/parrainage'name'sponsorship_index')]
  590.     #[Route(path'/preview/{host}/parrainage'name'preview_sponsorship_index')]
  591.     public function sponsorshipIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  592.     {
  593.         $seopage = new SeoPageClient();
  594.         $seopage->setTitle("Parrainage");
  595.         $seopage->setDescription("Parrainage");
  596.         return $this->render('widgets/sponsorship/index.html.twig', ['seopage' => $seopage]);
  597.     }
  598.     #[Route(path'/sondage'name'survey_index')]
  599.     #[Route(path'/preview/{host}/sondage'name'preview_survey_index')]
  600.     public function surveyIndex(Request $requestSimulateurManager $simulateurManagerstring $prefix null): Response
  601.     {
  602.         $seopage = new SeoPageClient();
  603.         $seopage->setTitle("Sondage");
  604.         $seopage->setDescription("Sondage");
  605.         return $this->render('widgets/survey/index.html.twig', ['seopage' => $seopage]);
  606.     }
  607.     #[Route(path'/check-simulateur'name'check_simulteur')]
  608.     #[Route(path'/preview/{host}/check-simulateur'name'previewcheck_simulteur')]
  609.     #[IsGranted('WEBSITE_SIMULATEUR'statusCode404)]
  610.     public function checkSimuateur(Request $requestAccountingFirmRepository $repositorystring $prefix null): JsonResponse
  611.     {
  612.         $token $request->query->get('token');
  613.         $theHost str_replace('www.'''$request->getHost());
  614.         $host $request->get('host') ?: $theHost;
  615.         // $host = 'cabinet-za.de';
  616.         if ($token) {
  617.             $accountingFirm $repository->findOneBy(['simulateurToken' => $token]);
  618.             $isAuthorized false;
  619.             if ($accountingFirm && in_array($host$accountingFirm->getListAuthorizedDomains())) {
  620.                 $isAuthorized true;
  621.             }
  622.             $url $isAuthorized $accountingFirm->getSimulateurWidgetUrl() : null;
  623.         } else {
  624.             $accountingFirm $repository->findOneBy(['host' => $host]);
  625.             $url $accountingFirm $prefix $this->generateUrl('widget_simulteur') : null;
  626.         }
  627.         return $this->json($url);
  628.     }
  629.     #[Route(path'/widget-simulateur'name'widget_simulteur'methods: ['GET''POST'])]
  630.     public function widgetSimulateur(Request $requestAccountingFirmRepository $repository)
  631.     {
  632.         $theHost str_replace('www.'''$request->getHost());
  633.         $host $request->get('host') ?: $theHost;
  634.         // $host = 'cabinet-za.de';
  635.         $accountingFirm $repository->findOneBy(['host' => $host]);
  636.         $this->templateBase '/';
  637.         if (!$accountingFirm || $accountingFirm->getHost() !== $host) {
  638.             throw new NotFoundHttpException();
  639.         }
  640.         return $this->render('widget_simulateur_v2/content.html.twig', [
  641.             'cabinet' => $accountingFirm,
  642.         ]);
  643.     }
  644.     #[Route(path'/voterrh'name'widget_voterrh'methods: ['GET'])]
  645.     #[Route(path'/preview/{host}/voterrh'name'previewwidget_voterrh'methods: ['GET'])]
  646.     public function widgetVoterrh(Request $requestQueriesV2Manager $qm)
  647.     {
  648.         $id $request->get('id');
  649.         $reponse $request->get('reponse');
  650.         $ip $request->getClientIp();
  651.         $req $qm->setQuizVote($id$reponse$ip);
  652.         return new Response($req);
  653.     }
  654.     #[Route(path'/actualite-du-mois/journal'name'client_widget_journal_noid')]
  655.     #[Route(path'/actualite-du-mois/journal/{id}'name'client_widget_journal_show')]
  656.     #[Route(path'/preview/{host}/actualite-du-mois/journal/{id}'name'previewclient_widget_journal_show')]
  657.     public function widgetNewsJournalShow(Request $requestQueriesV2Manager $qmActuv2JournalRepository $journalRepository): Response
  658.     {
  659.         $entityManager $this->getDoctrine()->getManager();
  660.         $parameters $this->accountingFirm->getParameters();
  661.         $id $request->get('id');
  662.         $seopage = new SeoPageClient();
  663.         $seopage->setTitle("Journal du mois");
  664.         $seopage->setDescription("Journal du mois");
  665.         if (isset($id)) {
  666.             $data $qm->getJournalDetails($id);
  667.         } else {
  668.             $journalLast $qm->getJournal();
  669.             $id $journalLast['id'];
  670.         }
  671.         return $this->render('widget_actualite/actu_journal.html.twig', [
  672.             'id' => $id,
  673.             'seopage' => $seopage
  674.         ]);
  675.     }
  676.     #[Route(path'/actualite-du-mois/aide'name'client_widget_aide_noid')]
  677.     #[Route(path'/actualite-du-mois/aide/{id}'name'client_widget_aide_show')]
  678.     #[Route(path'/preview/{host}/actualite-du-mois/aide/{id}'name'previewclient_widget_aide_show')]
  679.     public function widgetNewsAideShow(Request $requestQueriesV2Manager $qmActuv2HelpRepository $helpRepository): Response
  680.     {
  681.         $entityManager $this->getDoctrine()->getManager();
  682.         $parameters $this->accountingFirm->getParameters();
  683.         $id $request->get('id');
  684.         $seopage = new SeoPageClient();
  685.         $seopage->setTitle("L'aide du mois");
  686.         $seopage->setDescription("L'aide du mois");
  687.         if (isset($id)) {
  688.             $data $qm->getHelpById($id);
  689.         } else {
  690.             $data $qm->getHelpWithId();
  691.             $id $data['id'];
  692.         }
  693.         return $this->render('widget_actualite/actu_help.html.twig', [
  694.             'id' => $id,
  695.             'seopage' => $seopage
  696.         ]);
  697.     }
  698.     #[Route(path'/actualite-du-mois/calendrier'name'client_widget_calendrier_show')]
  699.     #[Route(path'/preview/{host}/actualite-du-mois/calendrier'name'previewclient_widget_calendrier_show')]
  700.     public function widgetNewsCalendrierShow(Request $requestQueriesV2Manager $qmActuv2HelpRepository $helpRepository): Response
  701.     {
  702.         $entityManager $this->getDoctrine()->getManager();
  703.         $parameters $this->accountingFirm->getParameters();
  704.         $id $request->get('id');
  705.         $seopage = new SeoPageClient();
  706.         $seopage->setTitle("Le calendrier juridique");
  707.         $seopage->setDescription("Le calendrier juridique");
  708.         return $this->render('widget_actualite/actu_calendrier.html.twig', [
  709.             'seopage' => $seopage
  710.         ]);
  711.     }
  712. }