src/Controller/WidgetHelpersFirmsController.php line 220

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\AccountingFirmRepository;
  4. use App\Repository\AuthorizedDomainRepository;
  5. use App\Services\HelpersFirmsService;
  6. use App\Services\WidgetMailing;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Qferrer\Mjml\Twig\MjmlExtension;
  9. use Response;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Twig\Environment;
  18. class WidgetHelpersFirmsController extends AbstractController
  19. {
  20.   protected MjmlExtension $mjmlRenderer;
  21.   protected Environment $twig;
  22.   public function __construct(MailerInterface $mailerMjmlExtension $mjmlRendererEnvironment $twig)
  23.     {
  24.         $this->mjmlRenderer $mjmlRenderer;
  25.         $this->twig $twig;
  26.     }
  27.   #[Route('/check-helpers-firms'name'w_helpers_firms_check')]
  28.   public function ctrl_checkName(Request $requestAccountingFirmRepository $repositorystring $prefix null): JsonResponse
  29.   {
  30.     $token $request->query->get('token');
  31.     $host $request->get('host');
  32.     if ($token && $host) {
  33.       $accountingFirm $repository->findOneBy(['helpersFirmsToken' => $token]);
  34.       $isAuthorized false;
  35.       if ($accountingFirm && in_array($host$accountingFirm->getListAuthorizedDomains())) {
  36.         $isAuthorized true;
  37.       }
  38.       $url $isAuthorized $accountingFirm->getHelpersFirmsWidgetUrl() : null;
  39.     } else {
  40.       $accountingFirm $repository->findOneBy(['host' => $host]);
  41.       $url $accountingFirm $prefix $this->generateUrl('w_helpers_firms_get') : null;
  42.     }
  43.     return $this->json($url);
  44.   }
  45.   #[Route('/widget-helpers-firms'name'w_helpers_firms_get')]
  46.   public function ctrl_widgetHelpersFirms(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domainsHelpersFirmsService $helpersFirmsService)
  47.   {
  48.     $token $request->query->get('token');
  49.     $host $request->get('host');
  50.     $helperId $request->get('id');
  51. //    dd($helpersFirmsService->getStartDatas());
  52.     if ($host != "preview") {
  53.       $accountingFirm $repository->findOneBy(['host' => $host]);
  54.       if (is_null($accountingFirm)) {
  55.         $domains $domains->findBy(['name' => $host]);
  56.         if (is_null($domains)) {
  57.           throw new NotFoundHttpException();
  58.         }
  59.         foreach ($domains as $dom) {
  60.           $tmp_ac $dom->getAccountingFirm();
  61.           if ($tmp_ac->getHelpersFirmsToken() == $token) {
  62.             $accountingFirm $tmp_ac;
  63.             break;
  64.           }
  65.         }
  66.       }
  67.       if (is_null($accountingFirm)) {
  68.         throw new NotFoundHttpException();
  69.       }
  70.     }
  71.     $numberHelpers $helpersFirmsService->getNumberHelpers();
  72.     if ($helperId) {
  73.       $helper $helpersFirmsService->getHelperById($helperId);
  74.       $territoires $helpersFirmsService->getTerritoiresFromContactsHelper($helper['cache_indexation']['contacts']);
  75.       return $this->render('widget_helpers_firms/show.html.twig', [
  76.         'cabinet' => $accountingFirm,
  77.         'territoires' => $territoires,
  78.         'helper' => $helper,
  79.         'numberHelpers' => $numberHelpers,
  80.       ]);
  81.     }
  82.     return $this->render('widget_helpers_firms/content.html.twig', [
  83.       'cabinet' => $accountingFirm,
  84.       'startDatas' => $helpersFirmsService->getStartDatas(),
  85.       'numberHelpers' => $numberHelpers,
  86.     ]);
  87.   }
  88.   #[Route('/get-territoires-helpers-firms'name'w_helpers_firms_get_territoires')]
  89.   public function getTerritoires_widgetHelpersFirms(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domainsHelpersFirmsService $helpersFirmsService)
  90.   {
  91.     $token $request->query->get('token');
  92.     $host $request->get('host');
  93.     $jsonFilters $request->getContent();
  94.     $filtersData json_decode($jsonFilterstrue);
  95.     $valueSearchJson $request->getContent();
  96.     $valueSearch json_decode($valueSearchJsontrue);
  97. //    dd($helpersFirmsService->getStartDatas());
  98.     if ($host != "preview") {
  99.       $accountingFirm $repository->findOneBy(['host' => $host]);
  100.       if (is_null($accountingFirm)) {
  101.         $domains $domains->findBy(['name' => $host]);
  102.         if (is_null($domains)) {
  103.           throw new NotFoundHttpException();
  104.         }
  105.         foreach ($domains as $dom) {
  106.           $tmp_ac $dom->getAccountingFirm();
  107.           if ($tmp_ac->getHelpersFirmsToken() == $token) {
  108.             $accountingFirm $tmp_ac;
  109.             break;
  110.           }
  111.         }
  112.       }
  113.       if (is_null($accountingFirm)) {
  114.         throw new NotFoundHttpException();
  115.       }
  116.     }
  117.     $territoires $helpersFirmsService->searchTerritoiresFromString($valueSearch);
  118.     return $this->json($territoires);
  119.   }
  120.   #[Route('/result-helpers-firms'name'w_helpers_firms_results')]
  121.   public function results_widgetHelpersFirms(Request $requestAccountingFirmRepository $repositoryAuthorizedDomainRepository $domainsHelpersFirmsService $helpersFirmsService)
  122.   {
  123.     $token $request->query->get('token');
  124.     $host $request->get('host');
  125.     $jsonFilters $request->getContent();
  126.     $filtersData json_decode($jsonFilterstrue);
  127. // Paramètres de pagination
  128.     $page $request->query->getInt('page'1); // Par défaut page 1
  129.     $limit $request->query->getInt('limit'20); // Par défaut 10 résultats par page
  130. //    dd($helpersFirmsService->getStartDatas());
  131.     if ($host != "preview") {
  132.       $accountingFirm $repository->findOneBy(['host' => $host]);
  133.       if (is_null($accountingFirm)) {
  134.         $domains $domains->findBy(['name' => $host]);
  135.         if (is_null($domains)) {
  136.           throw new NotFoundHttpException();
  137.         }
  138.         foreach ($domains as $dom) {
  139.           $tmp_ac $dom->getAccountingFirm();
  140.           if ($tmp_ac->getHelpersFirmsToken() == $token) {
  141.             $accountingFirm $tmp_ac;
  142.             break;
  143.           }
  144.         }
  145.       }
  146.       if (is_null($accountingFirm)) {
  147.         throw new NotFoundHttpException();
  148.       }
  149.     }
  150.     $helpers $helpersFirmsService->searchHelpersFromFilters($filtersData$page$limit);
  151.     return $this->json($helpers);
  152.   }
  153.   #[Route('/embed'name'w_helpers_firms_embed')]
  154.   public function embed()
  155.   {
  156.     $root $this->getParameter('kernel.project_dir');
  157.     $path $root '/public/widgets/widget_helpers_firms/widget_helpers_firms.js';
  158.     return new BinaryFileResponse($path);
  159.   }
  160.   #[Route('/{filename}.{format}'name'w_helpers_firms_files')]
  161.   public function helpers_firms_files(string $filenamestring $format)
  162.   {
  163.       $allowed = array('png''jpg''jpeg''gif''js''svg''eot''ttf''woff');
  164.       if (in_array($format$allowed)) {
  165.           $root $this->getParameter('kernel.project_dir');
  166.           $path $root '/public/widget_helpers_firms/' $filename '.' $format;
  167.           // si fichier n'existe pas check dans le dossier de build du widget (pour les img import dans scss ou js)
  168.           if (!file_exists($path)) {
  169.             $path $root '/public/widgets/widget_helpers_firms/' $filename '.' $format;
  170.           }
  171.           return new BinaryFileResponse($path);
  172.       }
  173.       return false;
  174.   }
  175. }