src/Controller/DefaultController.php line 214

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AdapterContent;
  4. use App\Entity\Category;
  5. use App\Entity\Company;
  6. use App\Entity\GaeaUser;
  7. use App\Entity\GetUser;
  8. use App\Entity\Langue;
  9. use App\Entity\Product;
  10. use App\Repository\CompanyRepository;
  11. use JMS\Serializer\SerializerBuilder;
  12. use JMS\Serializer\SerializerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Bundle;
  17. use Symfony\Bundle\FrameworkBundle\Controller;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use App\Entity\User;
  20. use App\Form\UserType;
  21. use Cocur\Slugify\Slugify;
  22. use Symfony\Component\HttpFoundation\JsonResponse;
  23. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  24. use Doctrine\Common\Collections\ArrayCollection;
  25. use Symfony\Contracts\HttpClient\HttpClientInterface;
  26. use App\Entity\NewsLetterUser;
  27. use App\Entity\WebContent;
  28. use App\Form\NewsletterType;
  29. use App\Repository\CategoryRepository;
  30. use App\Repository\NewsLetterUserRepository;
  31. use App\Service\TraduireContenu;
  32. use Doctrine\ORM\EntityManagerInterface as EntityManager;
  33. use Doctrine\Persistence\ManagerRegistry;
  34. use Symfony\Component\HttpFoundation\RedirectResponse;
  35. use Symfony\Component\HttpFoundation\Session\Session;
  36. use Symfony\Component\HttpKernel\Event\RequestEvent;
  37. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  38. use Symfony\Component\Serializer\Encoder\XmlEncoder;
  39. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  40. use Symfony\Component\Serializer\Serializer;
  41. use Symfony\Contracts\Translation\TranslatorInterface;
  42. class DefaultController extends AbstractController
  43. {
  44.     private $client;
  45.     private $traduireContenu;
  46.     private $categoryRepository;
  47.     public function __construct(HttpClientInterface $clientTraduireContenu $traduireContenuManagerRegistry $managerCategoryRepository $categoryRepository)
  48.     {
  49.         $this->manager $manager;
  50.         $this->client $client;
  51.         $this->traduireContenu $traduireContenu;
  52.         $this->categoryRepository $categoryRepository;
  53.     }
  54.     /**
  55.      * @Route("/{_locale<en|fr|de|it|es>}/", name="homepage")
  56.      */
  57.     public function indexAction(Request $request)
  58.     {
  59.         $session $request->getSession();
  60.         $langue $session->get("_locale");
  61.         return $this->redirectToRoute('homepageAll', ['_locale' => $langue]);
  62.         /*return $this->render('default/home_entreprise.html.twig', [
  63.             'role'=>$role,
  64.             'categories' => $this->getAllCategories($langue)
  65.         ]);*/
  66.     }
  67.     /**
  68.      * @Route("/{_locale<en|fr|de|it|es>}/COMPANY", name="homepageAll")
  69.      */
  70.     public function indexCompany(Request $request)
  71.     {
  72.         $session $request->getSession();
  73.         $langue $session->get("_locale");
  74.         return $this->render('default/home_entreprise.html.twig', [
  75.             'categories' => $this->getAllCategories($langue)
  76.         ]);
  77.     }
  78.     public function getAllCategories($langue)
  79.     {
  80.         $categories $this->categoryRepository->findBy([
  81.             "unicity" => 1
  82.         ]);
  83.         $tabtraduit = [];
  84.         foreach ($categories as $category) {
  85.             $trad $category;
  86.             if ($langue != "fr") {
  87.                 $trad $this->traduireContenu->retourTrad($category$langue);
  88.             }
  89.             array_push($tabtraduit$trad);
  90.         }
  91.         return $tabtraduit;
  92.     }
  93.     /**
  94.      * @Route("/getAllCategoriees", name="getCategoriesall",methods={"GET"})
  95.      */
  96.     public function getAllCatego(Request $request): Response
  97.     {
  98.         error_reporting(E_ERROR E_PARSE);
  99.         $encoders = [new XmlEncoder(), new JsonEncoder()];
  100.         $normalizers = [new ObjectNormalizer()];
  101.         $serializer = new Serializer($normalizers$encoders);
  102.         $session $request->getSession();
  103.         $langue $session->get("_locale");
  104.         $response = new Response();
  105.         $response->headers->set('Content-Type''application/json');
  106.         $response->headers->set('Access-Control-Allow-Origin''*');
  107.         $categories $this->categoryRepository->findBy([
  108.             "unicity" => 1
  109.         ]);
  110.         $tabtcategories = [];
  111.         foreach ($categories as $category) {
  112.             $cat $category;
  113.             if ($langue != "fr") {
  114.                 $cat $this->traduireContenu->retourTrad($category$langue);
  115.             }
  116.             $cat $serializer->normalize($catnull, ['groups' => ['champ_categories']]);
  117.             array_push($tabtcategories$cat);
  118.         }
  119.         $json json_encode($tabtcategories);
  120.         $response->setContent($json);
  121.         return $response;
  122.     }
  123.     /**
  124.      * @Route("/{_locale<en|fr|de|it|es>}/", name="home_inscriptionNewsletter", methods={"POST"})
  125.      *
  126.      */
  127.     public function inscription(Request $requestEntityManager $emSerializerInterface $serializer)
  128.     {
  129.         $contenu $request->getContent();
  130.         $contenuDecode json_decode($contenutrue);
  131.         $nom $contenuDecode['nom'];
  132.         $prenom $contenuDecode['prenom'];
  133.         $ville $contenuDecode['ville'];
  134.         $mail $contenuDecode['mail'];
  135.         $code_postal $contenuDecode['code_postal'];
  136.         $newsletter = new NewsLetterUser();
  137.         $newsletter->setNom($nom);
  138.         $newsletter->setPrenom($prenom);
  139.         $newsletter->setVille($ville);
  140.         $newsletter->setMail($mail);
  141.         $newsletter->setCodePostal($code_postal);
  142.         $em $this->getDoctrine()->getManager();
  143.         $em->persist($newsletter);
  144.         $em->flush();
  145.         return $this->json(['status' => 200'message' => "Ok"]);
  146.     }
  147.     /**
  148.      * @Route("/{_locale<en|fr|de|it|es>}/mentions-legales/", name="mentions-legales")
  149.      */
  150.     public function mentionsLegales(Request $request): Response
  151.     {
  152.         return $this->render('default/mentions_legales.html.twig');
  153.     }
  154.     /**
  155.      * @Route("/{_locale<en|fr|de|it|es>}/404/", name="404")
  156.      */
  157.     public function page404(): Response
  158.     {
  159.         return $this->render('default/page_404.html.twig');
  160.     }
  161.     /**
  162.      * @Route("/{_locale<en|fr|de|it|es>}/404/town", name="404town")
  163.      */
  164.     public function page404town(): Response
  165.     {
  166.         return $this->render('default/commune_404.html.twig');
  167.     }
  168.     /**
  169.      * @Route("/{_locale<en|fr|de|it|es>}/404/individu", name="404individu")
  170.      */
  171.     public function page404individu(): Response
  172.     {
  173.         return $this->render('default/individu_404.html.twig');
  174.     }
  175.     /**
  176.      * @Route("/recuperer_langue",name="recuperation_langue",methods={"GET"})
  177.      */
  178.     function recuperation_langue(Request $request)
  179.     {
  180.         $session $request->getSession();
  181.         $locale_actuel $session->get("_locale");
  182.         // dump($locale_actuel);
  183.         return new JsonResponse(array('langue' => $locale_actuel));
  184.     }
  185.     /**
  186.      * @Route("/{path}",priority=-1, defaults={"path": null}, requirements={"path"=".+"})
  187.      */
  188.     function session_langue_navigateur(Request $request$path)
  189.     {
  190.         //Signification des langues préférées
  191.         // "fr": Français "en":Anglais "de": Allemand "it": Italien "es":Espagnol
  192.         $langues = ["fr""en""de""it""es"];
  193.         return $this->redirect($this->traduireContenu->nouveau_chemin($request$path$langues));
  194.     }
  195.     /**
  196.      * @Route("/{_locale<en|fr|de|it|es>}/tarifs/{role}", name="tarifsEtNouveautés")
  197.      */
  198.     public function tarfisEtNouveautes(): Response
  199.     {
  200.         return $this->render('default/nouveautes.html.twig');
  201.     }
  202. }