src/Controller/DefautController.php line 63

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Contact;
  4. use App\Entity\Notice;
  5. use App\Entity\Service;
  6. use App\Entity\Setting;
  7. use App\Entity\Subscription;
  8. use App\Form\ContactType;
  9. use App\Service\MailerService;
  10. use App\Twig\Extension\AppExtension;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\RequestStack;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  18. use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  21. use Symfony\Contracts\Translation\TranslatorInterface;
  22. use Twig\Environment;
  23. class DefautController extends AbstractController
  24. {
  25.     private $em;
  26.     private $mailerService;
  27.     private $requestStack;
  28.     private $twig;
  29.     public function __construct(EntityManagerInterface $emMailerService $mailerService, private UrlGeneratorInterface $router,
  30.                                 RequestStack $requestStack,Environment $twig)
  31.     {
  32.         $this->em $em;
  33.         $this->mailerService $mailerService;
  34.         $this->requestStack=$requestStack;
  35.         $this->twig=$twig;
  36.     }
  37.     #[Route('/'name'app_defaut')]
  38.     public function index(SessionInterface $session)
  39.     {
  40.         $response = new Response(); // A supprimer apres fin dev
  41.         $services $this->em->getRepository(Service::class)
  42.             ->findBy([], ['id' => "ASC"]);
  43.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  44.         $setting $this->em->getRepository(Setting::class)->findOneBy([], ['id' => 'DESC']);
  45.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  46.         return $this->render('defaut/index.html.twig', [
  47.             'services' => $services,
  48.             'cartProduct' => $cartProduct,
  49.             'setting'=> $setting,
  50.         ]);
  51.     }
  52.     #[Route('/service/{slug}'name'app_get_service')]
  53.     public function getServiceBySlug(SessionInterface $sessionstring $slug)
  54.     {
  55.         $cleanSlug $this->removeDashAndDigitsFromEnd($slug); // Appel de la fonction removeDashAndDigitsFromEnd
  56.         $response = new Response(); // A supprimer apres fin dev
  57.         $services $this->em->getRepository(Service::class)
  58.             ->findBy([], ['id' => "ASC"]);
  59.         $service_category $this->em->getRepository(Service::class)
  60.             ->findBy(['social_network' => $slug]);
  61.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  62.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  63.         return $this->render('defaut/categories.html.twig', [
  64.             'categorie' => $slug,
  65.             'services' => $services,
  66.             'cartProduct' => $cartProduct,
  67.             'service_category' => $service_category,
  68.         ]);
  69.     }
  70.     #[Route('/category/{service}/{slug}'name'app_get_category')]
  71.     public function getCategoryBySlug(SessionInterface $sessionstring $servicestring $slug)
  72.     {
  73.         $response = new Response(); // A supprimer apres fin dev
  74.         $categories $this->em->getRepository(Service::class)->findBy(
  75.             ['social_network' => $service'category' => $slug]
  76.         );
  77.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  78.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  79.         return $this->render('defaut/products.html.twig', [
  80.             'service' => $service,
  81.             'category' => $slug,
  82.             'categories' => $categories,
  83.             'cartProduct' => $cartProduct,
  84.         ]);
  85.     }
  86.     #[Route('/product/{service}/{category}/{slug}'name'app_get_product')]
  87.     public function getProductBySlug(SessionInterface $sessionstring $slug,string $category,string $service,Request $request)
  88.     {
  89.         $response = new Response(); // A supprimer apres fin dev
  90.         $detail_product $this->em->getRepository(Service::class)->findBy(
  91.             ['slug' => $service'slug_category' => $category,'slug_quality' => $slug,'']
  92.         );
  93.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  94.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  95.         return $this->render('defaut/details_product.html.twig', [
  96.             'products' => $detail_product,
  97.             'cartProduct' => $cartProduct,
  98.         ]);
  99.     }
  100.     #[Route('/access_denied'name'app_access_denied')]
  101.     public function accessDenied(SessionInterface $session)
  102.     {
  103.         $response = new Response(); // A supprimer apres fin dev
  104.         $services $this->em->getRepository(Service::class)
  105.             ->findBy([], ['id' => "ASC"]);
  106.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  107.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  108.         return $this->render('pages/access-denied.html.twig', [
  109.             'services' => $services,
  110.             'cartProduct' => $cartProduct,
  111.         ]);
  112.     }
  113.     #[Route('/socialnetworks'name'app_get_socialnetworks')]
  114.     public function getSocialnetworks(SessionInterface $session)
  115.     {
  116.         $response = new Response(); // A supprimer apres fin dev
  117.         $services $this->em->getRepository(Service::class)
  118.             ->findBy([], ['id' => "ASC"]);
  119.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  120.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  121.         return $this->render('defaut/services.html.twig', [
  122.             'services' => $services,
  123.             'cartProduct' => $cartProduct,
  124.             'service_category' => $services,
  125.         ]);
  126.     }
  127.     #[Route('/avis'name'app_get_notice')]
  128.     public function getNotice(SessionInterface $session)
  129.     {
  130.         $response = new Response(); // A supprimer apres fin dev
  131.         $services $this->em->getRepository(Service::class)
  132.             ->findBy([], ['id' => "ASC"]);
  133.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  134.         $notices $this->em->getRepository(Notice::class)
  135.             ->findBy([], ['id' => "ASC"]);
  136.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  137.         return $this->render('defaut/notice.html.twig', [
  138.             'services' => $services,
  139.             'cartProduct' => $cartProduct,
  140.             'service_category' => $services,
  141.             'notices' => $notices,
  142.         ]);
  143.     }
  144.     #[Route('/contact'name'app_get_contact')]
  145.     public function contact(Request $requeteSessionInterface $sessionTranslatorInterface $translator)
  146.     {
  147.         $erreurs false;
  148.         $contact = new Contact();
  149.         $formulaire $this->createForm(ContactType::class);
  150.         $formulaire->handleRequest($requete);
  151.         if ($formulaire->isSubmitted()) {//&& $formulaire->isValid()) {
  152.             if ($formulaire->isValid()) {
  153.                 $token $formulaire->getData();
  154.                 $ch curl_init();
  155.                 curl_setopt($chCURLOPT_URL"https://www.google.com/recaptcha/api/siteverify");
  156.                 curl_setopt($chCURLOPT_POST1);
  157.                 curl_setopt($chCURLOPT_POSTFIELDShttp_build_query(array('secret' => '6LcE0wgkAAAAAFszLC6GFSE0lKh-g1zeDct-pkvT''response' => $token)));
  158.                 curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  159.                 $response curl_exec($ch);
  160.                 curl_close($ch);
  161.                 $arrResponse json_decode($responsetrue);
  162.                 $contact $formulaire->getData();
  163.                 $this->em->persist($contact);
  164.                 $this->em->flush();
  165.                 if ($this->mailerService->envoyerContact($contact) !== 0) {
  166.                     $this->mailerService->envoyerAccuse($contact);
  167.                     $this->addFlash('success''Demande envoyée');
  168.                 } else {
  169.                     $this->addFlash('danger'"Erreur lors de l'envoie de lors de l'envoi de la demande");
  170.                 }
  171.                 return $this->redirect(
  172.                     $this->router->generate('app_get_contact')
  173.                 );
  174.             }
  175.         }
  176.         $response = new Response(); // A supprimer apres fin dev
  177.         $services $this->em->getRepository(Service::class)
  178.             ->findBy([], ['id' => "ASC"]);
  179.         $cartProduct $this->twig->getExtension(AppExtension::class)->getCartProduct($session); // Appelez la fonction via l'extension Twig
  180.         $response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER'true'); // A supprimer apres fin dev
  181.         return $this->render('defaut/contact.html.twig', [
  182.             'services' => $services,
  183.             'cartProduct' => $cartProduct,
  184.             'formulaire' => $formulaire->createView(),
  185.             'erreurs' => $erreurs
  186.         ]);
  187.     }
  188.     #[Route('/pdf/{id}'name'app_document_transaction'methods: ['GET'])]
  189.     public function envelopper(?Subscription $subscription)
  190.     {
  191.         return new BinaryFileResponse(
  192.             '../prive/document/transaction/' \strval($subscription->getReference()) . '.pdf'
  193.         );
  194.     }
  195.      public function removeDashAndDigitsFromEnd($str) {
  196.         $pattern '/-(\d+)$/'// Pattern pour correspondre au tiret suivi d'un ou plusieurs chiffres à la fin
  197.         $replacement ''// Remplacement par une chaîne vide
  198.         return preg_replace($pattern$replacement$str);
  199.     }
  200. }