src/Controller/AnnoncesController.php line 566

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Entity\WpPosts;
  5. use App\Entity\WpPostmeta;
  6. use App\Entity\WpOptions;
  7. use App\Service\Panier;
  8. use App\Service\ToolsMeta;
  9. use App\Service\ServiceManager;
  10. use App\Service\DataAccessLayer\Annonces;
  11. use DateTime;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use phpDocumentor\Reflection\DocBlock\Tags\Example;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\RequestStack;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use function Symfony\Bundle\MakerBundle\Test\doesClassExistInApp;
  21. /**
  22.  * @Route("", requirements={"_locale": "fr"}, name="annonces_")
  23.  */
  24. class AnnoncesController extends AbstractController
  25. {
  26.     private $entityManager;
  27.     private $service_manager;
  28.     private $annonces_access_layer;
  29.     private $tools;
  30.     private $requestStack;
  31.     private $panier;
  32.     public function __construct(
  33.         ServiceManager $service_manager,
  34.         Annonces $annonces_access_layer,
  35.         EntityManagerInterface $entityManager,
  36.         ToolsMeta $tools,
  37.         RequestStack $requestStack,
  38.         Panier $panier
  39.     )
  40.     {
  41.         $this->service_manager $service_manager;
  42.         $this->entityManager $entityManager;
  43.         $this->annonces_access_layer $annonces_access_layer;
  44.         $this->tools $tools;
  45.         $this->requestStack $requestStack;
  46.         $this->panier $panier;
  47.     }
  48.     /**
  49.      * @Route("/{_locale}/annonces/liste", name="listeAnnonces", requirements={"_locale": "fr"})
  50.      * @param Request $request
  51.      * @return Response
  52.      */
  53.     public function liste(Request $request)
  54.     {
  55.         $code_postal_ville $request->get('code_postal_ville');
  56.         $pages 0;
  57.         $offset 0;
  58.         $start 0;
  59.         $end 0;
  60.         $nombreDeLignes 0;
  61.         $limit 9;
  62.         $page 1;
  63.         $p_empty_search_text null;
  64.         if ($request->get('noPage')) {
  65.             $page $request->get('noPage');
  66.         }
  67.         if (!$request->get('code_postal_ville')) {
  68.             $code_postal_ville '';
  69.         }
  70.         $listeAnnonces = [];
  71.         $text_wishlist null;
  72.         if ($this->getUser()) {
  73.             $text_wishlist implode(','$this->service_manager->readListUserMeta($this->getUser()->getId(), 'annonce_wishlist'));
  74.         }
  75.         if ($request->get('type_prestation') == '' && $request->get('services_proposes') == '') {
  76.             $listeAnnonces = [];
  77.         } elseif ($request->get('type_prestation') && $request->get('services_proposes')) {
  78.             $nombreDeLignes $this->annonces_access_layer->readAllAnnoncesforAjaxSearchCount($request->get('services_proposes'), $request->get('code_postal_ville'));
  79.             if ($nombreDeLignes 0) {
  80.                 $pages ceil($nombreDeLignes $limit);
  81.             }
  82.             $offset = ($page 1) * $limit;
  83.             $start $offset 1;
  84.             $end min(($offset $limit), $nombreDeLignes);
  85.             $listeAnnonces $this->annonces_access_layer
  86.                 ->readAllAnnoncesforAjaxSearchPaginate(
  87.                     $request->get('services_proposes'),
  88.                     $request->get('code_postal_ville'),
  89.                     $page,
  90.                     $pages,
  91.                     $nombreDeLignes,
  92.                     $offset,
  93.                     $start,
  94.                     $end
  95.                 );
  96.             //dd($listeAnnonces);
  97.         } else {
  98.             if ($request->get('type_prestation')) {
  99.                 $nombreDeLignes $this->annonces_access_layer->readAllAnnoncesParentforAjaxSearchCount($request->get('type_prestation'), $request->get('code_postal_ville'));
  100.                 if ($nombreDeLignes 0) {
  101.                     $pages ceil($nombreDeLignes $limit);
  102.                 }
  103.                 $offset = ($page 1) * $limit;
  104.                 $start $offset 1;
  105.                 $end min(($offset $limit), $nombreDeLignes);
  106.                 $listeAnnonces $this->annonces_access_layer
  107.                     ->readAllAnnoncesParentforAjaxSearchPaginate(
  108.                         $request->get('type_prestation'),
  109.                         $request->get('code_postal_ville'),
  110.                         $page,
  111.                         $pages,
  112.                         $nombreDeLignes,
  113.                         $offset,
  114.                         $start,
  115.                         $end
  116.                     );
  117.             }
  118.         }
  119.         $sous_categories $this->service_manager->postCategorieWithMultilangByName('product_cat'$request->get('type_prestation'));
  120.         if (sizeof($listeAnnonces) == 0) {
  121.             $listeAnnonces $this->annonces_access_layer->readAllAnnoncesParentforAjaxSearchPaginate(
  122.                 'produits',
  123.                 '',
  124.                 $page,
  125.                 $pages,
  126.                 $nombreDeLignes,
  127.                 $offset,
  128.                 $start,
  129.                 $end
  130.             );
  131.             $p_empty_search_text $this->entityManager->getRepository(WpPosts::class)->findOneByPostType('p_empty_search_text');
  132.         }
  133.         return $this->render('annonces/listeResultat.html.twig', [
  134.             'header' => $this->service_manager->naveMenuItem(10),
  135.             'footer' => $this->service_manager->naveMenuItem(18),
  136.             'listeAnnonces' => $listeAnnonces,
  137.             'param1' => $request->get('sous_categorie'),
  138.             'villeA' => $request->get('villeA'),
  139.             'sous_categories' => $sous_categories,
  140.             'type_prestation' => $request->get('type_prestation'),
  141.             'services_proposes' => $request->get('services_proposes'),
  142.             'code_postal_ville' => $request->get('code_postal_ville'),
  143.             'p_empty_search_text' => $p_empty_search_text,
  144.             'noPage' => $page,
  145.             'pages' => $pages,
  146.             'offset' => $offset,
  147.             'start' => $start,
  148.             'end' => $end,
  149.             'text_wishlist' => $text_wishlist,
  150.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  151.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube'),
  152.             'nom_commercial' => $request->get('nom_commercial'null)
  153.         ]);
  154.     }
  155.     /**
  156.      * @Route("/{_locale}/annonces/commercial/liste", name="listeAnnoncesCommercial", requirements={"_locale": "fr"})
  157.      * @param Request $request
  158.      * @return Response
  159.      */
  160.     public function listeAnnoncesCommercial(Request $request)
  161.     {
  162.         $nomCommercial $request->get('nom_commercial'null);
  163.         $pages 0$offset 0;
  164.         $start 0$end 0$nombreDeLignes 0;
  165.         $limit 9$page 1$p_empty_search_text null;
  166.         if ($request->get('noPage')) {
  167.             $page $request->get('noPage');
  168.         }
  169.         $listeAnnonces = []; $text_wishlist null;
  170.         if ($this->getUser()) {
  171.             $text_wishlist implode(','$this->service_manager->readListUserMeta($this->getUser()->getId(), 'annonce_wishlist'));
  172.         }
  173.         if ($request->get('nom_commercial')){
  174.             $nombreDeLignes $this->annonces_access_layer->readAllAnnoncesOfUserCount($request->get('id_commercial'));
  175.             if ($nombreDeLignes 0) {
  176.                 $pages ceil($nombreDeLignes $limit);
  177.             }
  178.             $offset = ($page 1) * $limit;
  179.             $start $offset 1;
  180.             $end min(($offset $limit), $nombreDeLignes);
  181.             $listeAnnonces $this->annonces_access_layer
  182.                 ->readAllAnnoncesOfUserPaginate(
  183.                     $request->get('id_commercial'),
  184.                     $page,
  185.                     $pages,
  186.                     $nombreDeLignes,
  187.                     $offset,
  188.                     $start,
  189.                     $end
  190.                 );
  191.             //dd($listeAnnonces);
  192.         }
  193.         $sous_categories $this->service_manager->postCategorieWithMultilangByName('product_cat'$request->get('type_prestation'));
  194.         $p_empty_search_text $this->entityManager->getRepository(WpPosts::class)->findOneBy(array('postType'=>'empty_nom_commercial'), array('id' => 'DESC'));
  195.         return $this->render('annonces/listeResultat.html.twig', [
  196.             'header' => $this->service_manager->naveMenuItem(10),
  197.             'footer' => $this->service_manager->naveMenuItem(18),
  198.             'listeAnnonces' => $listeAnnonces,
  199.             'param1' => $request->get('sous_categorie'),
  200.             'villeA' => $request->get('villeA'),
  201.             'sous_categories' => $sous_categories,
  202.             'type_prestation' => $request->get('type_prestation'),
  203.             'services_proposes' => $request->get('services_proposes'),
  204.             'code_postal_ville' => $request->get('code_postal_ville'),
  205.             'p_empty_search_text' => $p_empty_search_text,
  206.             'noPage' => $page,
  207.             'pages' => $pages,
  208.             'offset' => $offset,
  209.             'start' => $start,
  210.             'end' => $end,
  211.             'text_wishlist' => $text_wishlist,
  212.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  213.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube'),
  214.             'nom_commercial' => $request->get('nom_commercial'null),
  215.             'id_commercial' => $request->get('id_commercial'null)
  216.         ]);
  217.     }
  218.     /**
  219.      * @Route("/get/sous-categorie/xhr/{_locale}", name="get_sous_categories_xhr", requirements={"_locale": "fr"})
  220.      * @param Request $request
  221.      * @return JsonResponse
  222.      */
  223.     public function get_sous_categories_xhr(Request $request)
  224.     {
  225.         $sous_categories = [];
  226.         if ($request->get('type_prestation')) {
  227.             $sous_categories $this->service_manager->postCategorieWithMultilangByName(
  228.                 'product_cat',
  229.                 $request->get('type_prestation')
  230.             );
  231.         }
  232.         return new JsonResponse(['sous_categories' => $sous_categories]);
  233.     }
  234.     /**
  235.      * @Route("/filtre/recherche/xhr/{_locale}", name="filtre_recherche_xhr", requirements={"_locale": "fr"})
  236.      * @param Request $request
  237.      * @return JsonResponse
  238.      */
  239.     public function filtre_recherche_xhr(Request $request)
  240.     {
  241.         $pages 0;
  242.         $offset 0;
  243.         $start 0;
  244.         $end 0;
  245.         $nombreDeLignes 0;
  246.         $limit 9;
  247.         $page 1;
  248.         $p_empty_search_text null;
  249.         if ($request->get('noPage')) {
  250.             $page $request->get('noPage');
  251.         }
  252.         $listeAnnonces = [];
  253.         if ($request->get('type_prestation') == '' && $request->get('services_proposes') == '') {
  254.             $listeAnnonces = [];
  255.         }
  256.         $text_wishlist null;
  257.         if ($this->getUser()) {
  258.             $text_wishlist implode(','$this->service_manager->readListUserMeta($this->getUser()->getId(), 'annonce_wishlist'));
  259.         }
  260.         
  261.         if ($request->get('type_prestation') != '' && $request->get('services_proposes') != '') {
  262.             $nombreDeLignes $this->annonces_access_layer->readAllAnnoncesforAjaxSearchCount($request->get('services_proposes'), $request->get('code_postal_ville'));
  263.             if ($nombreDeLignes 0) {
  264.                 $pages ceil($nombreDeLignes $limit);
  265.             }
  266.             $offset = ($page 1) * $limit;
  267.             $start $offset 1;
  268.             $end min(($offset $limit), $nombreDeLignes);
  269.             $listeAnnonces $this->annonces_access_layer
  270.                 ->readAllAnnoncesforAjaxSearchPaginate(
  271.                     $request->get('services_proposes'),
  272.                     $request->get('code_postal_ville'),
  273.                     $page,
  274.                     $pages,
  275.                     $nombreDeLignes,
  276.                     $offset,
  277.                     $start,
  278.                     $end
  279.                 );
  280.             //dd($listeAnnonces);
  281.         } elseif ($request->get('type_prestation') != '' && $request->get('services_proposes') == '') {
  282.             $nombreDeLignes $this->annonces_access_layer->readAllAnnoncesParentforAjaxSearchCount($request->get('type_prestation'), $request->get('code_postal_ville'));
  283.             if ($nombreDeLignes 0) {
  284.                 $pages ceil($nombreDeLignes $limit);
  285.             }
  286.             $offset = ($page 1) * $limit;
  287.             $start $offset 1;
  288.             $end min(($offset $limit), $nombreDeLignes);
  289.             $listeAnnonces $this->annonces_access_layer
  290.                 ->readAllAnnoncesParentforAjaxSearchPaginate(
  291.                     $request->get('type_prestation'),
  292.                     $request->get('code_postal_ville'),
  293.                     $page,
  294.                     $pages,
  295.                     $nombreDeLignes,
  296.                     $offset,
  297.                     $start,
  298.                     $end
  299.                 );
  300.         }
  301.         $sous_categories $this->service_manager->postCategorieWithMultilangByName('product_cat'$request->get('type_prestation'));
  302.         if (sizeof($listeAnnonces) == 0) {
  303.             $listeAnnonces $this->annonces_access_layer->readAllAnnoncesParentforAjaxSearchPaginate(
  304.                 'produits',
  305.                 '',
  306.                 $page,
  307.                 $pages,
  308.                 $nombreDeLignes,
  309.                 $offset,
  310.                 $start,
  311.                 $end
  312.             );
  313.             $p_empty_search_text $this->entityManager->getRepository(WpPosts::class)->findOneByPostType('p_empty_search_text');
  314.         }
  315.         //dd($listeAnnonces);
  316.         $html $this->renderView('annonces/liste_resultat_content.html.twig', [
  317.             'header' => $this->service_manager->naveMenuItem(10),
  318.             'footer' => $this->service_manager->naveMenuItem(18),
  319.             'listeAnnonces' => $listeAnnonces,
  320.             'param1' => $request->get('sous_categorie'),
  321.             'villeA' => $request->get('villeA'),
  322.             'sous_categories' => $sous_categories,
  323.             'type_prestation' => $request->get('type_prestation'),
  324.             'services_proposes' => $request->get('services_proposes'),
  325.             'code_postal_ville' => $request->get('code_postal_ville'),
  326.             'p_empty_search_text' => $p_empty_search_text,
  327.             'text_wishlist' => $text_wishlist,
  328.             'noPage' => $page,
  329.             'pages' => $pages,
  330.             'offset' => $offset,
  331.             'start' => $start,
  332.             'end' => $end,
  333.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0)
  334.         ]);
  335.         return new JsonResponse(['html' => $html]);
  336.     }
  337.     /**
  338.      * @Route("/{_locale}/annonces/details/{id}", name="detailsAnnonce", requirements={"_locale": "fr","id":".{8,300}?"})
  339.      * @param Request $request
  340.      * @return Response
  341.      */
  342.     public function details(Request $request)
  343.     {
  344.         $dateCommande = new DateTime();
  345.         $detailsAnnonce $this->service_manager->readAllAnnonceDataByName($request->get('id'));
  346.         //dd($detailsAnnonce);
  347.         $rupture $this->entityManager->getRepository(WpPostmeta::class)->findOneBy(['postId' => $detailsAnnonce["id"], 'metaKey' => 'rupture']);
  348.         if ($rupture) {
  349.             $rupture $rupture->getMetaValue();
  350.         } else {
  351.             $rupture 1;
  352.         }
  353.         $date = array();
  354.         $d1 $this->service_manager->readUserMeta($detailsAnnonce['post_author'], 'disponibilite');
  355.         if ($d1) {
  356.             $date explode(','$d1->getMetaValue());
  357.         }
  358.         $professional $this->entityManager->getRepository(User::class)->find($detailsAnnonce['post_author']);
  359.         $lateDate date('d-m-Y'strtotime($dateCommande->format('d-m-Y'). ' + 1 years'));
  360.         $availabilityRangeDates $this->tools->getBetweenDates($dateCommande->format('d-m-Y'), $lateDate);
  361.         $userAvailabilityDates array_diff($availabilityRangeDates$date);
  362.         $datep = array();
  363.         $d2 $this->panier->dates($detailsAnnonce["id"]);
  364.         if ($d2) {
  365.             $datep explode('|'$d2);
  366.         }
  367.         $text_wishlist null;
  368.         if ($this->getUser()) {
  369.             $text_wishlist implode(','$this->service_manager->readListUserMeta($this->getUser()->getId(), 'annonce_wishlist'));
  370.         }
  371.         return $this->render('annonces/details.html.twig', [
  372.             'header' => $this->service_manager->naveMenuItem(10),
  373.             'footer' => $this->service_manager->naveMenuItem(18),
  374.             'detailsAnnonce' => $detailsAnnonce,
  375.             'rupture' => $rupture,
  376.             'date' => $userAvailabilityDates,
  377.             'd' => new DateTime(),
  378.             'datep' => $datep,
  379.             'etat' => $request->get('etat'),
  380.             'user' => $professional,
  381.             'infos_bulle' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('infos_bulle_' $request->getLocale()),
  382.             'calendar_infos' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('calendar_infos_bulle_' $request->getLocale()),
  383.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  384.             'text_wishlist' => $text_wishlist,
  385.             'bloc1' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_1'),
  386.             'bloc2' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_2'),
  387.             'bloc3' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_3'),
  388.             'bloc4' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_4'),
  389.             'bloc5' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_5'),
  390.             'bloc6' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_6'),
  391.             'bloc7' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_7'),
  392.             'bloc8' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_8'),
  393.             'bloc9' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('accueil_bloc_9'),
  394.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube'),
  395.         ]);
  396.     }
  397.     /**
  398.      * @Route("/{_locale}/annonces/favoris", name="favoris", requirements={"_locale": "fr"})
  399.      * @param Request $request
  400.      * @return Response
  401.      */
  402.     public function favoris(Request $request)
  403.     {
  404.         $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  405.         $wishlist $this->service_manager->readListUserMeta($this->getUser()->getId(), 'annonce_wishlist');
  406.         $text_wishlist implode(',',$wishlist);
  407.         $listeAnnonces = [];
  408.         if(count($wishlist) > 0){
  409.             $listeAnnonces $this->annonces_access_layer->readFavorisAnnonces($text_wishlist);
  410.         }
  411.         return $this->render('annonces/favoris.html.twig', [
  412.             'header' => $this->service_manager->naveMenuItem(10),
  413.             'footer' => $this->service_manager->naveMenuItem(18),
  414.             'listeAnnonces' => $listeAnnonces,
  415.             'param1' => $request->get('sous_categorie'),
  416.             'villeA' => $request->get('villeA'),
  417.             'wishlist' => $wishlist,
  418.             'text_wishlist' => $text_wishlist,
  419.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  420.             'youtube_url' => $this->entityManager->getRepository(WpOptions::class)->findOneByOptionName('home-youtube'),
  421.         ]);
  422.     }
  423.     /**
  424.      * @Route("/{_locale}/annonces/rupture/{slug}", name="rupture", requirements={"_locale": "fr","slug":".{8,300}?"})
  425.      */
  426.     public function rupture(Request $request)
  427.     {
  428.         $post $this->entityManager->getRepository(WpPosts::class)->findOneBy([
  429.             'postName' => $request->get('slug')]);
  430.         if ($post) {
  431.             $rupture $this->entityManager->getRepository(WpPostMeta::class)->findOneBy([
  432.                 'postId' => $post->getId(),
  433.                 'metaKey' => 'rupture']);
  434.             if ($rupture) {
  435.                 if ($rupture->getMetaValue() == 1) {
  436.                     $this->service_manager->updatePostMeta(
  437.                         $rupture->getMetaId(),
  438.                         $post->getId(),
  439.                         'rupture',
  440.                         0,
  441.                         'fr'
  442.                     );
  443.                     $this->service_manager->updatePostMeta(
  444.                         $rupture->getMetaId(),
  445.                         $post->getId(),
  446.                         'rupture',
  447.                         0,
  448.                         'en_US'
  449.                     );
  450.                 } elseif ($rupture->getMetaValue() == 0) {
  451.                     $this->service_manager->updatePostMeta(
  452.                         $rupture->getMetaId(),
  453.                         $post->getId(),
  454.                         'rupture',
  455.                         1,
  456.                         'fr'
  457.                     );
  458.                     $this->service_manager->updatePostMeta(
  459.                         $rupture->getMetaId(),
  460.                         $post->getId(),
  461.                         'rupture',
  462.                         1,
  463.                         'en_US'
  464.                     );
  465.                 }
  466.             } else {
  467.                 $rupture $this->service_manager->createPostMeta(
  468.                     $post->getId(),
  469.                     'rupture',
  470.                     1,
  471.                     $request->getLocale()
  472.                 );
  473.             }
  474.         }
  475.         return $this->redirectToRoute('profile_annonces');
  476.     }
  477.     /**
  478.      * @Route("/{_locale}/devis/details/{id}", name="detailsDevis", requirements={"_locale": "fr"})
  479.      */
  480.     public function detailsDevis(Request $request)
  481.     {
  482.         $detailsAnnonce $this->service_manager->readAllDevisData($request->get('id'));
  483.         return $this->render('annonces/detailsDevis.html.twig', [
  484.             'header' => $this->service_manager->naveMenuItem(10),
  485.             'footer' => $this->service_manager->naveMenuItem(18),
  486.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  487.             'detailsAnnonce' => $detailsAnnonce,
  488.         ]);
  489.     }
  490.     /**
  491.      * @Route("/annonces/delete/{id}/{_locale}", name="deleteAnnounce", requirements={"_locale": "fr"})
  492.      */
  493.     public function deleteAnnounce($id)
  494.     {
  495.         $DetailsAnnonce $this->entityManager->getRepository(WpPosts::class)->find($id);
  496.         $this->service_manager->deleteProductAll($id);
  497.         $dateDelete = new DateTime('now');
  498. /*        $this->tools->sendEmail('serviceclients@kbr-global.com', 'admin@kbr-global.com', 'Annonce supprimée', 'emails/emailDeleteAnnounce.html.twig', [
  499.             'user' => $this->getUser(),
  500.             'post' => $DetailsAnnonce,
  501.             'dateDelete' => $dateDelete,
  502.         ]);*/
  503.         return $this->render('admin/resultat.html.twig', [
  504.             'result' => 1,
  505.         ]);
  506.     }
  507.     /**
  508.      * @Route("/annonces/change/moderation/{tag}/{_locale}", name="change_status", requirements={"_locale": "fr"})
  509.      */
  510.     public function change_status($tag)
  511.     {
  512.         $DetailsAnnonce $this->entityManager->getRepository(WpPosts::class)->find($id);
  513.         $DetailsAnnonce->setPostStatus($tag);
  514.         $this->entityManager->flush();
  515.         return $this->render('admin/resultat.html.twig', [
  516.             'result' => 1,
  517.         ]);
  518.     }
  519.     /**
  520.      * @Route("/{_locale}/annonces/panier", name="panier_user", requirements={"_locale": "fr"})
  521.      */
  522.     public function gerer_panier()
  523.     {
  524.         return $this->render('annonces/panier.html.twig', [
  525.             'header' => $this->service_manager->naveMenuItem(10),
  526.             'footer' => $this->service_manager->naveMenuItem(18),
  527.             'panier' => $this->panier->listeProduit(),
  528.             'prixTotal' => $this->panier->MontantGlobal(),
  529.             'prixTotalProduits' => $this->panier->montant(),
  530.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  531.         ]);
  532.     }
  533.     /**
  534.      * @Route("/{_locale}/annonces/panier/nombre", name="panier_user_number", requirements={"_locale": "fr"})
  535.      */
  536.     public function getPanierNumber()
  537.     {
  538.         //get list of users
  539.         return new Response($this->panier->nombreProduit());
  540.     }
  541.     /**
  542.      * @Route("/{_locale}/annonces/toutes-annonces", name="toutesAnnonce", requirements={"_locale": "fr"})
  543.      */
  544.     public function toutesLesAnnonces()
  545.     {
  546.         $listeAnnonces $this->service_manager->readListAnnonceData();
  547.         $this->requestStack->getSession()->set('taille'$this->panier->nombreProduit());
  548.         return $this->render('annonces/liste.html.twig', [
  549.             'header' => $this->service_manager->naveMenuItem(10),
  550.             'footer' => $this->service_manager->naveMenuItem(18),
  551.             'listeAnnonces' => $listeAnnonces,
  552.             'prestations' => $this->service_manager->postCategorieWithMultilang('product_cat'0),
  553.         ]);
  554.     }
  555.     /**
  556.      * @Route("/annonces/toutes-annonces/Tri-prix/{_locale}/{tag}", name="triAnnoncesParPrix", requirements={"_locale": "fr"})
  557.      */
  558.     public function triAnnoncesParPrix($tag)
  559.     {
  560.         $listeAnnonces $this->service_manager->readListAnnonceDataTri($tag);
  561.         return $this->render('annonces/liste.html.twig', [
  562.             'header' => $this->service_manager->naveMenuItem(10),
  563.             'footer' => $this->service_manager->naveMenuItem(18),
  564.             'listeAnnonces' => $listeAnnonces,
  565.         ]);
  566.     }
  567.     //Add comment method
  568.     /**
  569.      * @Route("annonce/userComment/{_locale}", name="addAnnounceComment", requirements={"_locale": "fr"})
  570.      */
  571.     public function userNotificationData(Request $request)
  572.     {
  573.         $userId $this->getUser()->getId();
  574.         $commentAuthor =
  575.             $this->service_manager->getUserStringDataValue($userId'first_name') . ' ' .
  576.             $this->service_manager->getUserStringDataValue($userId'last_name');
  577.         $dateComment = new DateTime('now');
  578.         //Creer commentaire
  579.         $commentaire $this->service_manager->createComments(
  580.             $request->get('postId'),
  581.             $commentAuthor,
  582.             $this->getUser()->getEmailCanonical(),
  583.             '',
  584.             $request->getClientIp(),
  585.             $dateComment,
  586.             $dateComment,
  587.             $request->get('comment-box'),
  588.             0,
  589.             'trash',
  590.             '',
  591.             '',
  592.             0,
  593.             $userId
  594.         );
  595.         $post $this->entityManager->getRepository(WpPosts::class)
  596.             ->find($request->get('postId'));
  597.         //Notifier Le createur
  598.         $this->tools->sendEmail(
  599.             'no_reply@kbr-global.com',
  600.             'admin@kbr-global.com',
  601.             'Commentaires',
  602.             'emails/emailPostCreator.html.twig',
  603.             [
  604.                 'user' => $commentAuthor'post' => $post,
  605.                 'dateCommentaire' => $dateComment,
  606.             ]
  607.         );
  608.         return $this->render('admin/resultat.html.twig', ['result' => 1,]);
  609.     }
  610.     /**
  611.      * @Route("/annonces/add_panier/{_locale}/", name="panier", requirements={"_locale": "fr"})
  612.      */
  613.     public function ajouterAnnoncePanier(Request $request)
  614.     {
  615.         //nombre d'annonce dans le panier
  616.         $this->panier->ajouterProduit(
  617.             $request->get('id'),
  618.             $request->get('userId'),
  619.             $request->get('libelle'),
  620.             $request->get('qte'),
  621.             $request->get('prixu'),
  622.             $request->get('prixu') * $request->get('qte'),
  623.             $request->get('devise'),
  624.             $request->get('dates'),
  625.             $request->get('image'),
  626.             $request->get('adresse'),
  627.             $request->get('email'),
  628.             $this->service_manager->getVendeurData($request->get('userId')),
  629.             $request->get('name'),
  630.             $request->get('categorie'),
  631.             $request->get('sousCategorie'),
  632.             $request->get('livraison'),
  633.             $request->get('etat')
  634.         );
  635.         $this->requestStack->getSession()->set('taille'$this->panier->nombreProduit());
  636.         return $this->render('admin/resultat.html.twig', [
  637.             'result' => 1,
  638.         ]);
  639.     }
  640.     /**
  641.      * @Route("/annonces/deleteItem/{_locale}/", name="deleteitem", requirements={"_locale": "fr"})
  642.      * @param Request $request
  643.      * @return \Symfony\Component\HttpFoundation\RedirectResponse
  644.      */
  645.     public function deleteItemInCart(Request $request)
  646.     {
  647.         //nombre d'annonce dans le panier
  648.         $this->panier->supprimerArticle($request->get('id'));
  649.         $this->requestStack->getSession()->set('taille'0);
  650.         return $this->redirectToRoute('annonces_panier_user');
  651.     }
  652.     /**
  653.      * @Route("/{_locale}/annonces/wishlist/add", name="add_remove_to_user_wishlist", requirements={"_locale": "fr"})
  654.      */
  655.     public function add_to_user_wishlist(Request $request)
  656.     {
  657.         if ($this->getUser()) {
  658.             $data $this->service_manager->readUserMetaByAllKey($this->getUser()->getId(),
  659.                 'annonce_wishlist',
  660.                 $request->get('annonce_id'),
  661.                 $request->get('annonce_id'));
  662.             if ($data) {
  663.                 $this->entityManager->remove($data);
  664.                 $this->entityManager->flush();
  665.                 return new JsonResponse(['status' => 'success',
  666.                     'color' => 'black',
  667.                     'message' => 'Cette annonce a été supprimée de la wishlist',
  668.                     'data' => $data]);
  669.             } else {
  670.                 $data $this->service_manager->createUserMeta($this->getUser()->getId(), 'annonce_wishlist'$request->get('annonce_id'));
  671.                 return new JsonResponse(['status' => 'success',
  672.                     'color' => 'red''message' => 'Enregistrement effectué avec succès''data' => $data]);
  673.             }
  674.         } else {
  675.             return new JsonResponse(['status' => 401'color' => null,
  676.                 'message' => 'Une erreur est survenue''data' => null]);
  677.         }
  678.     }
  679. }