src/Controller/HomeController.php line 62

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ExtTranslationWpTerms;
  4. use App\Entity\WpOptions;
  5. use App\Entity\WpPosts;
  6. use App\Entity\WpTermTaxonomy;
  7. use App\Entity\WpUsermeta;
  8. use App\Service\Payment;
  9. use App\Service\ServiceManager;
  10. use App\Service\ToolsMeta;
  11. use DateTime;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\RequestStack;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. use Twig\Environment;
  22. class HomeController extends AbstractController
  23. {
  24.     private $service_manager;
  25.     private $entityManager;
  26.     private $tools;
  27.     private $twig;
  28.     private $requestStack;
  29.     private $payment;
  30.     public function __construct(
  31.         ServiceManager $service_manager,
  32.         EntityManagerInterface $entityManager,
  33.         Environment $twig,
  34.         RequestStack $requestStack,
  35.         Payment $payment,
  36.         ToolsMeta $tools
  37.     )
  38.     {
  39.         $this->service_manager $service_manager;
  40.         $this->entityManager $entityManager;
  41.         $this->payment $payment;
  42.         $this->twig $twig;
  43.         $this->requestStack $requestStack;
  44.         $this->tools $tools;
  45.     }
  46.     /**
  47.      * @Route("/", name="home")
  48.      */
  49.     public function index()
  50.     {
  51.         return $this->redirectToRoute('index', ['_locale' => 'fr']);
  52.     }
  53.     /**
  54.      * @Route("/{_locale}", name="index", requirements={"_locale": "fr"})
  55.      */
  56.     public function accueil()
  57.     {
  58.         $actualite $this->entityManager->getRepository(WpPosts::class)->findOneBy([
  59.             'postType' => 'marketing_actualite',
  60.             'postStatus' => 'publish'
  61.         ], ['id' => 'DESC']);
  62.         return $this->render('home/index.html.twig', [
  63.             'meta_page' => $this->service_manager->getPageStatique('home'),
  64.             'header' => $this->service_manager->naveMenuItem(10),
  65.             'footer' => $this->service_manager->naveMenuItem(18),
  66.             'blog' => $this->service_manager->getNumberBlog(3),
  67.             'bloc1' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_1'),
  68.             'bloc2' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_2'),
  69.             'bloc3' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_3'),
  70.             'bloc4' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_4'),
  71.             'bloc5' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_5'),
  72.             'bloc6' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_6'),
  73.             'bloc7' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_7'),
  74.             'bloc8' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_8'),
  75.             'bloc9' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_9'),
  76.             'bloc10' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_10'),
  77.             'bloc11' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_11'),
  78.             'bloc12' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_12'),
  79.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube'),
  80.             'slogan_homepage' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('slogan_homepage'),
  81.             'encart_homepage_1' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('encart_homepage_1'),
  82.             'encart_homepage_2' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('encart_homepage_2'),
  83.             'actualite' => $actualite,
  84.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0)
  85.         ]);
  86.     }
  87.     /**
  88.      * @Route("/{_locale}/{idPage}/{id}", name="page_navigation",requirements={"_locale": "fr","idPage": "^((?!votre-projet|chat|envoyez-nous-vos-commentaires|blog|annonces|paiement|utilisateur|sitemap.xml|admin|dashboard|devenir-pro|profil|devis|operations-speciales|promo-et-com|leads-gen|univers-trust|creer-une-experience|operations|annonces|newsletter|souscription).)*$", "_locale": "fr"})
  89.      * @param Request $request
  90.      * @return Response
  91.      */
  92.     public function page_navigation(Request $request)
  93.     {
  94.         $idPage $this->entityManager->getRepository(WpPosts::class)
  95.             ->findOneBy([
  96.                 'postName' => $request->get('idPage'),
  97.                 'postType' => 'nav_menu_item',
  98.             ]);
  99.         $ida $this->entityManager
  100.             ->getRepository(WpPosts::class)
  101.             ->findOneBy([
  102.                 'postName' => $request->get('id'),
  103.                 'postType' => 'nav_menu_item',
  104.             ])
  105.             ->getId();
  106.         $menu $this->service_manager->readPosts($idPage->getId());
  107.         $menuMeta $this->service_manager->readPostMeta(
  108.             $menu->getId(),
  109.             '_menu_item_menu_item_parent'
  110.         );
  111.         if ($menuMeta->getMetaValue() > 0) {
  112.             $sousMenu $this->service_manager->naveMenuItem(
  113.                 $menuMeta->getMetaValue()
  114.             );
  115.         } else {
  116.             $sousMenu $this->service_manager->naveMenuItem($idPage->getId());
  117.         }
  118.         $smenup = array();
  119.         for ($i 0$i sizeof($sousMenu); $i++) {
  120.             $idp $this->service_manager
  121.                 ->readPostMeta(
  122.                     $sousMenu[$i]->getId(),
  123.                     '_menu_item_menu_item_parent'
  124.                 )
  125.                 ->getMetaValue();
  126.             if ($idp == 0) {
  127.                 $smenup[$i] = $sousMenu[$i];
  128.             } else {
  129.                 $sousMenu[$i]->setPostParent($idp);
  130.             }
  131.         }
  132.         $IdContenu $this->service_manager
  133.             ->readPostMeta($ida'_menu_item_object_id')
  134.             ->getMetaValue();
  135.         //Contenu de la page
  136.         $contenu $this->service_manager->readPosts($IdContenu);
  137.         //dd($contenu);
  138.         $meta_desc $this->service_manager->readPostMeta(
  139.             $IdContenu,
  140.             'meta_desc'
  141.         );
  142.         //Menu Parent
  143.         $menuParent $this->service_manager->readPosts($idPage->getId());
  144.         //Image de la page;
  145.         $pageImage $this->service_manager->readPostsViaParentAndPostType(
  146.             'attachment',
  147.             $this->service_manager
  148.                 ->readPostMeta($sousMenu[0]->getId(), '_menu_item_object_id')
  149.                 ->getMetaValue()
  150.         );
  151.         //dd($sousMenu);
  152.         return $this->render('home/content.html.twig', [
  153.             'header' => $this->service_manager->naveMenuItem(10),
  154.             'footer' => $this->service_manager->naveMenuItem(18),
  155.             'sous_menu' => $sousMenu,
  156.             'sous_menu_parent' => $smenup,
  157.             'tsm' => sizeof($sousMenu),
  158.             'tsmp' => sizeof($smenup),
  159.             'menu' => $menu,
  160.             'contenu' => $contenu,
  161.             'meta_desc' => $meta_desc,
  162.             'idPage' => $idPage,
  163.             'id' => $sousMenu[0]->getId(),
  164.             'pageImage' => $pageImage,
  165.             'menuParent' => $menuParent,
  166.             'pageName' => $contenu->getPostTitle(),
  167.             'navigation' => $request->get('id'),
  168.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  169.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube')
  170.         ]);
  171.     }
  172.     /**
  173.      * @Route("/{_locale}/{navigation}", name="site_navigation", requirements={"navigation": "^((?!connexion|login|creer-un-compte|register|votre-projet|contactez-nous|envoyez-nous-vos-commentaires|login_check|logout|confirmation_email|confirm|confirmed|request|reset|lostpassword_confirmation_email|send-email|change-password|blog|annonces|paiement|utilisateur|chat|admin|dashboard|devenir-pro|profil|devis|recherche|photographes|videastes|studio-audio|musiciens|chorales|studio-de-tournage|studio-photo-video|evenementiels|sitemap.xml|operations-speciales|promo-et-com|leads-gen|univers-trust|creer-une-experience|operations|annonces|newsletter|souscription).)*$", "_locale": "fr"})
  174.      * @param Request $request
  175.      * @return RedirectResponse|Response
  176.      */
  177.     public function nos_prestations_page(Request $request)
  178.     {
  179.         if ($request->get('navigation') != '') {
  180.             $menu $this->entityManager
  181.                 ->getRepository(WpPosts::class)
  182.                 ->findOneBy([
  183.                     'postTitle' => ucfirst(
  184.                         str_replace('-'' '$request->get('navigation'))
  185.                     ),
  186.                     'postType' => 'nav_menu_item',
  187.                 ]);
  188.             $menuMeta $this->service_manager->readPostMeta(
  189.                 $menu->getId(),
  190.                 '_menu_item_menu_item_parent'
  191.             );
  192.             if ($menuMeta != null) {
  193.                 $sousMenu $this->service_manager->naveMenuItem(
  194.                     $menuMeta->getMetaValue()
  195.                 );
  196.             } else {
  197.                 $sousMenu $this->entityManager
  198.                     ->getRepository(WpPosts::class)
  199.                     ->findOneBy([
  200.                         'postTitle' => ucfirst(
  201.                             str_replace('-'' '$request->get('navigation'))
  202.                         ),
  203.                     ]);
  204.             }
  205.             $smenup = array();
  206.             for ($i 0$i sizeof($sousMenu); $i++) {
  207.                 $idp $this->service_manager
  208.                     ->readPostMeta(
  209.                         $sousMenu[$i]->getId(),
  210.                         '_menu_item_menu_item_parent'
  211.                     )
  212.                     ->getMetaValue();
  213.                 if ($idp == 0) {
  214.                     $smenup[$i] = $sousMenu[$i];
  215.                 } else {
  216.                     $sousMenu[$i]->setPostParent($idp);
  217.                 }
  218.             }
  219.         }
  220.         // Ma modification Faire tres attention merde
  221.         if ($request->get('navigation') == 'a-propos') {
  222.             return $this->redirectToRoute('page_navigation', ['idPage' => 'a-propos''id' => 'a-propos-de-trust'], 302);
  223.         } elseif ($request->get('navigation') == 'nos-conditions') {
  224.             $IdContenu $this->service_manager
  225.                 ->readPostMeta($menu->getId(), '_menu_item_object_id')
  226.                 ->getMetaValue();
  227.         } else {
  228.             $IdContenu $this->service_manager
  229.                 ->readPostMeta($sousMenu[0]->getId(), '_menu_item_object_id')
  230.                 ->getMetaValue();
  231.         }
  232.         $contenu $this->service_manager->readPosts($IdContenu);
  233.         $meta_desc $this->service_manager->readPostMeta(
  234.             $IdContenu,
  235.             'meta_desc'
  236.         );
  237.         //Menu Parent
  238.         $menuParent $this->entityManager
  239.             ->getRepository(WpPosts::class)
  240.             ->findOneBy(['postName' => $request->get('navigation')]);
  241.         //Image de la page;
  242.         $postTypeImage 'attachment';
  243.         $pageImage $this->service_manager->readPostsViaParentAndPostType(
  244.             $postTypeImage,
  245.             $IdContenu
  246.         );
  247.         return $this->render('home/content.html.twig', [
  248.             'header' => $this->service_manager->naveMenuItem(10),
  249.             'footer' => $this->service_manager->naveMenuItem(18),
  250.             'sous_menu' => $sousMenu,
  251.             'sous_menu_parent' => $smenup,
  252.             'tsm' => sizeof($sousMenu),
  253.             'tsmp' => sizeof($smenup),
  254.             'menu' => $menu,
  255.             'contenu' => $contenu,
  256.             'meta_desc' => $meta_desc,
  257.             'idPage' => $menuParent,
  258.             'id' => $sousMenu[0]->getId(),
  259.             'pageName' => $menuParent->getPostTitle(),
  260.             'pageImage' => $pageImage,
  261.             'menuParent' => $menuParent,
  262.             'navigation' => $request->get('navigation'),
  263.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  264.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube'),
  265.         ]);
  266.     }
  267.     /**
  268.      * @Route("/{_locale}/home/sous_categorie", name="sous_categorie")
  269.      * @param Request $request
  270.      * @return Response
  271.      */
  272.     public function sousCategorie(Request $request)
  273.     {
  274.         return $this->render('admin/sous_categorie.html.twig', [
  275.             'categorie' => $this->service_manager->postCategorie('product_cat'$request->get('id')),
  276.         ]);
  277.     }
  278.     /**
  279.      * @Route("/{_locale}/home/sous_categorie1", name="sous_categorie1")
  280.      */
  281.     public function sousCategorie1(Request $request)
  282.     {
  283.         return $this->render('admin/sous_categorie1.html.twig', [
  284.             'categorie' => $this->service_manager->postCategorie(
  285.                 'product_cat',
  286.                 $request->get('id')
  287.             ),
  288.         ]);
  289.     }
  290.     /**
  291.      * @Route("/{_locale}/recherche", name="recherche")
  292.      * @param Request $request
  293.      * @return JsonResponse
  294.      */
  295.     public function recherche(Request $request)
  296.     {
  297.         return new JsonResponse(
  298.             $this->service_manager->search($request->get('term'))
  299.         );
  300.     }
  301.     /**
  302.      * @Route("/{_locale}/recherche-user", name="recherche-user")
  303.      * @param Request $request
  304.      * @return JsonResponse
  305.      */
  306.     public function recherche_user(Request $request)
  307.     {
  308.         return new JsonResponse($this->service_manager->search_user($request->get('term')));
  309.     }
  310.     //modification de l'abonnĂ©
  311.     /**
  312.      * @Route("/{_locale}/updateProfil", name="updateProfileAbonne", requirements={"_locale": "fr"})
  313.      * @param Request $request
  314.      * @return Response
  315.      */
  316.     public function updateUserData(Request $request)
  317.     {
  318.         $userId $this->getUser()->getId();
  319.         //First Name
  320.         $this->service_manager->updateUserMeta(
  321.             $userId,
  322.             'first_name',
  323.             $request->get('first_name')
  324.         );
  325.         //Last name
  326.         $this->service_manager->updateUserMeta(
  327.             $userId,
  328.             'last_name',
  329.             $request->get('last_name')
  330.         );
  331.         //Birthday
  332.         $this->service_manager->updateUserMeta(
  333.             $userId,
  334.             'bdaytime',
  335.             $request->get('bdaytime')
  336.         );
  337.         //Sexe
  338.         $this->service_manager->updateUserMeta(
  339.             $userId,
  340.             'sexe',
  341.             $request->get('sexe')
  342.         );
  343.         //Birth Place
  344.         $this->service_manager->updateUserMeta(
  345.             $userId,
  346.             'birth_place',
  347.             $request->get('birth_place')
  348.         );
  349.         //Telephone
  350.         $this->service_manager->updateUserMeta(
  351.             $userId,
  352.             'telephone',
  353.             $request->get('telephone')
  354.         );
  355.         // Avatar
  356.         $avatarUrl $this->service_manager->uploadAvatar(
  357.             $userId,
  358.             $request->files->get('avatar'),
  359.             $this->getParameter('avatar_directory')
  360.         );
  361.         if ($avatarUrl) {
  362.             $this->service_manager->updateUserMeta(
  363.                 $userId,
  364.                 'basic_user_avatar',
  365.                 $avatarUrl
  366.             );
  367.             $this->requestStack->getSession()->set('avatar'$avatarUrl);
  368.         }
  369.         //Raison Sociale
  370.         $this->service_manager->updateUserMeta(
  371.             $userId,
  372.             'raison_sociale',
  373.             $request->get('raison_sociale')
  374.         );
  375.         //SIRET
  376.         $this->service_manager->updateUserMeta(
  377.             $userId,
  378.             'siret',
  379.             $request->get('siret')
  380.         );
  381.         //TVA
  382.         $this->service_manager->updateUserMeta(
  383.             $userId,
  384.             'tva',
  385.             $request->get('tva')
  386.         );
  387.         //TITRE
  388.         $this->service_manager->updateUserMeta(
  389.             $userId,
  390.             'titre',
  391.             $request->get('titre')
  392.         );
  393.         //CompĂ©tences
  394.         if ($request->get('competence')) {
  395.             $this->service_manager->updateUserMeta(
  396.                 $userId,
  397.                 'competence',
  398.                 implode(
  399.                     ',',
  400.                     array_column(
  401.                         json_decode($request->get('competence')),
  402.                         'value'
  403.                     )
  404.                 )
  405.             );
  406.         }
  407.         //region
  408.         $this->service_manager->updateUserMeta(
  409.             $userId,
  410.             'region',
  411.             $request->get('region')
  412.         );
  413.         return $this->render('admin/resultat.html.twig', [
  414.             'result' => 1,
  415.         ]);
  416.     }
  417.     public function getCategoryFromAnnounce($annonce$locale null)
  418.     {
  419.         $x 0;
  420.         $tempType null;
  421.         $categorie $this->service_manager->getCategoryFromAnnounce($annonce);
  422.         //dd($locale);
  423.         if (count($categorie) > 0) {
  424.             $cat $this->entityManager->getRepository(ExtTranslationWpTerms::class)
  425.                 ->findOneBy(['foreign_key' => $categorie[0]['termId'], 'field' => 'name''locale' => $locale]);
  426.             if ($cat) {
  427.                 $cat $cat->getContent();
  428.             }
  429.             //dd($cat);
  430.             $parentId $categorie[0]['parent'];
  431.             $tempType '';
  432.             while ($parentId != 0) {
  433.                 $temp $this->entityManager->getRepository(WpTermTaxonomy::class)->findOneByTermTaxonomyId($parentId);
  434.                 if ($temp) {
  435.                     $tempType $temp->getTaxonomy();
  436.                 }
  437.                 if ($temp && $parentId != 0) {
  438.                     $tempTerm $this->entityManager->getRepository(ExtTranslationWpTerms::class)
  439.                         ->findOneBy(['foreign_key' => $temp->getTermId(), 'field' => 'name''locale' => $locale]);
  440.                     if ($tempTerm) {
  441.                         $cat $tempTerm->getContent() . ' | ' $cat;
  442.                     }
  443.                     $parentId $temp->getParent();
  444.                 } elseif ($parentId == && $temp) {
  445.                     $cat $temp->getDescription() . ' | ' $cat;
  446.                 } elseif ($tempType 'product_cat') {
  447.                     $cat 'Services' ' | ' $cat;
  448.                 }
  449.                 $x++;
  450.             }
  451.             return new Response($cat);
  452.         } else {
  453.             return new Response('Pas de Categorie');
  454.         }
  455.     }
  456.     public function getAnnounceSubCategoryData($announceId)
  457.     {
  458.         $detailsAnnounce $this->service_manager->readPartialAnnonceData($announceId);
  459.         if ($detailsAnnounce) {
  460.             return new Response($detailsAnnounce['sousCategorie']);
  461.         } else {
  462.             return new Response('');
  463.         }
  464.     }
  465.     public function getAnnounceCategoryData($announceId)
  466.     {
  467.         $detailsAnnounce $this->service_manager->readPartialAnnonceData($announceId);
  468.         if ($detailsAnnounce) {
  469.             return new Response($detailsAnnounce['categorieParent']);
  470.         } else {
  471.             return new Response('');
  472.         }
  473.     }
  474.     public function getLoginRegisterImage($code)
  475.     {
  476.         $page_background_image $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName($code);
  477.         if ($page_background_image) {
  478.             return new Response($page_background_image->getOptionValue());
  479.         } else {
  480.             return new Response('');
  481.         }
  482.     }
  483. }