<?php
namespace App\Controller\Client;
use App\Entity\Actuv2Journal;
use App\Entity\Page;
use App\Entity\SeoPage;
use App\Entity\SeoPageClient;
use App\Entity\Actualiters;
use App\Entity\Actualitecabinet;
use App\Entity\Actuv2Bienetre;
use App\Entity\Announcement;
use App\Entity\ApplyRequest;
use App\Entity\ContactParticipationPlaceExpert;
use App\Entity\PodcastEpisode;
use App\Entity\PodcastHost;
use App\Entity\TypeSeoPage;
use App\Entity\WebsiteNews;
use App\Form\AnnouncementApplyType;
use App\Repository\AccountingFirmRepository;
use App\Repository\Actuv2HelpRepository;
use App\Repository\Actuv2JournalRepository;
use App\Repository\EbookRepository;
use App\Repository\ActualitersRepository;
use App\Repository\ActualitecabinetRepository;
use App\Repository\Actuv2BienetreRepository;
use App\Repository\Actuv2TransformationdigitaleRepository;
use App\Services\QueriesV2Manager;
use App\Repository\UsefulLinkRepository;
use App\Repository\WebsiteNewsRepository;
use App\Repository\AnnouncementRepository;
use App\Repository\PodcastEpisodeRepository;
use App\Services\SimulateurManager;
use App\Services\WebSite;
use App\Services\WidgetMailing;
use DateTimeImmutable;
use Doctrine\ORM\EntityManagerInterface;
use GuzzleHttp\Client;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Mime\Email;
/**
* Class ClientWidgetController
* @package App\Controller\Client
*/
class ClientWidgetController extends AbstractClientController
{
#[Route(path: '/actualite-du-mois.php', name: 'widget_old')]
#[Route(path: '/preview/{host}/actualite-du-mois.php', name: 'previewwidget_old')]
public function widgetOld(Request $request, string $prefix = null): Response
{
if ($redirect = $this->redirectRouteV2($request, $prefix)) {
return $this->redirect($redirect);
}
$url = $this->generateUrl('client_widget_news_index');
return $this->redirect($prefix . $url);
}
#[Route(path: '/actualite-du-mois', name: 'client_widget_news_index')]
#[Route(path: '/preview/{host}/actualite-du-mois', name: 'previewclient_widget_news_index')]
public function widgetNewsIndex(Request $request, string $prefix = null): Response
{
if ($redirect = $this->redirectRouteV2($request, $prefix)) {
return $this->redirect($redirect);
}
if ($this->accountingFirm->isActuv2OnlyPodcast()) {
return $this->redirectToRoute("client_widget_podcast_detail");
}
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 12]);
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
return $this->render('widget_actualite/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/widget-actu/{token}', name: 'widget_actu')]
#[Route(path: '/preview/{host}/widget-actu/{token}', name: 'previewwidget_actu')]
public function widgetHome(Request $request, QueriesV2Manager $qm, AccountingFirmRepository $repository, string $token)
{
$theHost = str_replace('www.', '', $request->getHost());
$host = $request->get('host') ?: $theHost;
//$host = 'cabinet-za.de';
$accountingFirm = $repository->findOneBy(['actuv2Token' => $token]);
if (!$accountingFirm || $accountingFirm->getHost() !== $host) {
throw new NotFoundHttpException();
}
$date = $request->query->get('date', false);
$this->templateBase = '/';
$sondage = $qm->getSondage($date);
$quizrh = $qm->getQuizRh($date);
$quizrhVote = $qm->getQuizRhVote($date);
return $this->render('widget_actu_juridique_v2/home.html.twig', [
'actus' => $qm->getActualites($date),
'transformationDigitale' => $qm->getTransformationDigitale($date),
'infographie' => $qm->getInfographie($date),
'chiffreDuMois' => $qm->getChiffreDuMois($date),
'citation' => $qm->getCitation($date),
'bienEtre' => $qm->getBienEtre($date),
'podcast' => $qm->getPodcast($date),
'podcasts' => $qm->getPodcasts($date),
'sondage' => [
'details' => $sondage,
'results' => $sondage ? $qm->getSondageResult($sondage['id']) : null,
],
'nextEvent' => $qm->getNextEvent(),
'previousPerdiods' => $qm->getPreviousPeriods(),
'quizrh' => $quizrh,
'quizrhVote' => $quizrhVote,
]);
}
#[Route(path: '/widget-dates', name: 'widget_dates')]
#[Route(path: '/preview/{host}/widget-dates', name: 'previewwidget_dates')]
public function dates(QueriesV2Manager $qm)
{
$tabData = $qm->getDates();
$tabDates = [];
foreach ($tabData as $lignes) {
foreach ($lignes as $ligne) {
$key = array_search($ligne['date'], array_column($tabDates, 'date'));
if ($key === false) { // cas date jamais ajoutée
$tabDates[] = ['date' => $ligne['date'], 'lien' => 'calendrier-fiscal.php?id=' . $ligne['id']];
} else { // cas date déjà ajoutée, donc plusieurs articles à la même date
$tabDates[$key] = ['date' => $ligne['date'], 'lien' => 'actualites-calendrier-fiscal.php?date=' . $ligne['date']];
}
}
}
return $this->json($tabDates);
}
#[Route(path: '/widget-footer/{token}', name: 'widget_footer')]
#[Route(path: '/preview/{host}/widget-footer/{token}', name: 'previewwidget_footer')]
public function footer(Request $request, AccountingFirmRepository $repository, QueriesV2Manager $qm, WebSite $site, string $token): Response
{
$theHost = str_replace('www.', '', $request->getHost());
$host = $request->get('host') ?: $theHost;
// $host = 'cabinet-za.de';
$accountingFirm = $repository->findOneBy(['actuv2Token' => $token]);
if (!$accountingFirm || $accountingFirm->getHost() !== $host) {
throw new NotFoundHttpException();
}
$this->templateBase = '/';
return $this->render('widget_actu_juridique_v2/widget-footer.html.twig', [
'footer' => $qm->getFooterData(),
'serverActuUrl' => $site->getServerActuUrl()
]);
}
#[Route(path: '/actualite-du-mois/mois-{month}', name: 'client_widget_news_index_past')]
#[Route(path: '/preview/{host}/actualite-du-mois/mois-{month}', name: 'previewclient_widget_news_index_past')]
public function widgetNewsIndexPast(Request $request): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 33]);
$month = $request->get('month');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
return $this->render('widget_actualite/index.html.twig', [
'month' => $month,
'seopage' => $seopage
]);
}
#[Route(path: '/actualite-du-mois/actucabinet/{id}-{slug}', name: 'client_widget_news_cabinet_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/actucabinet/{id}-{slug}', name: 'previewclient_widget_news_cabinet_show')]
public function widgetNewsCabinetShow(Request $request, QueriesV2Manager $qm): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 16]);
$id = $request->get('id');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
$data = $qm->getActualiteCabinetDetails($id);
//dd($data);
if ($data != null && $seopage) {
$seopage->setTitle(str_replace("{{data.titre}}", $data['titre'], $seopage->getTitle()));
$seopage->setDescription(str_replace("{{data.descriptifTexte}}", substr($data['descriptifTexte'], 0, 160), $seopage->getDescription()));
}
return $this->render('widget_actualite/actu_cabinet.html.twig', [
'id' => $id,
'seopage' => $seopage
]);
}
#[Route(path: '/actualite-du-mois/fiscal/liste/{date}', name: 'client_widget_news_fisc_list_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/fiscal/liste/{date}', name: 'previewclient_widget_news_fisc_list_show')]
public function widgetNewsFiscListShow(Request $request): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 14]);
$date = $request->get('date');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
return $this->render('widget_actualite/actu_fiscal_list.html.twig', [
'date' => $date,
'seopage' => $seopage
]);
}
#[Route(path: '/actualite-du-mois/fiscal/{id}', name: 'client_widget_news_fisc_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/fiscal/{id}', name: 'previewclient_widget_news_fisc_show')]
public function widgetNewsFiscShow(Request $request, QueriesV2Manager $qm): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 15]);
$id = $request->get('id');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
$data = $qm->getCalendrierDetails($id);
// var_dump($data);exit;
if ($data != null && $seopage) {
$seopage->setTitle(str_replace("{{data.titre}}", $data->getTitre(), $seopage->getTitle()));
$seopage->setDescription(str_replace("{{data.descriptifTexte}}", substr($data->getDescriptiftexte(), 0, 160), $seopage->getDescription()));
}
return $this->render('widget_actualite/actu_fiscal_article.html.twig', [
'id' => $id,
'seopage' => $seopage
]);
}
#[Route(path: '/actualite-du-mois/juridique/{id}-{slug}', name: 'client_widget_news_juri_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/juridique/{id}-{slug}', name: 'previewclient_widget_news_juri_show')]
public function widgetNewsJuriShow(Request $request, QueriesV2Manager $qm, string $prefix = null): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 16]);
$id = $request->get('id');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
$data = $qm->getActualitesDetails($id);
if ($data != null && $seopage) {
$seopage->setTitle(str_replace("{{data.titre}}", $data['titre'], $seopage->getTitle()));
$seopage->setDescription(str_replace("{{data.descriptifTexte}}", substr($data['descriptifTexte'], 0, 160), $seopage->getDescription()));
}
$histo = null;
$histo = $qm->getHistoActualites();
return $this->render('widget_actualite/actu_juridique.html.twig', [
'id' => $id,
'seopage' => $seopage,
'histo' => $histo,
]);
}
#[Route(path: '/actualite-du-mois/bien-etre', name: 'client_widget_bien_etre_noid')]
#[Route(path: '/actualite-du-mois/bien-etre/{id}-{slug}', name: 'client_widget_bien_etre_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/bien-etre/{id}-{slug}', name: 'previewclient_widget_bien_etre_show')]
public function widgetNewsBienEtreShow(Request $request, QueriesV2Manager $qm, Actuv2BienetreRepository $actuv2BienetreRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 13]);
$id = $request->get('id');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
if (isset($id)) {
$data = $qm->getBienEtreDetails($id);
} else {
$bienEtre = $qm->getBienEtre();
$data = $actuv2BienetreRepository->findOneBy(['id' => $bienEtre['id']]);
$id = $data->getId();
}
if ($data != null && $seopage) {
$seopage->setTitle(str_replace("{{data.titre}}", $data->getTitre(), $seopage->getTitle()));
$seopage->setDescription(str_replace("{{data.descriptifTexte}}", substr($data->getDescriptiftexte(), 0, 160), $seopage->getDescription()));
}
$histo = null;
$histo = $qm->getHistoBienEtre();
return $this->render('widget_actualite/actu_bien_etre.html.twig', [
'id' => $id,
'seopage' => $seopage,
'histo' => $histo
]);
}
#[Route(path: '/actualite-du-mois/participation-place-a-l-expert', name: 'client_widget_participation_pal')]
#[Route(path: '/preview/{host}/actualite-du-mois/participation-place-a-l-expert', name: 'previewclient_widget_participation_pal')]
public function widgetParticipationPal(Request $request, QueriesV2Manager $qm): Response
{
$footer = $qm->getFooterData();
$seopage = new SeoPageClient();
$seopage->setTitle("Participation place à l'expert");
$seopage->setDescription("Participation place à l'expert");
return $this->render('widget_actualite/actu_participation_pal.html.twig', [
'seopage' => $seopage,
'footer' => $footer,
'interne' => true
]);
}
#[Route('/actualite-du-mois/participation-place-a-l-expert/sendParticipation', name: 'client_widget_actu_send_form')]
#[Route(path: '/preview/{host}/actualite-du-mois/participation-place-a-l-expert/sendParticipation', name: 'previewclient_widget_actu_send_form')]
public function sendParticipation(Request $request, EntityManagerInterface $em, AccountingFirmRepository $accountingFirmRepository, WidgetMailing $mailing)
{
$email = $request->get('email');
$tel = $request->get('tel');
$firstname = $request->get('firstname');
$linkedin = $request->get('linkedin');
$expertise = $request->get('expertise');
$idCabinet = $request->get('cabinet');
$cabinet = $accountingFirmRepository->findById($idCabinet);
$bannedEmails = [
'pazapz@mailbox.in.ua',
// ajoute d'autres emails ici si besoin
];
if (in_array(strtolower($email), $bannedEmails)) {
// On fait croire que tout s’est bien passé
return new JsonResponse('success');
}
if (!empty($email) && !empty($firstname) && !empty($tel) && !empty($cabinet) && !empty($linkedin) && !empty($expertise)) {
$participationContact = new ContactParticipationPlaceExpert;
$participationContact->setEmail($email);
$participationContact->setPhone($tel);
$participationContact->setFirstname($firstname);
$participationContact->setLinkLinkedin($linkedin);
$participationContact->setExpertise($expertise);
$participationContact->setRgpd(true);
$participationContact->setAccountingFirm($cabinet);
$participationContact->setCreatedAt(new DateTimeImmutable());
$em->persist($participationContact);
$em->flush();
//send mail
$mailing->sendParticipationPalToAgenceExpert($cabinet, [ //Envoie à lagence.expert
'name' => $firstname,
'email' => $email,
'tel' => $tel,
'linkedin' => $linkedin,
'expertise' => $expertise,
]);
$mailing->sendParticipationPalToClient($cabinet, [ //Envoie au client
'name' => $firstname,
'email' => $email,
]);
return new JsonResponse('success');
}
return new JsonResponse('error');
}
#[Route(path: '/actualite-du-mois/podcast/{id}', defaults: ['id' => null], name: 'client_widget_podcast_detail')]
#[Route(path: '/preview/{host}/actualite-du-mois/podcast/{id}', defaults: ['id' => null], name: 'previewclient_widget_podcast_detail')]
public function widgetActuPodcastDetail(Request $request, PodcastEpisodeRepository $podcastEpisodeRepository, QueriesV2Manager $qm)
{
$footer = $qm->getFooterData();
$seopage = new SeoPageClient();
$seopage->setTitle("Podcast place à l'expert");
$seopage->setDescription("Podcast place à l'expert");
$id = $request->get('id');
return $this->render('widget_actualite/actu_podcast.html.twig', [
'seopage' => $seopage,
'footer' => $footer,
'podcast_id' => $id
]);
}
#[Route(path: '/actualite-du-mois/infographie-rse', name: 'client_widget_infographie_rse_detail_noid')]
#[Route(path: '/actualite-du-mois/infographie-rse/{id}', name: 'client_widget_infographie_rse_detail')]
#[Route(path: '/preview/{host}/actualite-du-mois/infographie-rse/{id}', name: 'previewclient_widget_infographie_rse_detail')]
public function widgetActuInfographieRseDetail(Request $request, QueriesV2Manager $qm)
{
$footer = $qm->getFooterData();
if (!$request->get('id')) {
$latestRSE = $qm->getInfographie();
if ($latestRSE['id']) {
return $this->redirectToRoute('client_widget_infographie_rse_detail', ['id' => $latestRSE['id']]);
} else {
return $this->redirectToRoute('client_widget_news_index');
}
}
$seopage = new SeoPageClient();
$seopage->setTitle("Infographie RSE du mois");
$seopage->setDescription("Infographie RSE du mois");
return $this->render('widget_actualite/actu_infographie_rse.html.twig', [
'seopage' => $seopage,
'footer' => $footer,
'infographie_rse_id' => $request->get('id')
]);
}
#[Route(path: '/actualite-du-mois/transformation-digitale', name: 'client_widget_transformation_digitale_noid')]
#[Route(path: '/actualite-du-mois/transformation-digitale/{id}-{slug}', name: 'client_widget_transformation_digitale_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/transformation-digitale/{id}-{slug}', name: 'previewclient_widget_transformation_digitale_show')]
public function widgetNewsTransformationDigitaleShow(Request $request, QueriesV2Manager $qm, Actuv2TransformationdigitaleRepository $actuv2TransformationdigitaleRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 17]);
$id = $request->get('id');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
if (isset($id)) {
$data = $qm->getTransformationDigitaleDetails($id);
} else {
$Transformationdigitale = $qm->getTransformationDigitale();
$data = $actuv2TransformationdigitaleRepository->findOneBy(['id' => $Transformationdigitale['id']]);
$id = $data->getId();
}
if ($data != null && $seopage) {
$seopage->setTitle(str_replace("{{data.titre}}", $data->getTitre(), $seopage->getTitle()));
$seopage->setDescription(str_replace("{{data.descriptifTexte}}", substr($data->getDescriptiftexte(), 0, 160), $seopage->getDescription()));
}
$histo = null;
$histo = $qm->getHistoTransfo();
return $this->render('widget_actualite/actu_transformation_digitale.html.twig', [
'id' => $id,
'seopage' => $seopage,
'histo' => $histo
]);
}
#[Route(path: '/actualite-du-mois/recherche', name: 'client_widget_recherche')]
#[Route(path: '/preview/{host}/actualite-du-mois/recherche', name: 'previewclient_widget_recherche')]
public function widgetNewsSearch(Request $request, string $prefix = null): Response
{
$entityManager = $this->getDoctrine()->getManager();
$seopageclient = new SeoPageClient();
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 18]);
$query = $request->get('q');
if ($seopage) {
$seopage->setTitle(str_replace("{{cabinet.name}}", $this->accountingFirm->getHost(), $seopage->getTitle()));
}
return $this->render('widget_actualite/recherche.html.twig', [
'query' => $query,
'seopage' => $seopage,
'prefix' => $prefix,
]);
}
#[Route(path: '/api/vote/', name: 'widget_vote', methods: ['POST'])]
#[Route(path: '/preview/{host}/api/vote/', name: 'previewwidget_vote', methods: ['POST'])]
public function widgetVote(Request $request, QueriesV2Manager $qm): Response
{
$id = $request->get('id');
$value = $request->get('value');
$ip = $request->getClientIp();
$req = $qm->setSondageVote($id, $value, $ip);
return new Response($req);
}
#[Route(path: '/voter', name: 'widget_voter', methods: ['GET'])]
#[Route(path: '/preview/{host}/voter', name: 'previewwidget_voter', methods: ['GET'])]
public function widgetVoter(Request $request, QueriesV2Manager $qm)
{
$fromNewsletter = $request->get('from', false) === 'newsletter';
try {
$id = (int)$request->get('id', true);
$reponse = (int)$request->get('reponse', true);
$retour = $qm->setSondageVote($id, $reponse, $request->getClientIp());
$tabResult = $qm->getSondageResult($id);
} catch (\Exception $e) {
if (!$fromNewsletter) {
throw new \Exception($e->getMessage(), $e->getCode());
}
$retour = false;
}
// Dans le cas où l'on vote par la newsletter, on affiche un message
if ($fromNewsletter) {
$this->templateBase = '/';
return $this->render('widget_actu_juridique_v2/voter.html.twig', [
'retour' => $retour
]);
}
return $this->json([
"results" => $tabResult,
"erreur" => 0
]);
}
#[Route(path: '/simulateur', name: 'simulateur_index')]
#[Route(path: '/preview/{host}/simulateur', name: 'previewsimulateur_index')]
#[IsGranted('WEBSITE_SIMULATEUR', statusCode: 404)]
public function SimulateurIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
if ($redirect = $this->redirectRouteV2($request, $prefix)) {
return $this->redirect($redirect);
}
$entityManager = $this->getDoctrine()->getManager();
$page = $request->query->get('p');
$parameters = $this->accountingFirm->getParameters();
$seopage = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => 37]);
// if ($page) {
// $type = $entityManager->getRepository(TypeSeoPage::class)->findOneBy(['urlParameter' => $page]);
// $currentSeopage = $type ? $entityManager->getRepository(SeoPage::class)->findOneBy(['type' => $type]) : null;
// $seopageType = $entityManager->getRepository(SeoPageClient::class)->findOneBy(['parameter_id' => $parameters->getId(), 'seopage_id' => $currentSeopage->getId()]);
// if ($seopageType) {
// $seopage = $simulateurManager->metadataByPage($this->accountingFirm, $seopageType, $page);
// }
// }
return $this->render('simulateur/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/appelle-ton-expert-comptable', name: 'call_your_ec_index')]
#[Route(path: '/preview/{host}/appelle-ton-expert-comptable', name: 'preview_call_your_ec_index')]
public function callYourEcIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Appelle ton expert-comptable");
$seopage->setDescription("Appelle ton expert-comptable");
return $this->render('widgets/call_your_ec/index.html.twig', ['seopage' => $seopage, 'cabinet' => $this->accountingFirm]);
}
#[Route(path: '/ce', name: 'ce_index')]
#[Route(path: '/preview/{host}/ce', name: 'preview_ce_index')]
public function ceIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("CE");
$seopage->setDescription("CE");
return $this->render('widgets/ce/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/cir', name: 'cir_index')]
#[Route(path: '/preview/{host}/cir', name: 'preview_cir_index')]
public function cirIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("CIR");
$seopage->setDescription("CIR");
return $this->render('widgets/cir/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/customer_satisfaction', name: 'customer_satisfaction_index')]
#[Route(path: '/preview/{host}/customer_satisfaction', name: 'preview_customer_satisfaction_index')]
public function customerSatisfactionIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Satisfaction client");
$seopage->setDescription("Satisfaction client");
return $this->render('widgets/customer_satisfaction/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/facture-electronique', name: 'electronic_invoice_index')]
#[Route(path: '/preview/{host}/facture-electronique', name: 'preview_electronic_invoice_index')]
public function electronicInvoiceIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Facture électronique");
$seopage->setDescription("Facture électronique");
return $this->render('widgets/electronic_invoicing/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/evenement', name: 'event_index')]
#[Route(path: '/preview/{host}/evenement', name: 'preview_event_index')]
public function eventIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Appelle ton expert-comptable");
$seopage->setDescription("Appelle ton expert-comptable");
return $this->render('widgets/events/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/aides-aux-entreprises', name: 'helpers_firms_index')]
#[Route(path: '/preview/{host}/aides-aux-entreprises', name: 'preview_helpers_firms_index')]
public function helpersFirmsIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Aides aux entreprises");
$seopage->setDescription("Aides aux entreprises");
return $this->render('widgets/helpers_firms/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/tous-en-ligne', name: 'online_index')]
#[Route(path: '/preview/{host}/tous-en-ligne', name: 'preview_online_index')]
public function onlineIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Tous en ligne");
$seopage->setDescription("Tous en ligne");
return $this->render('widgets/online/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/recommandation', name: 'recommendation_index')]
#[Route(path: '/preview/{host}/recommandation', name: 'preview_recommendation_index')]
public function recommendationIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Recommandation");
$seopage->setDescription("Recommandation");
return $this->render('widgets/recommendation/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/rgpd', name: 'rgpd_index')]
#[Route(path: '/preview/{host}/rgpd', name: 'preview_rgpd_index')]
public function rgpdIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("RGPD");
$seopage->setDescription("RGPD");
return $this->render('widgets/rgpd/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/parrainage', name: 'sponsorship_index')]
#[Route(path: '/preview/{host}/parrainage', name: 'preview_sponsorship_index')]
public function sponsorshipIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Parrainage");
$seopage->setDescription("Parrainage");
return $this->render('widgets/sponsorship/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/sondage', name: 'survey_index')]
#[Route(path: '/preview/{host}/sondage', name: 'preview_survey_index')]
public function surveyIndex(Request $request, SimulateurManager $simulateurManager, string $prefix = null): Response
{
$seopage = new SeoPageClient();
$seopage->setTitle("Sondage");
$seopage->setDescription("Sondage");
return $this->render('widgets/survey/index.html.twig', ['seopage' => $seopage]);
}
#[Route(path: '/check-simulateur', name: 'check_simulteur')]
#[Route(path: '/preview/{host}/check-simulateur', name: 'previewcheck_simulteur')]
#[IsGranted('WEBSITE_SIMULATEUR', statusCode: 404)]
public function checkSimuateur(Request $request, AccountingFirmRepository $repository, string $prefix = null): JsonResponse
{
$token = $request->query->get('token');
$theHost = str_replace('www.', '', $request->getHost());
$host = $request->get('host') ?: $theHost;
// $host = 'cabinet-za.de';
if ($token) {
$accountingFirm = $repository->findOneBy(['simulateurToken' => $token]);
$isAuthorized = false;
if ($accountingFirm && in_array($host, $accountingFirm->getListAuthorizedDomains())) {
$isAuthorized = true;
}
$url = $isAuthorized ? $accountingFirm->getSimulateurWidgetUrl() : null;
} else {
$accountingFirm = $repository->findOneBy(['host' => $host]);
$url = $accountingFirm ? $prefix . $this->generateUrl('widget_simulteur') : null;
}
return $this->json($url);
}
#[Route(path: '/widget-simulateur', name: 'widget_simulteur', methods: ['GET', 'POST'])]
public function widgetSimulateur(Request $request, AccountingFirmRepository $repository)
{
$theHost = str_replace('www.', '', $request->getHost());
$host = $request->get('host') ?: $theHost;
// $host = 'cabinet-za.de';
$accountingFirm = $repository->findOneBy(['host' => $host]);
$this->templateBase = '/';
if (!$accountingFirm || $accountingFirm->getHost() !== $host) {
throw new NotFoundHttpException();
}
return $this->render('widget_simulateur_v2/content.html.twig', [
'cabinet' => $accountingFirm,
]);
}
#[Route(path: '/voterrh', name: 'widget_voterrh', methods: ['GET'])]
#[Route(path: '/preview/{host}/voterrh', name: 'previewwidget_voterrh', methods: ['GET'])]
public function widgetVoterrh(Request $request, QueriesV2Manager $qm)
{
$id = $request->get('id');
$reponse = $request->get('reponse');
$ip = $request->getClientIp();
$req = $qm->setQuizVote($id, $reponse, $ip);
return new Response($req);
}
#[Route(path: '/actualite-du-mois/journal', name: 'client_widget_journal_noid')]
#[Route(path: '/actualite-du-mois/journal/{id}', name: 'client_widget_journal_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/journal/{id}', name: 'previewclient_widget_journal_show')]
public function widgetNewsJournalShow(Request $request, QueriesV2Manager $qm, Actuv2JournalRepository $journalRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$parameters = $this->accountingFirm->getParameters();
$id = $request->get('id');
$seopage = new SeoPageClient();
$seopage->setTitle("Journal du mois");
$seopage->setDescription("Journal du mois");
if (isset($id)) {
$data = $qm->getJournalDetails($id);
} else {
$journalLast = $qm->getJournal();
$id = $journalLast['id'];
}
return $this->render('widget_actualite/actu_journal.html.twig', [
'id' => $id,
'seopage' => $seopage
]);
}
#[Route(path: '/actualite-du-mois/aide', name: 'client_widget_aide_noid')]
#[Route(path: '/actualite-du-mois/aide/{id}', name: 'client_widget_aide_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/aide/{id}', name: 'previewclient_widget_aide_show')]
public function widgetNewsAideShow(Request $request, QueriesV2Manager $qm, Actuv2HelpRepository $helpRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$parameters = $this->accountingFirm->getParameters();
$id = $request->get('id');
$seopage = new SeoPageClient();
$seopage->setTitle("L'aide du mois");
$seopage->setDescription("L'aide du mois");
if (isset($id)) {
$data = $qm->getHelpById($id);
} else {
$data = $qm->getHelpWithId();
$id = $data['id'];
}
return $this->render('widget_actualite/actu_help.html.twig', [
'id' => $id,
'seopage' => $seopage
]);
}
#[Route(path: '/actualite-du-mois/calendrier', name: 'client_widget_calendrier_show')]
#[Route(path: '/preview/{host}/actualite-du-mois/calendrier', name: 'previewclient_widget_calendrier_show')]
public function widgetNewsCalendrierShow(Request $request, QueriesV2Manager $qm, Actuv2HelpRepository $helpRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$parameters = $this->accountingFirm->getParameters();
$id = $request->get('id');
$seopage = new SeoPageClient();
$seopage->setTitle("Le calendrier juridique");
$seopage->setDescription("Le calendrier juridique");
return $this->render('widget_actualite/actu_calendrier.html.twig', [
'seopage' => $seopage
]);
}
}