src/Controller/IndexController.php line 86

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use App\Entity\Annonces;
  8. use App\Entity\VillesFrance;
  9. use App\Entity\Visiteurs;
  10. use App\Entity\PostLike;
  11. use App\Controller\Fonctions\Fonctions;
  12. use App\Repository\VillesFranceRepository;
  13. use App\Repository\AnnoncesRepository;
  14. use Doctrine\Persistence\ManagerRegistry;
  15. class IndexController extends AbstractController
  16. {
  17.     #[Route('/'name'app_index')]
  18.     public function index(VillesFranceRepository $villesfranceRepositoryAnnoncesRepository $annoncesRepositoryManagerRegistry $doctrineRequest $request): Response
  19.     {
  20.         $entityManager $doctrine->getManager();
  21.         $fonction = new Fonctions();
  22.         $userRepo $entityManager->getRepository(VillesFrance::class);
  23.         $queryBuilder $entityManager->createQueryBuilder();
  24.         $nbr 0;
  25.         $config 1;
  26.         // recuperation de la date en Session
  27.         $session $request->getSession();
  28.         $transaction $session->get('transaction');
  29.         // condition pour l'ordre des onglets. 
  30.         if ($transaction ==  0) {
  31.             $config 1;
  32.         }
  33.         if ($transaction ==  'sejour') {
  34.             $config 1;
  35.         }
  36.         if ($transaction ==  'achat') {
  37.             $config 2;
  38.         }
  39.         if ($transaction ==  'location') {
  40.             $config 3;
  41.         }
  42.         $image '';
  43.         $datemenu =  '' date(" Y") . '-' .  date('m') .  '-' date('d') . '';
  44.         $annemax =  date(" Y") + 2;
  45.         $datemax '' $annemax '' .  date('m') .  '' date('d') . '';
  46.         $datepickk  =   array("datemax" => $datemax"datemenu" =>  $datemenu);
  47.         $villesession $session->get('ville');
  48.         $codepostalesession $session->get('codepostale');
  49.         $transaction $session->get('transaction');
  50.         $url  =  $fonction->FonctionUrl();
  51.         $like '';
  52.         $ip =  $fonction->NomIp();
  53.         $logo =  $fonction->FonctionLogo();
  54.         // recuperation des like 
  55.         $user $this->getUser();
  56.         if ($user == true) {
  57.             // déterminer le like
  58.             $userRepo $entityManager->getRepository(PostLike::class);
  59.             $like $userRepo->findOneBy(["user" => $user]);
  60.         }
  61.         // condition pour verrifier si la ssession ville et code postale sont remplie 
  62.         if ((strlen($villesession) != 0) and (strlen($codepostalesession) != 0)) {
  63.             $ville =  $villesession;
  64.             $codepostale =  $codepostalesession;
  65.             $fr 1;
  66.         } else {
  67.             // localisation de l'acheteur 
  68.             $ville =    $fonction->FonctionOujesuis($ip);
  69.             $ville =   $ville['ville'];
  70.             $pays =    $fonction->FonctionOujesuis($ip);
  71.             $country =   $pays['country'];
  72.             $codepostale =   $pays['postal'];
  73.             $codepostale '';
  74.             // condition pour faire la séléction de la variable pour un utulisateur en France ou à l'etranger. 
  75.             if ($country ==  'FR') {
  76.                 $fr 1;
  77.             } else {
  78.                 $fr 0;
  79.             }
  80.         }
  81.         // condition pour faire la séléction de resulta des villes selon un utulisateur  en France ou à l'etranger. 
  82.         if ($fr ==  1) {
  83.             // localisation d u département de l'acheuteur 
  84.             $userRepo $entityManager->getRepository(VillesFrance::class);
  85.             $VilleFrance $userRepo->findOneBy(["ville_slug" => $ville]);
  86.             $departement =   $VilleFrance->getVilleDepartement($ville);
  87.             $numdepartement $departement;
  88.             $ville_departement $VilleFrance->getVilleDepartement($ville);
  89.             $ville_code_postal $VilleFrance->getVilleCodePostal($ville);
  90.             $ville_slug_selec $VilleFrance->getVilleSlug($ville);
  91.             $VilleNomReel $VilleFrance->getVilleNomReel($ville);
  92.             $ville_latitude_deg $VilleFrance->getvilleLatitudeDeg($ville);
  93.             $ville_longitude_deg $VilleFrance->getvilleLongitudeDeg($ville);
  94.             $ville_population_2012 $VilleFrance->getvillepopulation2012($ville);
  95.             $departement =   $fonction->FonctionDepartement($departement);
  96.             $region =     $fonction->FonctionRegion($numdepartement);
  97.             $departement str_replace(" """,  $departement);
  98.             $rechimage 1;
  99.             $image '';
  100.             $queryBuilder->select('u')
  101.                 ->from(VillesFrance::class, 'u')
  102.                 ->where('u.ville_departement IN (:ville_departement)')
  103.                 ->orwhere('u.ville_code_postal IN (:ville_code_postal)')
  104.                 ->setParameter('ville_departement',  [$ville_departement])
  105.                 ->setParameter('ville_code_postal',  [$ville_code_postal])
  106.                 ->addOrderBy('u.ville_population_2012''DESC')
  107.                 ->setMaxResults(6);
  108.             $query $queryBuilder->getQuery();
  109.             $donnees $query->getResult();
  110.             $fra 1;
  111.         } else {
  112.             $fra 1;
  113.             $departement =    '0';
  114.             $region =    '0';
  115.             $nbrimageexp  '0';
  116.             $queryBuilder->select('u')
  117.                 ->from(VillesFrance::class, 'u')
  118.                 ->addOrderBy('u.ville_population_2012''DESC')
  119.                 ->setMaxResults(6);
  120.             $query $queryBuilder->getQuery();
  121.             $donnees $query->getResult();
  122.         }
  123.         // condition pour Paris afin d'elargir la recherche autour.
  124.         if ($ville ==  'PARIS') {
  125.             $ville_latitude_deg '48.856614';
  126.             $ville_longitude_deg '2.3522219';
  127.             $meters 1500;
  128.             $coordonne =  $fonction->FonctionRayon($ville_latitude_deg$ville_longitude_deg$meters);
  129.             $SouthLat $coordonne['SouthLat'];
  130.             $WestLong $coordonne['WestLong'];
  131.             $NorthLat $coordonne['NorthLat'];
  132.             $EastLong $coordonne['EastLong'];
  133.             $queryBuilderVille $entityManager->createQueryBuilder();
  134.             $queryBuilderVille->select('u')
  135.                 ->from(VillesFrance::class, 'u')
  136.                 ->where('u.ville_longitude_deg  >= :ville_longitude_deg_west')
  137.                 ->andwhere('u.ville_longitude_deg  <= :ville_longitude_deg_east')
  138.                 ->andwhere('u.ville_latitude_deg  >= :ville_latitude_deg_south')
  139.                 ->andwhere('u.ville_latitude_deg  <= :ville_latitude_deg_north')
  140.                 ->setParameter('ville_longitude_deg_west', [$WestLong])
  141.                 ->setParameter('ville_longitude_deg_east', [$EastLong])
  142.                 ->setParameter('ville_latitude_deg_south', [$SouthLat])
  143.                 ->setParameter('ville_latitude_deg_north',  [$NorthLat])
  144.                 ->addOrderBy('u.ville_population_2012''DESC')
  145.                 ->setMaxResults(6);
  146.             // fin teste sur la liste des ville
  147.             $query $queryBuilderVille->getQuery();
  148.             $donnees $query->getResult();
  149.         }
  150.         $listeville $donnees;
  151.         $nbr 0;
  152.         $nbrimage 0;
  153.         $nbrannonce 0;
  154.         $imagenbrdefaut 0;
  155.         // variable pour debuter le compteur pour faire le derrnier tableau image.
  156.         $nbrimagetab 1;
  157.         // condition pour faire la premier ligne du tableau 
  158.         if (strlen($villesession) != 0) {
  159.             // variable pour debuter le compteur pour faire le derrnier tableau image.
  160.             $nbrimagetab 2;
  161.             $nbr 1;
  162.             $userRepo $entityManager->getRepository(Annonces::class);
  163.             $usersByRolepost $userRepo->findBy(["ville" => $villesession"codepostal" => $ville_code_postal"transaction" => 1"etat" => 1]);
  164.             $nbrannonce 0;
  165.             foreach ($usersByRolepost as $userimmage) {
  166.                 $nbrannonce++;
  167.             }
  168.             $tabpropos[$nbr]   =   array("VilleNomReel" => $VilleNomReel"ville" => $ville"villeslug" => $ville_slug_selec"nbrannonce" => $nbrannonce"ville_population_2012" => $ville_population_2012);
  169.         }
  170.         foreach ($donnees as $user) {
  171.             $ville_nom $user->getVilleNom();
  172.             $ville_slug $user->getVilleSlug();
  173.             $VilleNomReel $user->getVilleNomReel();
  174.             $ville_population_2012 $user->getvillepopulation2012($ville);
  175.             $nbr++;
  176.             $nbrimage++;
  177.             $ville_nomteste[$nbr] = $user->getVilleNomReel();
  178.             // variable pour evier une erreur de typpe key inconnue pour la gallerie photo
  179.             $varnbrimage $nbrimage;
  180.             $userRepo $entityManager->getRepository(Annonces::class);
  181.             $usersByRolepost $userRepo->findBy(["ville" => $ville_nom"etat" => 1]);
  182.             $nbrannonce 0;
  183.             foreach ($usersByRolepost as $userimmage) {
  184.                 $nbrannonce++;
  185.             }
  186.             if ($ville_nom != $villesession) {
  187.                 $tabpropos[$nbr]   =   array("VilleNomReel" => $VilleNomReel"ville" => $ville_nom"villeslug" => $ville_slug"nbrannonce" => $nbrannonce"ville_population_2012" => $ville_population_2012);
  188.             }
  189.         }
  190.         $tabparbanque  $tabpropos;
  191.         $rechimage 0;
  192.         $classenbr 0;
  193.         foreach ($tabparbanque as $user) {
  194.             // condition pour insérer les classe dans le carouselle 
  195.             if ($classenbr ==  0) {
  196.                 $classe '1';
  197.             }
  198.             if ($classenbr ==  1) {
  199.                 $classe '2';
  200.             }
  201.             if ($classenbr ==  2) {
  202.                 $classe '2';
  203.             }
  204.             if ($classenbr ==  3) {
  205.                 $classe '1';
  206.             }
  207.             if ($classenbr ==  4) {
  208.                 $classe '1';
  209.             }
  210.             if ($classenbr ==  5) {
  211.                 $classe '2';
  212.             }
  213.             $classenbr++;
  214.             $rechimage++;
  215.             // condition de la selection de l'image en pour un utulisateur hors de france
  216.             if ($departement == 0) {
  217.                 // varible pour indiquer la premiere image 
  218.                 $nbrimageexp++;
  219.                 $imagearr =  $fonction->FonctionImageVille($user['villeslug'], $rechimage$departement);
  220.                 $imagepropo $imagearr['webformatURL'];
  221.                 $imageacceuil $imagearr['largeImageURL'];
  222.                 $premiereimage $imagearr['premiereimage'];
  223.                 $premieretag $imagearr['premieretag'];
  224.                 $imageliste1 $imagearr['imageliste1'];
  225.                 $imageliste2 $imagearr['imageliste2'];
  226.                 if ($nbrimageexp  ==  1) {
  227.                     $image $imageacceuil;
  228.                 }
  229.                 $message '';
  230.                 $recherche '';
  231.                 $nbr++;
  232.                 if ($imagepropo  ==  true) {
  233.                     // insertion des images 
  234.                     $current file_get_contents($imagepropo);
  235.                     $new_str str_replace('https://pixabay.com/get/'''$imagepropo);
  236.                     $file 'uploads/index/' $new_str '';
  237.                     file_put_contents($file$current);
  238.                 }
  239.                 $tabparligne[$rechimage]   =   array("VilleNom" => $user['VilleNomReel'], "ville_slug" =>  $user['villeslug'], "nbrannonce" => $user['nbrannonce'], "image" => $imagepropo"classe" => $classe"message" => $message"recherche" => $recherche"imagemini" => $new_str);
  240.             } else {
  241.                 // condition de la selection de l'image en fonction du nombre de population 
  242.                 if ($user['ville_population_2012'] > 40000) {
  243.                     $imagearr =  $fonction->FonctionImageVille($user['VilleNomReel'], $rechimage$departement);
  244.                     $imagepropo $imagearr['webformatURL'];
  245.                     $imageacceuil $imagearr['largeImageURL'];
  246.                     $premiereimage $imagearr['premiereimage'];
  247.                     $premieretag $imagearr['premieretag'];
  248.                     $imageliste1 $imagearr['imageliste1'];
  249.                     $imageliste2 $imagearr['imageliste2'];
  250.                     if ($imagepropo ==  0) {
  251.                         $imagepropo $imageliste2;
  252.                         $imageacceuil $imageliste1;
  253.                     }
  254.                     $tag =  $imagearr['tag'];
  255.                     $tag ucwords($tag);
  256.                 } else {
  257.                     $imagearr =  $fonction->FonctionImage($user['ville'], $rechimage);
  258.                     $imagepropo $imagearr['webformatURL'];
  259.                     $imageacceuil $imagearr['largeImageURL'];
  260.                     $premiereimage $imagearr['premiereimage'];
  261.                     $premieretag $imagearr['premieretag'];
  262.                     $tag =  $imagearr['tag'];
  263.                     $tag ucwords($tag);
  264.                 }
  265.                 // teste avec la premiere image trouver 
  266.                 if ((strlen($imagepropo) == 1) and  (strlen($premiereimage) != 0)) {
  267.                     $tag $premieretag;
  268.                     $tag ucwords($tag);
  269.                     $imagepropo $premiereimage;
  270.                 }
  271.                 // condition pour verrifier si l'image à était touver
  272.                 $erreur 0;
  273.                 if (strlen($imagepropo) != 1) {
  274.                     // Si l'image est touver on verrifie si elle correspond. 
  275.                     if ($tag == $user['VilleNomReel']) {
  276.                         $erreur 1;
  277.                     }
  278.                 }
  279.                 // variable pour faire apparaitre si la photo correspond à la ville.
  280.                 $recherche 0;
  281.                 $VilleNomReel $ville_nomteste[$nbrimagetab];
  282.                 $nbrimage++;
  283.                 $message '';
  284.                 if ($erreur == 0) {
  285.                     $imagearr =     $fonction->FonctionImage($departement$rechimage);
  286.                     $imagepropo $imagearr['webformatURL'];
  287.                     $tag $imagearr['tag'];
  288.                     $message =  $fonction->NomLocalite($tag);
  289.                     $recherche 1;
  290.                     if (strlen($imagepropo) == 1) {
  291.                         // boucle pour affiner la recherce de l'image 
  292.                         for ($i 1$i <= 3$i++) {
  293.                             if (($i == 1)  and ($imagepropo == 0)) {
  294.                                 $imagenbrdefaut++;
  295.                                 $recherche 1;
  296.                                 $imagearr =     $fonction->FonctionImage($region$imagenbrdefaut);
  297.                                 $imagepropo $imagearr['webformatURL'];
  298.                                 $tag $imagearr['tag'];
  299.                                 $message =  $fonction->NomLocalite($tag);
  300.                             }
  301.                         }
  302.                     }
  303.                 }
  304.                 // condition pour inserer l'image d'acceuil 
  305.                 if ($rechimage == 1) {
  306.                     $image $imageacceuil;
  307.                 }
  308.                 // condition pour inserer l'image d'acceuil si elle est vide à la premiere. 
  309.                 if (($rechimage 1) and  ($image == 0)) {
  310.                     $image $imageacceuil;
  311.                 }
  312.                 // insertion des images 
  313.                 $current file_get_contents($imagepropo);
  314.                 $new_str str_replace('https://pixabay.com/get/'''$imagepropo);
  315.                 $file 'uploads/index/' $new_str '';
  316.                 file_put_contents($file$current);
  317.                 $tabparligne[$rechimage]   =   array("VilleNom" => $user['VilleNomReel'], "ville_slug" =>  $user['villeslug'], "nbrannonce" => $user['nbrannonce'], "image" => $imagepropo"classe" => $classe"message" => $message"recherche" => $recherche"imagemini" => $new_str);
  318.             }
  319.         }
  320.         // insertion des images testimonial
  321.         $current file_get_contents($image);
  322.         $new_str str_replace('https://pixabay.com/get/'''$image);
  323.         $testimonial 'uploads/index/' $new_str '';
  324.         file_put_contents($testimonial$current);
  325.         $testimonial str_replace('uploads/index/'''$testimonial);
  326.         $listeville $tabparligne;
  327.         $query $queryBuilder->getQuery();
  328.         $visiteurs $query->getResult();
  329.         // recuperation des derrniere annonce de la ville 
  330.         // localisation d u département de l'acheuteur 
  331.         // condition pour la recherche des proposition des visiteurs en France 
  332.         if ($fr == 1) {
  333.             $meters 1500;
  334.             // recuperation des coordonne sur x Km
  335.             $coordonne =  $fonction->FonctionRayon($ville_latitude_deg$ville_longitude_deg$meters);
  336.             $SouthLat $coordonne['SouthLat'];
  337.             $WestLong $coordonne['WestLong'];
  338.             $NorthLat $coordonne['NorthLat'];
  339.             $EastLong $coordonne['EastLong'];
  340.             $orderBytypeOrder  'ASC';
  341.             $orderBytype 'a.created_at';
  342.             $queryBuilder $entityManager->createQueryBuilder();
  343.             $queryBuilder->select('a')
  344.                 ->from(Annonces::class, 'a')
  345.                 ->where('a.longitude  >= :ville_longitude_deg_west')
  346.                 ->andwhere('a.longitude  <= :ville_longitude_deg_east')
  347.                 ->andwhere('a.latitude  >= :ville_latitude_deg_south')
  348.                 ->andwhere('a.latitude  <= :ville_latitude_deg_north')
  349.                 ->setParameter('ville_longitude_deg_west', [$WestLong])
  350.                 ->setParameter('ville_longitude_deg_east', [$EastLong])
  351.                 ->setParameter('ville_latitude_deg_south', [$SouthLat])
  352.                 ->setParameter('ville_latitude_deg_north',  [$NorthLat])
  353.                 ->orderBy($orderBytype$orderBytypeOrder)
  354.                 ->setMaxResults(50);
  355.             $query $queryBuilder->getQuery();
  356.             $donnees $query->getResult();
  357.         }
  358.         // condition pour la recherche des proposition des visiteurs hors de  France 
  359.         if ($fr == 0) {
  360.             $userRepo $entityManager->getRepository(Annonces::class);
  361.             $usersByRole $userRepo->findBy(["ville" => "angouleme"]);
  362.             $donnees $usersByRole;
  363.         }
  364.         // fonction pour envoyer l'id du journal ou de l'utilisateur 
  365.         $iduser $this->getUser();
  366.         $userRepo $entityManager->getRepository(PostLike::class);
  367.         $usersByRolepost $userRepo->findBy(["user" => $iduser]);
  368.         $poste $usersByRolepost;
  369.         $date $this->date = new \DateTime('now');
  370.         // recuperation du tableau des visiteurs 
  371.         $queryBuilder $entityManager->createQueryBuilder();
  372.         $queryBuilder->select('u')
  373.             ->from(Visiteurs::class, 'u')
  374.             ->where('u.user IN (:user)')
  375.             ->orwhere('u.adresseip IN (:adresseip)')
  376.             ->setParameter('user',  [$iduser])
  377.             ->setParameter('adresseip',  [$ip]);
  378.         $query $queryBuilder->getQuery();
  379.         $visiteurs $query->getResult();
  380.         return $this->renderForm('index/index.html.twig', [
  381.             'image' => $image,
  382.             'logo' => $logo,
  383.             'propositions' => $donnees,
  384.             'date' => $date,
  385.             'post' => $poste,
  386.             'listeville' => $listeville,
  387.             'like' => $like,
  388.             'url' => $url,
  389.             'visiteurs' => $visiteurs,
  390.             'testimonial' => $testimonial,
  391.             'config' => $config,
  392.             'datepickk' => $datepickk,
  393.             'fra' => $fra,
  394.         ]);
  395.     }
  396. }