src/Controller/DefaultController.php line 531

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Service\YouscribeApi;
  8. use App\Entity\Categorie;
  9. use App\Entity\Projet;
  10. use App\Entity\Theme;
  11. use App\Entity\Tag;
  12. use App\Entity\Subscriber;
  13. use App\Service\DoceboApi;
  14. use App\Entity\Client;
  15. use App\Entity\ClientProduit;
  16. use App\Entity\Groupe;
  17. use App\Entity\Rubrique;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Knp\Component\Pager\PaginatorInterface;
  20. use Proxies\__CG__\App\Entity\Categorie as EntityCategorie;
  21. class DefaultController extends AbstractController
  22. {
  23.     /**
  24.      * @Route("/client/{idc}/projet/{id}/test", name="default_test")
  25.      */
  26.     public function indextest(ManagerRegistry $doctrineRequest $request$id$idc): Response
  27.     {
  28.         ini_set('max_execution_time''0');
  29.         ini_set('memory_limit''-1');
  30.         $title "home";
  31.         $entityManager $doctrine->getManager();
  32.         $ysapi = new YouscribeApi();
  33.         $token $ysapi->getAuthorization();
  34.         $client $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
  35.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  36.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  37.         $rubriquesInfos $projet->getRubriques();
  38.         $rubriques = [];
  39.         foreach ($rubriquesInfos as $rubrique) {
  40.             $clientProduits $entityManager->getRepository(ClientProduit::class)->findBy(array('projet' => $projet), array('orderRubrique' => 'ASC'));
  41.             foreach ($clientProduits as $clientP) {
  42.                 array_push($rubriques$clientP->getRubrique());
  43.             }
  44.         }
  45.         $rubriques array_unique($rubriquesSORT_REGULAR);
  46.         $idUser $request->query->get('user_id');
  47.         if ($idUser) {
  48.            try {
  49.                 $subscriber $this->inscription($doctrine$idUser$client);
  50.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  51.                 dd($tokenUser);
  52.                 $Lastbooks $ysapi->getLastRead($token$subscriber->getLogin());
  53.                 $ids = [];
  54.                 foreach ($Lastbooks as $key => $value) {
  55.                     array_push($ids$value->ProductId);
  56.                 }
  57.                 $books $ysapi->getCatalogByIds($token$ids);
  58.                 $lastRead $this->filterExcludedProducts($books->Products);
  59.             } catch (\Throwable $th) {
  60.                 $subscriber null;
  61.                 $tokenUser "Notgenerated";
  62.                 $lastRead null;
  63.             }
  64.         } else {
  65.             $idUser 0;
  66.             $subscriber null;
  67.             $tokenUser "Notgenerated";
  68.             $lastRead null;
  69.         }
  70.         return $this->render('default/index.html.twig', [
  71.             'title' => $title,
  72.             'categories' => $categories,
  73.             'client' => $client,
  74.             'projet' => $projet,
  75.             'rubriques' => $rubriques,
  76.             'subsriber' => $subscriber,
  77.             'tokenUser' => $tokenUser,
  78.             'idUser' => $idUser,
  79.             'lastRead' => $lastRead
  80.         ]);
  81.     }
  82.     /**
  83.      * @Route("/client/{idc}/projet/{id}", name="default")
  84.      */
  85.     public function index(ManagerRegistry $doctrineRequest $request$id$idc): Response
  86.     {
  87.         ini_set('max_execution_time''0');
  88.         ini_set('memory_limit''-1');
  89.         $title "home";
  90.         $entityManager $doctrine->getManager();
  91.         $ysapi = new YouscribeApi();
  92.         $token $ysapi->getAuthorization();
  93.         $client $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
  94.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  95.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  96.         $publicRubriques $entityManager->getRepository(Rubrique::class)->findBy(array('typeRub' => 1));
  97.         $rubriques = [];
  98.         $clientProduits $entityManager->getRepository(ClientProduit::class)->findBy(array('projet' => $projet), array('orderRubrique' => 'ASC'));
  99.         foreach ($clientProduits as $clientP) {
  100.             array_push($rubriques$clientP->getRubrique());
  101.         }
  102.         $rubriques array_unique($rubriquesSORT_REGULAR);
  103.         $idUser $request->query->get('user_id');
  104.         if ($idUser) {
  105.             try {
  106.                 $subscriber $this->inscription($doctrine$idUser$client);
  107.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  108.                 $Lastbooks $ysapi->getLastRead($token$subscriber->getLogin());
  109.                 $ids = [];
  110.                 foreach ($Lastbooks as $key => $value) {
  111.                     array_push($ids$value->ProductId);
  112.                 }
  113.                 $books $ysapi->getCatalogByIds($token$ids);
  114.                 $lastRead $this->filterExcludedProducts($books->Products);
  115.             } catch (\Throwable $th) {
  116.                 $subscriber null;
  117.                 $tokenUser "Notgenerated";
  118.                 $lastRead null;
  119.             }
  120.         } else {
  121.             $idUser 0;
  122.             $subscriber null;
  123.             $tokenUser "Notgenerated";
  124.             $lastRead null;
  125.         }
  126.         return $this->render('default/index.html.twig', [
  127.             'title' => $title,
  128.             'categories' => $categories,
  129.             'client' => $client,
  130.             'projet' => $projet,
  131.             'rubriques' => $rubriques,
  132.             'publicRubriques' => $publicRubriques,
  133.             'subsriber' => $subscriber,
  134.             'tokenUser' => $tokenUser,
  135.             'idUser' => $idUser,
  136.             'lastRead' => $lastRead
  137.         ]);
  138.     }
  139.     /**
  140.      * @Route("/client/{idc}/projet/{id}/groupe/{idGr}", name="default_groupe")
  141.      */
  142.     public function index4(ManagerRegistry $doctrineRequest $request$id$idc$idGr): Response
  143.     {
  144.         ini_set('max_execution_time''0');
  145.         ini_set('memory_limit''-1');
  146.         $title "home";
  147.         $entityManager $doctrine->getManager();
  148.         $ysapi = new YouscribeApi();
  149.         $token $ysapi->getAuthorization();
  150.         $client $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
  151.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  152.         $groupe $entityManager->getRepository(Groupe::class)->findOneBy(['client' => $client'projet' => $projet'id' => $idGr]);
  153.         $rubriques = [];
  154.         $rubriquesIds $groupe->getRubriques();
  155.         foreach ($rubriquesIds as $idR) {
  156.             $rubriqueInfos $entityManager->getRepository(Rubrique::class)->findOneBy(['id' => $idR]);
  157.             array_push($rubriques$rubriqueInfos);
  158.         }
  159.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  160.         $idUser $request->query->get('user_id');
  161.         if ($idUser) {
  162.             try {
  163.                 $subscriber $this->inscription($doctrine$idUser$client);
  164.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  165.             } catch (\Throwable $th) {
  166.                 $subscriber null;
  167.                 $tokenUser "Notgenerated";
  168.             }
  169.         } else {
  170.             $idUser 0;
  171.             $subscriber null;
  172.             $tokenUser "Notgenerated";
  173.         }
  174.         return $this->render('default/groupe.html.twig', [
  175.             'title' => $title,
  176.             'categories' => $categories,
  177.             'client' => $client,
  178.             'projet' => $projet,
  179.             'rubriques' => $rubriques,
  180.             'subsriber' => $subscriber,
  181.             'tokenUser' => $tokenUser,
  182.             'idUser' => $idUser
  183.         ]);
  184.     }
  185.     /**
  186.      * @Route("/client/{idc}/projet/{id}/groupedetail/{idGr}", name="default_groupe_detail")
  187.      */
  188.     public function index7(ManagerRegistry $doctrineRequest $request$id$idc$idGr): Response
  189.     {
  190.         ini_set('max_execution_time''0');
  191.         ini_set('memory_limit''-1');
  192.         $title "home";
  193.         $entityManager $doctrine->getManager();
  194.         $ysapi = new YouscribeApi();
  195.         $token $ysapi->getAuthorization();
  196.         $client $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
  197.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  198.         $groupe $entityManager->getRepository(Groupe::class)->findOneBy(['client' => $client'projet' => $projet'id' => $idGr]);
  199.         $rubriques = [];
  200.         $rubriquesIds $groupe->getRubriques();
  201.         foreach ($rubriquesIds as $idR) {
  202.             $rubriqueInfos $entityManager->getRepository(Rubrique::class)->findOneBy(['id' => $idR]);
  203.             array_push($rubriques$rubriqueInfos);
  204.         }
  205.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  206.         $idUser $request->query->get('user_id');
  207.         if ($idUser) {
  208.             try {
  209.                 $subscriber $this->inscription($doctrine$idUser$client);
  210.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  211.             } catch (\Throwable $th) {
  212.                 $subscriber null;
  213.                 $tokenUser "Notgenerated";
  214.             }
  215.         } else {
  216.             $idUser 0;
  217.             $subscriber null;
  218.             $tokenUser "Notgenerated";
  219.         }
  220.         return $this->render('default/groupe2.html.twig', [
  221.             'title' => $title,
  222.             'categories' => $categories,
  223.             'client' => $client,
  224.             'projet' => $projet,
  225.             'rubriques' => $rubriques,
  226.             'subsriber' => $subscriber,
  227.             'tokenUser' => $tokenUser,
  228.             'idUser' => $idUser,
  229.             'groupe' => $groupe
  230.         ]);
  231.     }
  232.     /**
  233.      * @Route("/client/{idc}/projet/{id}/{idUser}", name="default_index")
  234.      */
  235.     public function index2(ManagerRegistry $doctrineRequest $request$id$idc$idUser 0): Response
  236.     {
  237.         ini_set('max_execution_time''0');
  238.         ini_set('memory_limit''-1');
  239.         $title "home";
  240.         $entityManager $doctrine->getManager();
  241.         $ysapi = new YouscribeApi();
  242.         $token $ysapi->getAuthorization();
  243.         $client $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
  244.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  245.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  246.         $rubriquesInfos $projet->getRubriques();
  247.         $rubriques = [];
  248.         foreach ($rubriquesInfos as $rubrique) {
  249.             $clientProduits $entityManager->getRepository(ClientProduit::class)->findBy(array('projet' => $projet), array('orderRubrique' => 'ASC'));
  250.             foreach ($clientProduits as $clientP) {
  251.                 array_push($rubriques$clientP->getRubrique());
  252.             }
  253.             // array_push($rubriques,)
  254.         }
  255.         $rubriques array_unique($rubriquesSORT_REGULAR);
  256.         if ($idUser != null) {
  257.             $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
  258.             try {
  259.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  260.             } catch (\Throwable $th) {
  261.                 $subscriber null;
  262.                 $tokenUser "Notgenerated";
  263.             }
  264.         } else {
  265.             $idUser 0;
  266.             $subscriber null;
  267.             $tokenUser "Notgenerated";
  268.         }
  269.         return $this->render('default/index.html.twig', [
  270.             'title' => $title,
  271.             'categories' => $categories,
  272.             'client' => $client,
  273.             'projet' => $projet,
  274.             'rubriques' => $rubriques,
  275.             'subsriber' => $subscriber,
  276.             'tokenUser' => $tokenUser,
  277.             'idUser' => $idUser
  278.         ]);
  279.     }
  280.     /**
  281.      * @Route("/client/{idc}/projet/{id}/rubrique/{idr}", name="show_default_rubrique")
  282.      */
  283.     public function index1(ManagerRegistry $doctrineRequest $request$id$idc$idr): Response
  284.     {
  285.         ini_set('max_execution_time''0');
  286.         ini_set('memory_limit''-1');
  287.         $title "home";
  288.         $entityManager $doctrine->getManager();
  289.         $ysapi = new YouscribeApi();
  290.         $token $ysapi->getAuthorization();
  291.         $client $entityManager->getRepository(Client::class)->findOneBy(['id' => $idc]);
  292.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  293.         $rubrique $entityManager->getRepository(Rubrique::class)->findOneBy(array('id' => $idr));
  294.         $clientProduits $entityManager->getRepository(ClientProduit::class)->findBy(array('rubrique' => $rubrique'projet' => $projet'client' => $client), array('orderProduit' => 'ASC'));
  295.         $produits = [];
  296.         foreach ($clientProduits as $clientP) {
  297.             array_push($produits$clientP->getProduit());
  298.         }
  299.         $data = [
  300.             'name' => $rubrique->getName(),
  301.             'description' => $rubrique->getDescription(),
  302.             'produits' => $produits
  303.         ];
  304.         $title $rubrique->getName();
  305.         $idUser $request->query->get('user_id');
  306.         if ($idUser) {
  307.             try {
  308.                 $subscriber $this->inscription($doctrine$idUser$client);
  309.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  310.             } catch (\Throwable $th) {
  311.                 $subscriber null;
  312.                 $tokenUser "Notgenerated";
  313.             }
  314.         } else {
  315.             $idUser 0;
  316.             $subscriber null;
  317.             $tokenUser "Notgenerated";
  318.         }
  319.         return $this->render('default/index_rubrique.html.twig', [
  320.             'title' => $title,
  321.             'client' => $client,
  322.             'projet' => $projet,
  323.             'clientsProduits' => (object) $data,
  324.             'rubrique' => $rubrique,
  325.             'subsriber' => $subscriber,
  326.             'tokenUser' => $tokenUser,
  327.             'idUser' => $idUser
  328.         ]);
  329.     }
  330.     /**
  331.      * @Route("/client/{idc}/projet/{id}/{idcat}/{idUser}", name="default_categorie_show")
  332.      */
  333.     public function show(ManagerRegistry $doctrineRequest $request$id$idcat$idUser 0): Response
  334.     {
  335.         ini_set('max_execution_time''0');
  336.         ini_set('memory_limit''-1');
  337.         $ysapi = new YouscribeApi();
  338.         $token $ysapi->getAuthorization();
  339.         $entityManager $doctrine->getManager();
  340.         if ($idUser != null) {
  341.             $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
  342.             try {
  343.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  344.             } catch (\Throwable $th) {
  345.                 $subscriber null;
  346.                 $tokenUser "Notgenerated";
  347.             }
  348.         } else {
  349.             $idUser 0;
  350.             $subscriber null;
  351.             $tokenUser "Notgenerated";
  352.         }
  353.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  354.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  355.         $categorie $entityManager->getRepository(Categorie::class)->findOneBy(array('id' => $idcat));
  356.         $title $categorie->getName();
  357.         $themesIDs $categorie->getThemes();
  358.         $themes = [];
  359.         foreach ($themesIDs as $themeID) {
  360.             $theme $entityManager->getRepository(Theme::class)->findOneBy(array('id' => $themeID));
  361.             $products $ysapi->getCatalog($token$skip 0$taked 16$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $quicksearch "");
  362.             $products $ysapi->getCatalogProducts($token$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
  363.             // Filter out only specific product IDs for category ID 8
  364.             $filteredProducts $this->filterExcludedProducts($products->Products);
  365.             if ($idcat == 8) {
  366.                 // Specific owner IDs to exclude (Le Figaro publications)
  367.                 $excludedOwnerIds = [221702711077282221702818184663];
  368.                 $filteredProducts array_filter($products->Products, function ($product) use ($excludedOwnerIds) {
  369.                     $ownerId = isset($product->OwnerId) ? $product->OwnerId 0;
  370.                     // Filter based on owner IDs
  371.                     return !in_array($ownerId$excludedOwnerIds);
  372.                 });
  373.                 // Re-index array after filtering
  374.                 $filteredProducts array_values($filteredProducts);
  375.             }
  376.             array_push($themes, [
  377.                 'id' => $theme->getId(),
  378.                 'label' => $theme->getLabel(),
  379.                 'idYouscribeTheme' => $theme->getIdYouscribeTheme(),
  380.                 'products' => $filteredProducts,
  381.                 'totalProducts' => count($filteredProducts),
  382.             ]);
  383.         }
  384.         return $this->render('default/index.html.twig', [
  385.             'title' => $title,
  386.             'categories' => $categories,
  387.             'projet' => $projet,
  388.             'themes' => $themes,
  389.             'categorie' => $categorie,
  390.             'tokenUser' => $tokenUser,
  391.             'idUser' => $idUser
  392.         ]);
  393.     }
  394.     /**
  395.      * @Route("/client/{idc}/projet/{id}/{idcat}/{idUser}/{idTh}", name="default_categorie_show_tag")
  396.      */
  397.     public function showtag(ManagerRegistry $doctrine$id$idcat$idTh$idUser 0PaginatorInterface $paginatorInterfaceRequest $request): Response
  398.     {
  399.         ini_set('max_execution_time''0');
  400.         ini_set('memory_limit''-1');
  401.         $ysapi = new YouscribeApi();
  402.         $token $ysapi->getAuthorization();
  403.         $entityManager $doctrine->getManager();
  404.         if ($idUser != 0) {
  405.             $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
  406.             try {
  407.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  408.             } catch (\Throwable $th) {
  409.                 $subscriber null;
  410.                 $tokenUser "Notgenerated";
  411.             }
  412.         } else {
  413.             $idUser 0;
  414.             $subscriber null;
  415.             $tokenUser "Notgenerated";
  416.         }
  417.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  418.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  419.         $categorie $entityManager->getRepository(Categorie::class)->findOneBy(array('id' => $idcat));
  420.         $title $categorie->getName();
  421.         $theme $entityManager->getRepository(Theme::class)->findOneBy(array('id' => $idTh));
  422.         $tagsInfos $theme->getTags();
  423.         $tags = [];
  424.         $produits = [];
  425.         $countProducts 0;
  426.         $products $ysapi->getCatalogProducts($token$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
  427.         $countProducts $products->TotalResults;
  428.         foreach ($tagsInfos as $tag) {
  429.             $productsTags $ysapi->getCatalog($token0$countProducts$categorie->getIdYouscribe(), $tag->getIdYouscribeTag());
  430.             array_push($tags, [
  431.                 'id' => $tag->getId(),
  432.                 'label' => $tag->getLabel(),
  433.                 'idYouscribeTheme' => $tag->getIdYouscribeTag(),
  434.             ]);
  435.             foreach ($productsTags->Products as $prd) {
  436.                 array_push($produits$prd);
  437.             }
  438.             $produits $this->filterExcludedProducts($produits);
  439.         }
  440.         if (count($tagsInfos) > 0) {
  441.             $produits $paginatorInterface->paginate(
  442.                 $produits,
  443.                 $request->query->getInt('page'1),
  444.                 36,
  445.             );
  446.         } else {
  447.             $products $ysapi->getCatalog($token0$countProducts$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
  448.             foreach ($products->Products as $prd) {
  449.                 array_push($produits$prd);
  450.             }
  451.             $produits $this->filterExcludedProducts($produits);
  452.             $produits $paginatorInterface->paginate(
  453.                 $produits,
  454.                 $request->query->getInt('page'1),
  455.                 36,
  456.             );
  457.         }
  458.         $tagInfo = ['id' => 0"label" => "Tous les sous thèmes"];
  459.         return $this->render('default/index.html.twig', [
  460.             'title' => $title,
  461.             'categories' => $categories,
  462.             'projet' => $projet,
  463.             'tags' => $tags,
  464.             'theme' => $theme,
  465.             'categorie' => $categorie,
  466.             'countProducts' => $countProducts,
  467.             'products' => $produits,
  468.             'tagInfo' => $tagInfo,
  469.             'idL' => 0,
  470.             'idTr' => null,
  471.             'tokenUser' => $tokenUser,
  472.             'idUser' => $idUser
  473.         ]);
  474.     }
  475.     /**
  476.      * @Route("/client/{idc}/projet/{id}/{idcat}/{idUser}/{idTh}/{idTag}/{idL}/{idTr}", name="default_categorie_show_result")
  477.      */
  478.     public function showResult(ManagerRegistry $doctrine$id$idcat$idTh$idUser 0$idTag 0PaginatorInterface $paginatorInterfaceRequest $request$idL 0$idTr null): Response
  479.     {
  480.         ini_set('max_execution_time''0');
  481.         ini_set('memory_limit''-1');
  482.         $ysapi = new YouscribeApi();
  483.         $token $ysapi->getAuthorization();
  484.         $entityManager $doctrine->getManager();
  485.         if ($idUser != 0) {
  486.             $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
  487.             try {
  488.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  489.             } catch (\Throwable $th) {
  490.                 $subscriber null;
  491.                 $tokenUser "Notgenerated";
  492.             }
  493.         } else {
  494.             $idUser 0;
  495.             $subscriber null;
  496.             $tokenUser "Notgenerated";
  497.         }
  498.         $projet $entityManager->getRepository(Projet::class)->findOneBy(array('id' => $id));
  499.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  500.         $categorie $entityManager->getRepository(Categorie::class)->findOneBy(array('id' => $idcat));
  501.         $title $categorie->getName();
  502.         $theme $entityManager->getRepository(Theme::class)->findOneBy(array('id' => $idTh));
  503.         if ($idTag != 0) {
  504.             $tagInfo $entityManager->getRepository(Tag::class)->findOneBy(array('id' => $idTag));
  505.         } else {
  506.             $tagInfo = ['id' => 0"label" => "Tous les sous thèmes"];
  507.         }
  508.         $countProducts 0;
  509.         $productsTheme $ysapi->getCatalogProducts($token$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
  510.         $countProducts $productsTheme->TotalResults;
  511.         $produits = [];
  512.         if ($idTag == 0) {
  513.             if ($idL != 0) {
  514.                 $productsTags $ysapi->getCatalogByTheme($token0$countProducts$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $idTr$idL);
  515.                 $countProducts $productsTags->TotalResults;
  516.                 $countProducts $countProducts 100;
  517.                 for ($i 0$i < (int) $countProducts$i++) {
  518.                     $j $i 100;
  519.                     $productsTags $ysapi->getCatalogByTheme($token$j100$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $idTr$idL);
  520.                     foreach ($productsTags->Products as $prd) {
  521.                         array_push($produits$prd);
  522.                     }
  523.                 }
  524.                 // 
  525.             } else {
  526.                 $productsTags $ysapi->getCatalog($token0$countProducts$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme());
  527.                 $countProducts $productsTags->TotalResults;
  528.                 $countProducts $countProducts 100;
  529.                 for ($i 0$i < (int) $countProducts$i++) {
  530.                     $j $i 100;
  531.                     $productsTags $ysapi->getCatalog($token0100$categorie->getIdYouscribe(), $theme->getIdYouscribeTheme(), $idTr);
  532.                     foreach ($productsTags->Products as $prd) {
  533.                         array_push($produits$prd);
  534.                     }
  535.                 }
  536.             }
  537.         } else {
  538.             $productsTags $ysapi->getCatalogByTheme($token0$countProducts$categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag(), $idTr$idL);
  539.             $countProducts $productsTags->TotalResults;
  540.             $countProducts $countProducts 100;
  541.             if ($idL != 0) {
  542.                 for ($i 0$i < (int) $countProducts$i++) {
  543.                     $j $i 100;
  544.                     $productsTags $ysapi->getCatalogByTheme($token0100$categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag(), $idTr$idL);
  545.                     foreach ($productsTags->Products as $prd) {
  546.                         array_push($produits$prd);
  547.                     }
  548.                 }
  549.             } else {
  550.                 $productsTags $ysapi->getCatalog($token0$countProducts$categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag());
  551.                 $countProducts $productsTags->TotalResults;
  552.                 $countProducts $countProducts 100;
  553.                 for ($i 0$i < (int) $countProducts$i++) {
  554.                     $j $i 100;
  555.                     $productsTags $ysapi->getCatalog($token0100$categorie->getIdYouscribe(), $tagInfo->getIdYouscribeTag());
  556.                     foreach ($productsTags->Products as $prd) {
  557.                         array_push($produits$prd);
  558.                     }
  559.                 }
  560.             }
  561.         }
  562.         $produits  $this->filterExcludedProducts($produits);
  563.         $produits $paginatorInterface->paginate(
  564.             $produits,
  565.             $request->query->getInt('page'1),
  566.             36,
  567.         );
  568.         $produits->setTemplate('@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig');
  569.         $tagsInfos $theme->getTags();
  570.         $tags = [];
  571.         foreach ($tagsInfos as $tag) {
  572.             array_push($tags, [
  573.                 'id' => $tag->getId(),
  574.                 'label' => $tag->getLabel(),
  575.                 'idYouscribeTheme' => $tag->getIdYouscribeTag(),
  576.             ]);
  577.         }
  578.         return $this->render('default/index.html.twig', [
  579.             'title' => $title,
  580.             'categories' => $categories,
  581.             'projet' => $projet,
  582.             'tags' => $tags,
  583.             'theme' => $theme,
  584.             'categorie' => $categorie,
  585.             'countProducts' => $countProducts,
  586.             'products' => $produits,
  587.             'tagInfo' => $tagInfo,
  588.             'idL' => $idL,
  589.             'idTr' => $idTr,
  590.             'tokenUser' => $tokenUser,
  591.             'idUser' => $idUser
  592.         ]);
  593.     }
  594.     /**
  595.      * @Route("/client/search", name="search_youscribe")
  596.      */
  597.     public function search(ManagerRegistry $doctrineRequest $requestPaginatorInterface $paginatorInterface)
  598.     {
  599.         ini_set('max_execution_time''0');
  600.         ini_set('memory_limit''-1');
  601.         $title "home";
  602.         $ysapi = new YouscribeApi();
  603.         $token $ysapi->getAuthorization();
  604.         $entityManager $doctrine->getManager();
  605.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  606.         if ($request->getMethod() == Request::METHOD_GET) {
  607.             $formdata $_GET['form'];
  608.             $data $formdata["query"];
  609.             $wordsearched $data;
  610.             $idUser $_GET['idUser'];
  611.             $projet $entityManager->getRepository(Projet::class)->findOneBy(['id' => $_GET['projet']]);
  612.             if ($idUser != 0) {
  613.                 $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
  614.                 try {
  615.                     $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  616.                 } catch (\Throwable $th) {
  617.                     $subscriber null;
  618.                     $tokenUser "Notgenerated";
  619.                 }
  620.             } else {
  621.                 $idUser 0;
  622.                 $subscriber null;
  623.                 $tokenUser "Notgenerated";
  624.             }
  625.         }
  626.         $strings = ['sexualité''polisario''polizario''la dynastie alaouite marocaine''l’héritage de Habdelhafid''dynastie''alaouite'];
  627.         $productsInfos = [];
  628.         $page 0;
  629.         if (!in_array($wordsearched$strings)) {
  630.             do {
  631.                 $products $ysapi->searchProducts2($token$page 30003000$wordsearched);
  632.                 $totalResults $products->TotalResults;
  633.                 foreach ($products->Products as $prd) {
  634.                     if ($prd->Id != 3706725) {
  635.                         $productsInfos[] = $prd;
  636.                     }
  637.                 }
  638.                 $page++;
  639.             } while ($page ceil($products->TotalResults 3000));
  640.         }
  641.         $productsInfos $this->filterExcludedProducts($productsInfos);
  642.         $productsInfos $paginatorInterface->paginate(
  643.             $productsInfos,
  644.             $request->query->getInt('page'1),
  645.             36,
  646.         );
  647.         $productsInfos->setTemplate('@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig');
  648.         return $this->render('default/index.html.twig', [
  649.             'title' => $title,
  650.             'categories' => $categories,
  651.             'client' => $projet->getClient(),
  652.             'projet' => $projet,
  653.             'subsriber' => $subscriber,
  654.             'tokenUser' => $tokenUser,
  655.             'totalResults' => isset($totalResults) ? $totalResults 0,
  656.             'idUser' => $idUser,
  657.             'productsInfos' => $productsInfos,
  658.             'words' => $wordsearched,
  659.             'sort' => ' ',
  660.             'language_id' => ' ',
  661.             'categorie' => ' '
  662.         ]);
  663.     }
  664.     /**
  665.      * @Route("/client/filter/{idProjet}/{idUser}/{words}/{language_id}/{sort}/{categorie}", name="filter_youscribe")
  666.      */
  667.     public function filter(ManagerRegistry $doctrineRequest $requestPaginatorInterface $paginatorInterface$idProjet$idUser$words$language_id null$sort null$categorie null)
  668.     {
  669.         ini_set('max_execution_time''0');
  670.         ini_set('memory_limit''-1');
  671.         $title "home";
  672.         $ysapi = new YouscribeApi();
  673.         $token $ysapi->getAuthorization();
  674.         $entityManager $doctrine->getManager();
  675.         $categories $entityManager->getRepository(Categorie::class)->findCategories();
  676.         $projet $entityManager->getRepository(Projet::class)->findOneBy(['id' => $idProjet]);
  677.         if ($idUser != 0) {
  678.             $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(['UserId' => $idUser]);
  679.             try {
  680.                 $tokenUser $ysapi->getAuthorizeUser($token$subscriber->getLogin());
  681.             } catch (\Throwable $th) {
  682.                 $subscriber null;
  683.                 $tokenUser "Notgenerated";
  684.             }
  685.         } else {
  686.             $idUser 0;
  687.             $subscriber null;
  688.             $tokenUser "Notgenerated";
  689.         }
  690.         if ($words) {
  691.             $products $ysapi->searchProducts($token$categorie$words01000$sort$language_id);
  692.         }
  693.         $totalResults count($products->Products);
  694.         $productsInfos = [];
  695.         foreach ($products->Products as $prd) {
  696.             array_push($productsInfos$prd);
  697.         }
  698.         $productsInfos $this->filterExcludedProducts($productsInfos);
  699.         $productsInfos $paginatorInterface->paginate(
  700.             $productsInfos,
  701.             $request->query->getInt('page'1),
  702.             36,
  703.         );
  704.         $productsInfos->setTemplate('@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig');
  705.         return $this->render('default/index.html.twig', [
  706.             'title' => $title,
  707.             'categories' => $categories,
  708.             'client' => $projet->getClient(),
  709.             'projet' => $projet,
  710.             'subsriber' => $subscriber,
  711.             'totalResults' => $totalResults,
  712.             'tokenUser' => $tokenUser,
  713.             'idUser' => $idUser,
  714.             'productsInfos' => $productsInfos,
  715.             'words' => $words,
  716.             'sort' => $sort,
  717.             'language_id' => $language_id,
  718.             'categorie' => $categorie
  719.         ]);
  720.     }
  721.     public function inscription(ManagerRegistry $doctrine$idUserClient $client)
  722.     {
  723.         ini_set('max_execution_time''0');
  724.         ini_set('memory_limit''-1');
  725.         $entityManager $doctrine->getManager();
  726.         $DoceboApi = new DoceboApi();
  727.         $ys = new YouscribeApi();
  728.         $subscriber $entityManager->getRepository(Subscriber::class)->findOneBy(array('UserId' => $idUser));
  729.         if (!$subscriber) {
  730.             $userInfo $DoceboApi->getDoceboApi("/manage/v1/user"$idUser);
  731.             $token $ys->getAuthorization();
  732.             $info $ys->createSubscriber($token$idUser11$userlogin null$userInfo->data->user_data->email$userInfo->data->user_data->first_name$userInfo->data->user_data->last_name);
  733.             $subscriber = new Subscriber();
  734.             $subscriber->setUserFirstName($userInfo->data->user_data->first_name);
  735.             $subscriber->setUserLastName($userInfo->data->user_data->last_name);
  736.             $subscriber->setOfferTypeId(11);
  737.             $subscriber->setUrl($info->Url);
  738.             $subscriber->setLogin($info->Login);
  739.             $subscriber->setPassword($info->Password);
  740.             $subscriber->setUserId($idUser);
  741.             $subscriber->setUserLogin($userInfo->data->user_data->email);
  742.             $subscriber->setUserEmail($userInfo->data->user_data->email);
  743.             $subscriber->setDateCreation(new \DateTime());
  744.             $subscriber->setClient($client);
  745.             $entityManager->persist($subscriber);
  746.             $entityManager->flush();
  747.         } else {
  748.             $token $ys->getAuthorization();
  749.             $status $ys->getSubscriptionStatus($token$subscriber->getUserId());
  750.             if (!$status->IsSubscribed) {
  751.                 $info $ys->createSubscriber($token$idUser11$subscriber->getLogin(), $subscriber->getUserEmail(), $subscriber->getUserFirstName(), $subscriber->getUserLastName());
  752.                 if ($info) {
  753.                     $subscriber->setUrl($info->Url);
  754.                     $subscriber->setLogin($info->Login);
  755.                     $entityManager->persist($subscriber);
  756.                     $entityManager->flush();
  757.                 }
  758.             }
  759.         }
  760.         return $subscriber;
  761.     }
  762.     /**
  763.      * Filter out excluded product IDs from a product collection
  764.      * 
  765.      * @param array $products Array of products to filter
  766.      * @return array Filtered products
  767.      */
  768.     private function filterExcludedProducts($products)
  769.     {
  770.         // Product IDs to exclude
  771.         $excludedProductIds = [17775932525043721078];
  772.         // Filter out products by ID
  773.         $filteredProducts array_filter($products, function ($product) use ($excludedProductIds) {
  774.             $productId = isset($product->Id) ? $product->Id : (isset($product->ProductId) ? $product->ProductId 0);
  775.             return !in_array($productId$excludedProductIds);
  776.         });
  777.         // Re-index array after filtering
  778.         return array_values($filteredProducts);
  779.     }
  780. }