src/Controller/WidgetSimulateurController.php line 135

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\FraisKilometriques;
  4. use App\Repository\AccountingFirmRepository;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use App\Repository\AuthorizedDomainRepository;
  7. use DateTime;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  15. class WidgetSimulateurController extends AbstractController
  16. {
  17.     #[Route('/check-simulateur'name'w_simu_check')]
  18.     public function ctrl_checkSimuateur(Request $requestAccountingFirmRepository $repositorystring $prefix null): JsonResponse
  19.     {
  20.         $token $request->query->get('token');
  21.         $host $request->get('host');
  22.         if ($token && $host) {
  23.             $accountingFirm $repository->findOneBy(['simulateurToken' => $token]);
  24.             $isAuthorized false;
  25.             if ($accountingFirm && in_array($host$accountingFirm->getListAuthorizedDomains())) {
  26.                 $isAuthorized true;
  27.             }
  28.             $url $isAuthorized $accountingFirm->getSimulateurWidgetUrl() : null;
  29.         } else {
  30.             $accountingFirm $repository->findOneBy(['host' => $host]);
  31.             $url $accountingFirm $prefix $this->generateUrl('w_simu_get') : null;
  32.         }
  33.         return $this->json($url);
  34.     }
  35.     #[Route('/widget-simulateur'name'w_simu_get')]
  36.     public function ctrl_widgetSimulateur(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domains)
  37.     {
  38.         $token $request->query->get('token');
  39.         $host $request->get('host');
  40.         if ($host != "preview") {
  41.             $accountingFirm $repository->findOneBy(['host' => $host]);
  42.             if (is_null($accountingFirm)) {
  43.                 $domains $domains->findBy(['name' => $host]);
  44.                 if (is_null($domains)) {
  45.                     throw new NotFoundHttpException();
  46.                 }
  47.                 foreach ($domains as $dom) {
  48.                     $tmp_ac $dom->getAccountingFirm();
  49.                     if ($tmp_ac->getSimulateurToken() == $token) {
  50.                         $accountingFirm $tmp_ac;
  51.                         break;
  52.                     }
  53.                 }
  54.             }
  55.             if (is_null($accountingFirm)) {
  56.                 throw new NotFoundHttpException();
  57.             }
  58.         }
  59.         return $this->render('widget_simulateur_v2/content.html.twig', [
  60.             'cabinet' => $accountingFirm,
  61.         ]);
  62.     }
  63.     #[Route('/widget-simulateur-list'name'w_simu_get_list')]
  64.     public function ctrl_widgetSimulateurList(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domains)
  65.     {
  66.         $token $request->query->get('token');
  67.         $host $request->get('host');
  68.         if ($host != "preview") {
  69.             $accountingFirm $repository->findOneBy(['host' => $host]);
  70.             if (is_null($accountingFirm)) {
  71.                 $domains $domains->findBy(['name' => $host]);
  72.                 if (is_null($domains)) {
  73.                     throw new NotFoundHttpException();
  74.                 }
  75.                 foreach ($domains as $dom) {
  76.                     $tmp_ac $dom->getAccountingFirm();
  77.                     if ($tmp_ac->getSimulateurToken() == $token) {
  78.                         $accountingFirm $tmp_ac;
  79.                         break;
  80.                     }
  81.                 }
  82.             }
  83.             if (is_null($accountingFirm)) {
  84.                 throw new NotFoundHttpException();
  85.             }
  86.         }
  87.         return $this->render('widget_simulateur_v2/list.html.twig', [
  88.             'cabinet' => $accountingFirm,
  89.         ]);
  90.     }
  91.     #[Route('/embed'name'w_simu_embed')]
  92.     public function embed(Request $requestAccountingFirmRepository $repository)
  93.     {
  94.         $root $this->getParameter('kernel.project_dir');
  95.         $path $root '/public/widgets/simulateur/widget_simulateur.js';
  96.         return new BinaryFileResponse($path);
  97.     }
  98.     #[Route('/{filename}.{format}'name'w_simu_files')]
  99.     public function simu_files(Request $requeststring $filenamestring $format)
  100.     {
  101.         $allowed = array('png''jpg''jpeg''gif''js''svg''eot''ttf''woff');
  102.         if (in_array($format$allowed)) {
  103.             $root $this->getParameter('kernel.project_dir');
  104.             $path $root '/public/widgets/simulateur/' $filename '.' $format;
  105.             //dd(file_exists($path), $path, $request->getRequestFormat());
  106.             return new BinaryFileResponse($path);
  107.         }
  108.         return false;
  109.     }
  110.     #[Route('/simulateur-bareme-kilometrique'name'simulateur_bareme_kilometrique')]
  111.     public function simulateur_bareme_kilometrique(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domainsEntityManagerInterface $entityManager): Response
  112.     {
  113.         $token $request->query->get('token');
  114.         $host $request->get('host');
  115.         $rates $entityManager->getRepository(FraisKilometriques::class)->findAll();
  116.         $modifiedRates = [];
  117.         foreach ($rates as $rate) {
  118.             $power str_replace(' ''-'strtolower($rate->getPower()));
  119.             $distance str_replace([' '"'"'('')'], ['-''-'''''], strtolower($rate->getDistance()));
  120.             if ($rate->getOptional()) {
  121.                 $modifiedRates[$distance][$rate->getType()][$power] = [
  122.                     'power' => $rate->getPower(),
  123.                     'rate' => $rate->getRate(),
  124.                     'plus' => $rate->getOptional()
  125.                 ];
  126.             } else {
  127.                 $modifiedRates[$distance][$rate->getType()][$power] = [
  128.                     'power' => $rate->getPower(),
  129.                     'rate' => $rate->getRate(),
  130.                 ];
  131.             }
  132.         }
  133.         if ($host != "preview") {
  134.             $accountingFirm $repository->findOneBy(['host' => $host]);
  135.             if (is_null($accountingFirm)) {
  136.                 $domains $domains->findBy(['name' => $host]);
  137.                 if (is_null($domains)) {
  138.                     throw new NotFoundHttpException();
  139.                 }
  140.                 foreach ($domains as $dom) {
  141.                     $tmp_ac $dom->getAccountingFirm();
  142.                     if ($tmp_ac->getSimulateurToken() == $token) {
  143.                         $accountingFirm $tmp_ac;
  144.                         break;
  145.                     }
  146.                 }
  147.             }
  148.             if (is_null($accountingFirm)) {
  149.                 throw new NotFoundHttpException();
  150.             }
  151.         }
  152.         // Générez le contenu de la page HTML contenant le script
  153.         return $this->render('widget_simulateur_v2/simulateur-bareme-kilometrique.html.twig', [
  154.             'cabinet' => $accountingFirm,
  155.             'rates' => $modifiedRates
  156.         ]);
  157.     }
  158.     /**
  159.      * @Route("/dynamic-svg", name="dynamic_svg")
  160.      */
  161.     public function dynamicSvg(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domains): Response
  162.     {
  163.         $token $request->query->get('token');
  164.         $host $request->get('host');
  165.         if ($host != "preview") {
  166.             $accountingFirm $repository->findOneBy(['host' => $host]);
  167.             if (is_null($accountingFirm)) {
  168.                 $domains $domains->findBy(['name' => $host]);
  169.                 if (is_null($domains)) {
  170.                     throw new NotFoundHttpException();
  171.                 }
  172.                 foreach ($domains as $dom) {
  173.                     $tmp_ac $dom->getAccountingFirm();
  174.                     if ($tmp_ac->getSimulateurToken() == $token) {
  175.                         $accountingFirm $tmp_ac;
  176.                         break;
  177.                     }
  178.                 }
  179.             }
  180.             if (is_null($accountingFirm)) {
  181.                 throw new NotFoundHttpException();
  182.             }
  183.         }
  184.         $cabinetColor $accountingFirm->getActuv2Colorprimary();
  185.         // Rendre le fichier SVG en utilisant Twig
  186.         return $this->render('widget_simulateur_v2/svg/dynamic_svg.html.twig', [
  187.             'cabinetColor' => $cabinetColor,
  188.         ]);
  189.     }
  190.     #[Route('/simulateur-calcul-rtt'name'simulateur_calcul_rtt')]
  191.     public function simulateur_calcul_rtt(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domainsEntityManagerInterface $entityManager): Response
  192.     {
  193.         $token $request->query->get('token');
  194.         $host $request->get('host');
  195.         if ($host != "preview") {
  196.             $accountingFirm $repository->findOneBy(['host' => $host]);
  197.             if (is_null($accountingFirm)) {
  198.                 $domains $domains->findBy(['name' => $host]);
  199.                 if (is_null($domains)) {
  200.                     throw new NotFoundHttpException();
  201.                 }
  202.                 foreach ($domains as $dom) {
  203.                     $tmp_ac $dom->getAccountingFirm();
  204.                     if ($tmp_ac->getSimulateurToken() == $token) {
  205.                         $accountingFirm $tmp_ac;
  206.                         break;
  207.                     }
  208.                 }
  209.             }
  210.             if (is_null($accountingFirm)) {
  211.                 throw new NotFoundHttpException();
  212.             }
  213.         }
  214.         // Générez le contenu de la page HTML contenant le script
  215.         // Récupérer l'année actuelle
  216.         $currentYear = (new DateTime())->format('Y');
  217.         // Calculer l'année précédente et l'année suivante
  218.         $previousYear2 $currentYear 2;
  219.         $previousYear $currentYear 1;
  220.         $nextYear $currentYear 1;
  221.         $nextYear2 $currentYear 2;
  222.         return $this->render('widget_simulateur_v2/simulateur-calcul-rtt.html.twig', [
  223.             'cabinet' => $accountingFirm,
  224.             'currentYear' => $currentYear,
  225.             'previousYear2' => $previousYear2,
  226.             'previousYear' => $previousYear,
  227.             'nextYear' => $nextYear,
  228.             'nextYear2' => $nextYear2,
  229.         ]);
  230.     }
  231. }