src/Controller/DefaultController.php line 81

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 $client,TraduireContenu $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.         $categories $this->categoryRepository->findBy([
  80.             "unicity"=>1
  81.         ]);
  82.         $tabtraduit = [];
  83.         foreach($categories as $category){
  84.             $trad $category;
  85.             if($langue !="fr"){
  86.                 $trad $this->traduireContenu->retourTrad($category,$langue);
  87.             }
  88.             array_push($tabtraduit,$trad);
  89.         }
  90.         return $tabtraduit;
  91.     }
  92.     /**
  93.      * @Route("/getAllCategoriees", name="getCategoriesall",methods={"GET"})
  94.      */
  95.     public function getAllCatego(Request $request): Response
  96.     {
  97.         error_reporting(E_ERROR E_PARSE);
  98.         $encoders = [new XmlEncoder(), new JsonEncoder()];
  99.     $normalizers = [new ObjectNormalizer()];
  100.         $serializer = new Serializer($normalizers$encoders);
  101.         $session=$request->getSession();
  102.         $langue=$session->get("_locale");
  103.         $response = new Response();
  104.         $response->headers->set('Content-Type''application/json');
  105.         $response->headers->set('Access-Control-Allow-Origin''*');
  106.         $categories $this->categoryRepository->findBy([
  107.             "unicity"=>1
  108.         ]);
  109.         $tabtcategories = [];
  110.         foreach($categories as $category){
  111.             $cat $category;
  112.             if($langue !="fr"){
  113.                 $cat $this->traduireContenu->retourTrad($category,$langue);
  114.             }
  115.             $cat=$serializer->normalize($cat,null,['groups' => ['champ_categories']]);
  116.             
  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 inscriptionRequest $requestEntityManager $emSerializerInterface $serializer)
  128.     {
  129.         $contenu $request->getContent();
  130.         $contenuDecode json_decode($contenu,true);
  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.         $session $request->getSession();
  180.         $locale_actuel=$session->get("_locale");
  181.         // dump($locale_actuel);
  182.         return new JsonResponse(array('langue' => $locale_actuel));
  183.     }
  184.     /**
  185.      * @Route("/{path}",priority=-1, defaults={"path": null}, requirements={"path"=".+"})
  186.      */
  187.     function session_langue_navigateur(Request $request$path){
  188.         //Signification des langues préférées
  189.         // "fr": Français "en":Anglais "de": Allemand "it": Italien "es":Espagnol
  190.         $langues=["fr","en","de","it","es"];
  191.         return $this->redirect($this->traduireContenu->nouveau_chemin($request$path,$langues));
  192.     }
  193.     /**
  194.      * @Route("/{_locale<en|fr|de|it|es>}/tarifs/{role}", name="tarifsEtNouveautés")
  195.      */
  196.     public function tarfisEtNouveautes(): Response
  197.     {
  198.         return $this->render('default/nouveautes.html.twig');
  199.     }
  200. }