src/Controller/TripsController.php line 420

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Parametres;
  4. use App\Entity\Voyage;
  5. use App\Entity\Etapes;
  6. use App\Entity\ListeMenu;
  7. use App\Entity\Jaime;
  8. use App\Entity\PhotosUsers;
  9. use App\Entity\ListeMenuTranslation;
  10. use App\Entity\ListeSaison;
  11. Use App\Entity\ListeSaisonTranslation;
  12. use App\Services\MenuFetcher;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Doctrine\ORM\Query;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  19. use Symfony\Component\Form\AbstractType;
  20. use Symfony\Component\Form\FormBuilderInterface;
  21. use Symfony\Component\OptionsResolver\OptionsResolver;
  22. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  23. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  24. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  25. use Symfony\Component\Form\Extension\Core\Type\DateType;
  26. use Symfony\Component\Form\Extension\Core\Type\TextType;
  27. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  28. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  29. use Symfony\Component\Form\Extension\Core\Type\CountryType;
  30. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  31. class TripsController extends Controller
  32. {
  33.     /**
  34.      * @Route("/trips", name="trips")
  35.      */
  36.     public function index(SessionInterface $sessionMenuFetcher $menuFetcher,Request $request)
  37.     {
  38.         
  39.         $user $session->get('user',null);
  40.         /*
  41.          * controle d'accès 
  42.          * l'utilisateur doit avoir au minimum un credential user ou admin
  43.          */
  44.         
  45.         if ($user && $user->getIdCredentiel() > 2
  46.         {
  47.             $this->erreur 2;       
  48.             return $this->redirect('Authentication/index?login_user=true&erreur=2');  
  49.         } 
  50.         if($user == null
  51.         {
  52.             return $this->redirectToRoute('login');
  53.         }
  54.         else
  55.         {
  56.             $utilisateur = array();
  57.             $utilisateur['iduser'] = $user->getIdParametres();
  58.             $utilisateur['nom'] = $user->getNom();
  59.             $utilisateur['prenom'] = $user->getPrenom();
  60.             $utilisateur['langue'] = $user->getLangue();     
  61.             $utilisateur['credentiel'] =    $user->getIdCredentiel(); 
  62.             $credentiel $user->getIdCredentiel();               
  63.             $utilisateur['pseudo'] = $user->getPseudo();
  64.             $session->set('iduser'$user->getIdParametres());
  65.             $session->set('pseudo'$user->getPseudo());
  66.             if ($user->getPhoto() =='' || $user->getPhoto() == null)
  67.                 $utilisateur['photo'] = 'avatar.jpg';
  68.             else
  69.                 $utilisateur['photo'] = $user->getPhoto();
  70.         }            
  71.         
  72.         $em $this->getDoctrine()->getManager();
  73.         $stmt $em->getConnection()->prepare("SELECT `nom_voyage`, `detail_voyage`, `id_voyage_serveur` FROM `voyage` WHERE `voyage`.`id_parametres` = ".$user->getIdParametres()." ORDER BY `date_maj` DESC");
  74.         $stmt->execute();
  75.         $mesVoyages $stmt->fetchAll();
  76.     
  77.     
  78.         
  79.         $listeMenu $menuFetcher->menu('en'$em->getConnection());
  80.         $session->set('last_activity_time'time());
  81.         $page 1//par défaut
  82.         
  83.         return $this->render('Trips/index.html.php', array(
  84.             'mesProjets' => $mesVoyages,
  85.             
  86.             'listeMenu' => $listeMenu,
  87.             'page'=> $page,
  88.             'credentiel' => $user->getIdCredentiel(),
  89.             'utilisateur' => $utilisateur
  90.         ));
  91.         
  92.        /* return $this->json([
  93.             'message' => 'Welcome to your new controller!',
  94.             'path' => 'src/Controller/TripsController.php',
  95.         ]);*/    
  96.         
  97.         
  98.     }
  99.     
  100.      
  101.     public function showTrip($credentiel=0MenuFetcher $menuFetcherSessionInterface $session,Request $request)
  102.     {
  103.         $langue='fr';
  104.         $nblike=0;
  105.         $nbComments=0;
  106.         // éléments du menu dynamique 
  107.        $conn $this->getDoctrine()->getManager()->getConnection();
  108.        $em $this->getDoctrine()->getManager();
  109.        $listeMenu    $menuFetcher->menu('en',$conn);
  110.         // données utilisateurs 
  111.         $id_voyage_serveur $_GET['id_voyage_serveur'];
  112.         $id_user           $_GET['id_parametre'];
  113.         $user $session->get('user',null);
  114.         $last_activity $session->get('last_activity_time',null);
  115.         $langue ='fr';
  116.         if ($user && $last_activity && (time() - $last_activity) > 86400)//24h d'inactivité = expiration de la session
  117.         {
  118.             $user null;
  119.             $session->clear();
  120.             $session->invalidate();
  121.         }
  122.         
  123.         if($user)
  124.             $langue $user->getLangue();
  125.         /*$user = $this->getDoctrine()
  126.                 ->getRepository(Parametres::class)
  127.                 ->find($id_user);*/
  128.                 
  129.         $utilisateur = array();
  130.         
  131.         if ($user==null)
  132.         {
  133.             $credentiel=3;
  134.             $utilisateur['nom'] = 'Visitor';
  135.             $utilisateur['photo'] = 'avatar.jpg';
  136.             $utilisateur['pseudo'] = 'Visitor';
  137.             $utilisateur['prenom'] = 'Visitor';
  138.         }
  139.         else
  140.         {
  141.             $utilisateur['iduser'] = $user->getIdParametres();
  142.             $utilisateur['nom'] = $user->getNom();
  143.             $utilisateur['prenom'] = $user->getPrenom();
  144.             $utilisateur['langue'] = $user->getLangue();     
  145.             $utilisateur['credentiel'] =    $user->getIdCredentiel(); 
  146.             $credentiel $user->getIdCredentiel();               
  147.             $utilisateur['pseudo'] = $user->getPseudo();
  148.             $session->set('iduser'$user->getIdParametres());
  149.             $session->set('pseudo'$user->getPseudo());
  150.             if ($user->getPhoto() =='' || $user->getPhoto() == null)
  151.                 $utilisateur['photo'] = 'avatar.jpg';
  152.             else
  153.                 $utilisateur['photo'] = $user->getPhoto();
  154.         }
  155.         //données du voyage
  156.         $voyage $this->getDoctrine()
  157.                 ->getRepository(Voyage::class)
  158.                 ->find($id_voyage_serveur);
  159.         //
  160.         if (!empty($voyage))
  161.             $id_voyageur $voyage->getIdParametres();
  162.         $voyageur $this->getDoctrine() 
  163.                 ->getRepository(Parametres::class)
  164.                 ->find($id_voyageur);
  165.         if (!empty($voyageur))
  166.         {
  167.         
  168.             $utilisateur['pseudo_voyageur']=$voyageur->getPseudo();
  169.             
  170.             if ($voyageur->getPhoto() != Null || $voyageur->getPhoto() !='' )
  171.                 $utilisateur['photo_voyageur']=$voyageur->getPhoto();
  172.             else
  173.                 $utilisateur['photo_voyageur']='avatar.jpg';
  174.         }
  175.             
  176.         // voir le nombre de like sur le voyage
  177.         $nblike    $this->getNblike($id_voyage_serveur,$id_user);
  178.             
  179.         // appel du moteur de pagination 
  180.        
  181.        $pagination $this->getCurrentStage($request$id_voyage_serveur,$em);
  182.        // lire les photos de l'étape 
  183.         $mesEtapes $pagination->getItems();
  184.         $url_photos=array();
  185.         $num_etape=1;
  186.         foreach ($mesEtapes  as $etape)
  187.         {
  188.             // photos étape
  189.                 $photo_users $this->getDoctrine()
  190.                          ->getRepository(PhotosUsers::class)
  191.                          ->findBy(['idEtapeServeur'=>$etape->getIdEtapeServeur()]);
  192.             $num_photo=1;
  193.             foreach($photo_users as $photo)
  194.             {
  195.                 //$nom_photo = 'mini_papillon'.$photo->getIdphotoUser().$etape->getIdEtapeServeur().'.'.$photo->getExtension();
  196.             $url_photos[$num_etape][$num_photo]=array($photo->getIdphotoUser(),$etape->getIdEtapeServeur(),$photo->getExtension());
  197.             $num_photo++;
  198.             }
  199.            $num_etape++;            
  200.         }
  201.         $listePays $this->getListePays($em);
  202.         
  203.         $session->set('last_activity_time'time());
  204.         $locale="fr_FR";
  205.         return $this->render('Trips/showTrip.html.php', array(
  206.         'voyage'=>$voyage,
  207.         'mesEtapes'=>$pagination->getItems(),
  208.         'langue'=>$langue,
  209.         'id_saison'=>$voyage->getIdListeSaison(),
  210.         'listeMenu'=>$listeMenu,
  211.         'listePays'=>$listePays,
  212.         'credentiel'=>$credentiel,
  213.         'utilisateur'=>$utilisateur,
  214.         'pagination'=>$pagination,
  215.         'nblike'=>$nblike,
  216.         'nbComments'=>$nbComments,
  217.         'user'=>$user,
  218.         'url_photos'=>$url_photos,
  219.         'locale'=>$locale
  220.         
  221.             
  222.     ));
  223. }
  224. public function getCurrentStage($request,$idVoyageServeur,$em)
  225.  {
  226.      
  227.      $dql   "SELECT e FROM App\Entity\Etapes e WHERE e.idVoyageServeur ='".$idVoyageServeur."' ORDER BY e.numEtape";
  228.         $query $em->createQuery($dql);
  229.         
  230.     /**
  231.      *@var $paginator \knp\Component\Pager\Paginator
  232.      */
  233.     
  234.     $paginator $this->get('knp_paginator');
  235.     
  236.     
  237.     $pagination $paginator->paginate(
  238.         $query,
  239.         $request->query->getInt('page',1),
  240.         $request->query->getInt('limit',1)
  241.     );
  242.    /*  echo '<pre>';
  243.     var_dump($pagination);
  244.     echo '</pre>';
  245.     die();*/
  246.    
  247.     return $pagination;
  248.  }
  249. public function newStage(Request $requestSessionInterface $sessionMenuFetcher $menuFetcher)
  250. {
  251.     $id_voyage                 $_GET['id_voyage_serveur'];
  252.     $id_etape_serveur         $_GET['id_etape_serveur'];
  253.     $num_etape_precedent     $_GET['current_sate_num'];
  254.     $user $session->get('user',null);
  255.     if($user == null)
  256.     {
  257.         return $this->redirectToRoute('login');
  258.     }
  259.     
  260.     //$id_voyage = $_POST['id_voyage_serveur'];
  261.     //$page = $_POST['page'];
  262.     
  263.     $em $this->getDoctrine()->getManager();
  264.     $query_voyage $em->createQuery('SELECT v FROM App\Entity\Voyage v WHERE v.idVoyageServeur = :id AND v.idParametres = :param')
  265.                         ->setParameter('id'$id_voyage)
  266.                         ->setParameter('param'$user->getIdParametres());
  267.     $voyages $query_voyage->execute();                    
  268.     
  269.     if(empty($voyages)) 
  270.     {
  271.         return $this->redirectToRoute('trip');
  272.     }
  273.             
  274.         $utilisateur = array();
  275.         
  276.         if ($user==null)
  277.         {
  278.             $credentiel=3;
  279.             $utilisateur['nom'] = 'Visitor';
  280.             $utilisateur['photo'] = 'avatar.jpg';
  281.             $utilisateur['pseudo'] = 'Visitor';
  282.             $utilisateur['prenom'] = 'Visitor';
  283.         }
  284.         else
  285.         {
  286.             $utilisateur['iduser'] = $user->getIdParametres();
  287.             $utilisateur['nom'] = $user->getNom();
  288.             $utilisateur['prenom'] = $user->getPrenom();
  289.             $utilisateur['langue'] = $user->getLangue();     
  290.             $utilisateur['credentiel'] =    $user->getIdCredentiel(); 
  291.             $credentiel $user->getIdCredentiel();               
  292.             $utilisateur['pseudo'] = $user->getPseudo();
  293.             $session->set('iduser'$user->getIdParametres());
  294.             $session->set('pseudo'$user->getPseudo());
  295.             if ($user->getPhoto() =='' || $user->getPhoto() == null)
  296.                 $utilisateur['photo'] = 'avatar.jpg';
  297.             else
  298.                 $utilisateur['photo'] = $user->getPhoto();
  299.         }
  300.     $voyage $voyages[0]; // resultat unique
  301.     
  302.     $listeMenu $menuFetcher->menu('en'$em->getConnection());
  303.     $listePays $this->getListePays($em);
  304.     $liste $this->getListe($em);
  305.        $VoyageForm $this->createFormBuilder($voyage)
  306.         ->add('idListeSaison'ChoiceType::class, array(
  307.             'choices' => array(
  308.                     'Printemps' => '1',
  309.                     'Eté' => '2',
  310.                     'Automne' => '3',
  311.                     'Hiver' => '4',
  312.                 )))
  313.         ->add('nomVoyage'TextType::class)
  314.         ->add('detailVoyage'TextareaType::class)
  315.         ->add('save'SubmitType::class, ['label' => 'valider'])
  316.         ->getForm();
  317.         $etape_affiche = new Etapes();
  318.         $etape_affiche->setDateCre(new \DateTime('now'));
  319.         $etape_affiche->setDateDeplacement(new \DateTime('now'));
  320.         $etape_affiche->setIdVoyageServeur($voyage->getIdVoyageServeur());
  321.         $etape_affiche->setNumEtape($num_etape_precedent 1);
  322.         
  323.         //
  324.         $EtapeForm $this->createFormBuilder($etape_affiche)  
  325.         ->add('dateDeplacement'DateType::class)
  326.         ->add('idListePays'ChoiceType::class, array('choices'=>$liste))
  327.         ->add('coordonneeGps'TextType::class)
  328.         ->add('adresse'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'25')))
  329.         ->add('hebergement'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  330.         ->add('numEtape'IntegerType::class)
  331.         ->add('particulariteEtape'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  332.         ->add('aVoir'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  333.         ->add('aFaire'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  334.         ->add('remarque'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  335.         ->add('save'SubmitType::class, ['label' => 'valider'])
  336.         ->getForm();
  337.     $id_voyage_serveur=$voyage->getIdVoyageServeur();
  338.      $pagination $this->getCurrentStage($request$id_voyage_serveur,$em);
  339.         
  340.     return $this->render('Trips/newTrip.html.php', array(
  341.     'idVoyageServeur'=>$id_voyage
  342.     'VoyageForm'=>$VoyageForm->createView(),
  343.     'EtapeForm'=>$EtapeForm->createView(),
  344.     'page'=>$num_etape_precedent 1,
  345.     'id_etape_serveur'=>$id_etape_serveur,
  346.     'url_photos'=>array(),
  347.     'num_etape'=>$num_etape_precedent 1,
  348.     'credentiel'=>$user->getIdCredentiel(),
  349.     'utilisateur'=>$utilisateur,
  350.     'action'=>'new',
  351.     'pagination'=>$pagination,
  352.     'voyage'=>$voyage,
  353.     'user'=>$user,    
  354.     'listeMenu'=>$listeMenu));    
  355.     //echo 'id etape=>'.$id_etape_serveur;
  356.     //echo 'num etape=>'.$num_etape_precedent;
  357.     //die();
  358.     
  359. public function getEtapForm($etape)
  360. {
  361.   return $EtapeForm $this->createFormBuilder($etape_affiche)  
  362.         ->add('dateDeplacement'DateType::class)
  363.         ->add('idListePays'ChoiceType::class, array('choices'=>$liste'preferred_choices' => array($etape_affiche->getIdListePays())))
  364.         ->add('coordonneeGps'TextType::class)
  365.         ->add('adresse'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'45')))
  366.         ->add('hebergement'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  367.         ->add('numEtape'IntegerType::class)
  368.         ->add('particulariteEtape'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  369.         ->add('aVoir'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  370.         ->add('aFaire'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  371.         ->add('remarque'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
  372.         ->add('save'SubmitType::class, ['label' => 'valider'])
  373.         ->getForm();
  374. }    
  375. Public function getListePays($em)
  376. {
  377.     $sql "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays  FROM `liste_pays`";
  378.        $sql .= " INNER JOIN `liste_pays_translation` "
  379.        $sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
  380.        $sql .= " where `lang`='fr' order by `pays`";
  381.        $statement_pays $em->getConnection()->prepare($sql);
  382.        $statement_pays->execute();
  383.        $result_pays $statement_pays->fetchAll();
  384.        $liste = array();
  385.        foreach($result_pays  as $key => $value)
  386.        {
  387.         $liste[$value['id_liste_pays']]=$value['pays'];
  388.        }
  389.   return $liste;       
  390. }
  391. Public function getListe($em)
  392. {
  393.     $sql "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays  FROM `liste_pays`";
  394.        $sql .= " INNER JOIN `liste_pays_translation` "
  395.        $sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
  396.        $sql .= " where `lang`='fr' order by `pays`";
  397.        $statement_pays $em->getConnection()->prepare($sql);
  398.        $statement_pays->execute();
  399.        $result_pays $statement_pays->fetchAll();
  400.        $liste = array();
  401.        foreach($result_pays  as $key => $value)
  402.        {
  403.         $liste[$value['pays']]=$value['id_liste_pays'];
  404.        }
  405.   return $liste;       
  406. }
  407. Public function coment()
  408. {
  409. }
  410. public function getNblike($idVoyageServeur,$id_user)
  411. {
  412.         $jaime$this->getDoctrine()
  413.             ->getRepository(Jaime::class)
  414.             ->findBy(['idParametre'=>$id_user]);
  415.            
  416.             $this->user_like true;     
  417.             if (!empty($jaime))
  418.              $this->user_like false;
  419.          /******
  420.           * compter le nombre  de fois que le voyage a ét aimé
  421.           */
  422.          $this->nblike 0;  
  423.          $enregts $this->getDoctrine()
  424.             ->getRepository(Jaime::class)
  425.             ->findBy(['idVoyageServeur'=>$idVoyageServeur]);
  426.         
  427.          if (!isset($enregts))
  428.             $nblike 0;
  429.          else
  430.             $nblike count($enregts);
  431.     return $nblike;
  432.  
  433. }
  434. public function newProjet(Request $requestSessionInterface $sessionMenuFetcher $menuFetcher)
  435. {
  436.         $user $session->get('user',null);
  437.         $last_activity $session->get('last_activity_time'null);
  438.         if($user == null)
  439.         {
  440.             return $this->redirectToRoute('login');
  441.         }
  442.         if($user && $last_activity && (time() - $last_activity) > 86400)
  443.         {
  444.             $session->clear();
  445.             $session->invalidate();
  446.             return $this->redirectToRoute('login');
  447.         }
  448.         
  449.         $langue $user->getLangue();
  450.         $credentiel $user->getIdCredentiel();
  451.         if ($user==null)
  452.         {
  453.             $credentiel=3;
  454.             $utilisateur['nom'] = 'Visitor';
  455.             $utilisateur['photo'] = 'avatar.jpg';
  456.             $utilisateur['pseudo'] = 'Visitor';
  457.             $utilisateur['prenom'] = 'Visitor';
  458.         }
  459.         else
  460.         {
  461.             $utilisateur['iduser'] = $user->getIdParametres();
  462.             $utilisateur['nom'] = $user->getNom();
  463.             $utilisateur['prenom'] = $user->getPrenom();
  464.             $utilisateur['langue'] = $user->getLangue();     
  465.             $utilisateur['credentiel'] =    $user->getIdCredentiel(); 
  466.             $credentiel $user->getIdCredentiel();               
  467.             $utilisateur['pseudo'] = $user->getPseudo();
  468.             $session->set('iduser'$user->getIdParametres());
  469.             $session->set('pseudo'$user->getPseudo());
  470.             if ($user->getPhoto() =='' || $user->getPhoto() == null)
  471.                 $utilisateur['photo'] = 'avatar.jpg';
  472.             else
  473.                 $utilisateur['photo'] = $user->getPhoto();
  474.         }
  475.      // éléments du menu dynamique 
  476.        $conn $this->getDoctrine()->getManager()->getConnection();
  477.        $listeMenu    $menuFetcher->menu('en',$conn);
  478.        //liste pays
  479.        $sql "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays  FROM `liste_pays`";
  480.        $sql .= " INNER JOIN `liste_pays_translation` "
  481.        $sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
  482.        $sql .= " where `lang`='fr' order by `pays`";
  483.        //echo $sql;
  484.             $statement_pays =$conn->prepare($sql);
  485.             $statement_pays->execute();
  486.             $result_pays $statement_pays->fetchAll();
  487.             $liste = array();
  488.        // liste des saisons 
  489.        foreach($result_pays  as $key => $value)
  490.        {
  491.         //  $liste=$value;
  492.       $liste[$value['pays']]=$value['id_liste_pays'];
  493.        }
  494.        $enregVoyage = new Voyage();
  495.        $VoyageForm $this->createFormBuilder($enregVoyage)
  496.             ->add('idListeSaison'ChoiceType::class, array(
  497.             'choices' => array(
  498.                     'Printemps' => '1',
  499.                     'Eté' => '2',
  500.                     'Automne' => '3',
  501.                     'Hiver' => '4',  
  502.                 )))
  503.             ->add('nomVoyage'TextType::class)
  504.             ->add('detailVoyage'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'3','cols'=>'35')))
  505.             ->add('save'SubmitType::class, ['label' => 'valider'])
  506.             ->getForm();
  507.             
  508.       $etape = new Etapes();
  509.        $EtapeForm $this->createFormBuilder($etape)  
  510.         ->add('dateDeplacement'DateType::class)
  511.         ->add('idListePays'ChoiceType::class, array('choices'=>$liste))
  512.         ->add('coordonneeGps'TextType::class)
  513.         ->add('adresse'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  514.         ->add('hebergement'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  515.         ->add('numEtape'IntegerType::class)
  516.         ->add('particulariteEtape'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  517.         ->add('aVoir'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  518.         ->add('aFaire'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  519.         ->add('remarque'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  520.         ->add('save'SubmitType::class, ['label' => 'valider'])
  521.         ->getForm();
  522.             
  523.         $session->set('last_activity_time'time());
  524.         
  525.         return $this->render('Trips/newTrip.html.php', array(
  526.         'VoyageForm'=>$VoyageForm->createView(),
  527.         'EtapeForm'=>$EtapeForm->createView(),
  528.         'langue'=>$langue,
  529.         'listeMenu'=>$listeMenu,
  530.         'num_etape'=>1,
  531.         'user'=>$user,
  532.         'utilisateur'=>$utilisateur,
  533.         'credentiel'=>$credentiel
  534.         ));
  535.             
  536. }
  537. public function editProject(Request $requestSessionInterface $sessionMenuFetcher $menuFetcher
  538. {
  539.        /*
  540.        cette fonction permet l'édition d'un projet en vue d'une modification
  541.        */
  542.        $conn $this->getDoctrine()->getManager()->getConnection();
  543.        $em $this->getDoctrine()->getManager();
  544.        // récupérer le menu 
  545.        $listeMenu    $menuFetcher->menu('en',$conn);
  546.         // récupération identifiant du voyage  
  547.         if($request->isMethod('GET'))
  548.             $id_voyage_serveur $_GET['id_voyage_serveur'];
  549.         if (isset($_GET['page']) && !empty($_GET['page']))
  550.             $numEtape $_GET['page'];
  551.         else
  552.             $numEtape=1;
  553.         
  554.         $user $session->get('user',null);
  555.         $last_activity $session->get('last_activity_time',null);
  556.         $langue ='fr';
  557.         if ($user && $last_activity && (time() - $last_activity) > 86400)//24h d'inactivité = expiration de la session
  558.         {
  559.             $user null;
  560.             $session->clear();
  561.             $session->invalidate();
  562.         }
  563.         
  564.         if($user)
  565.             $langue $user->getLangue();
  566.         /*$user = $this->getDoctrine()
  567.                 ->getRepository(Parametres::class)
  568.                 ->find($id_user);*/
  569.                 
  570.         $utilisateur = array();
  571.         
  572.         if ($user==null)
  573.         {
  574.             $credentiel=3;
  575.             $utilisateur['nom'] = 'Visitor';
  576.             $utilisateur['photo'] = 'avatar.jpg';
  577.             $utilisateur['pseudo'] = 'Visitor';
  578.             $utilisateur['prenom'] = 'Visitor';
  579.         }
  580.         else
  581.         {
  582.             $utilisateur['iduser'] = $user->getIdParametres();
  583.             $utilisateur['nom'] = $user->getNom();
  584.             $utilisateur['prenom'] = $user->getPrenom();
  585.             $utilisateur['langue'] = $user->getLangue();     
  586.             $utilisateur['credentiel'] =    $user->getIdCredentiel(); 
  587.             $credentiel $user->getIdCredentiel();               
  588.             $utilisateur['pseudo'] = $user->getPseudo();
  589.             $session->set('iduser'$user->getIdParametres());
  590.             $session->set('pseudo'$user->getPseudo());
  591.             if ($user->getPhoto() =='' || $user->getPhoto() == null)
  592.                 $utilisateur['photo'] = 'avatar.jpg';
  593.             else
  594.                 $utilisateur['photo'] = $user->getPhoto();
  595.         }
  596.         //données du voyage
  597.     
  598.     if($request->isMethod('POST'))
  599.     {
  600.         $id_voyage $_POST['id_voyage_serveur'];
  601.     }
  602.     if($request->isMethod('GET'))
  603.     {
  604.         $id_voyage $_GET['id_voyage_serveur'];
  605.     }
  606.     
  607.     $user $session->get('user',null);
  608.     if($user == null)
  609.     {
  610.         return $this->redirectToRoute('login');
  611.     }
  612.     
  613.     //$id_voyage = $_POST['id_voyage_serveur'];
  614.     //$page = $_POST['page'];
  615.     
  616.     $em $this->getDoctrine()->getManager();
  617.     $query_voyage $em->createQuery('SELECT v FROM App\Entity\Voyage v WHERE v.idVoyageServeur = :id AND v.idParametres = :param')
  618.                         ->setParameter('id'$id_voyage)
  619.                         ->setParameter('param'$user->getIdParametres());
  620.     $voyages $query_voyage->execute();                    
  621.     
  622.     if(empty($voyages)) 
  623.     {
  624.         return $this->redirectToRoute('trip');
  625.     }
  626.     
  627.     $voyage $voyages[0]; // resultat unique
  628.     
  629.     
  630.     //$listeMenu = $menuFetcher->menu('en', $em->getConnection());
  631.     
  632.     $sql "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays  FROM `liste_pays`";
  633.        $sql .= " INNER JOIN `liste_pays_translation` "
  634.        $sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
  635.        $sql .= " where `lang`='fr' order by `pays`";
  636.        $statement_pays $em->getConnection()->prepare($sql);
  637.        $statement_pays->execute();
  638.        $result_pays $statement_pays->fetchAll();
  639.        $liste = array();
  640.        foreach($result_pays  as $key => $value)
  641.        {
  642.         $liste[substr($value['pays'],0,10)]=$value['id_liste_pays'];
  643.        }  
  644.        
  645.     if (!isset($numEtape))
  646.         $_GET['num_etape'] = 1;
  647.     $query_etape $em->createQuery('SELECT e FROM App\Entity\Etapes e WHERE e.idVoyageServeur = :id AND e.numEtape = :numEtape')
  648.                         ->setParameter('id'$id_voyage)
  649.                         ->setParameter('numEtape'$numEtape);
  650.     $etape_temp $query_etape->execute();
  651.     if(empty($etape_temp))  
  652.     {
  653.         $etape_affiche = new Etapes();
  654.         $etape_affiche->setDateCre(new \DateTime('now'));
  655.         $etape_affiche->setIdVoyageServeur($voyage->getIdVoyageServeur());
  656.         $etape_affiche->setNumEtape($numEtape);
  657.     }
  658.     else
  659.     {
  660.         $etape_affiche $etape_temp[0];
  661.         
  662.         //var_dump($etape_affiche);
  663.              
  664.     }
  665.     
  666.     $url_photos=array();
  667.     $photo_users $this->getDoctrine()
  668.                     ->getRepository(PhotosUsers::class)
  669.                     ->findBy(['idEtapeServeur'=>$etape_affiche->getIdEtapeServeur()]);
  670.     $num_photo=1;
  671.     foreach($photo_users as $photo)
  672.     {
  673.         $url_photos[1][$num_photo]=array($photo->getIdphotoUser(),$etape_affiche->getIdEtapeServeur(),$photo->getExtension());
  674.         $num_photo++;
  675.     }
  676.     
  677.     /*
  678.     préparation du formulaire voyageForm
  679.     */
  680.     $VoyageForm $this->createFormBuilder($voyage,['attr' => ['id' => 'wizard']])
  681.         ->add('idListeSaison'ChoiceType::class, array(
  682.             'choices' => array(
  683.                     'Printemps' => '1',
  684.                     'Eté' => '2',
  685.                     'Automne' => '3',
  686.                     'Hiver' => '4',
  687.                 )))
  688.         ->add('nomVoyage'TextType::class)
  689.         ->add('detailVoyage'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'3','cols'=>'32')))
  690.         ->add('save'SubmitType::class, ['label' => 'valider'])
  691.         ->getForm();
  692. /*    $VoyageForm->handleRequest($request);
  693.     if ($VoyageForm->isSubmitted() && $VoyageForm->isValid()) 
  694.     {
  695.         $voyage->setDateMaj(new \DateTime('now'));
  696.         $voyage->setIdParametres($user->getIdParametres());
  697.         $em->persist($voyage);
  698.         $em->flush();
  699.     }*/
  700.     
  701.     /*
  702.      préparation du formulaire etapeForm
  703.     */     
  704.     $EtapeForm $this->createFormBuilder($etape_affiche)  
  705.         ->add('dateDeplacement'DateType::class)
  706.         ->add('idListePays'ChoiceType::class, array('choices'=>$liste'preferred_choices' => array($etape_affiche->getIdListePays())))
  707.         ->add('coordonneeGps'TextType::class)
  708.         ->add('adresse'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  709.         ->add('hebergement'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  710.         ->add('numEtape'IntegerType::class)
  711.         ->add('particulariteEtape'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  712.         ->add('aVoir'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  713.         ->add('aFaire'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  714.         ->add('remarque'TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
  715.         ->add('save'SubmitType::class, ['label' => 'valider'])
  716.         ->getForm();
  717. /*    $EtapeForm->handleRequest($request);
  718.     if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) 
  719.     {
  720.         $etape_affiche->setDateMaj(new \DateTime('now'));
  721.         $etape_affiche->setNumEtape(1);
  722.         $em->persist($etape_affiche);
  723.         $em->flush();
  724.     }*/
  725.     // gestion de la pagination
  726.     $id_voyage_serveur=$voyage->getIdVoyageServeur();    
  727.     $pagination $this->getCurrentStage($request$id_voyage_serveur,$em);
  728.     return $this->render('Trips/editProject.html.php', array(
  729.     'voyage'=>$voyage,
  730.     'idVoyageServeur'=>$id_voyage
  731.     'VoyageForm'=>$VoyageForm->createView(),
  732.     'EtapeForm'=>$EtapeForm->createView(),
  733.     'page'=>$numEtape,
  734.     'id_etape_serveur'=>$etape_affiche->getIdEtapeServeur(),
  735.     'url_photos'=>$url_photos,
  736.     'num_etape'=>$etape_affiche->getNumEtape(),
  737.     'credentiel'=>$user->getIdCredentiel(),
  738.     'utilisateur'=>$utilisateur,
  739.     'pagination'=>$pagination,
  740.     'user'=>$user,
  741.     'listeMenu'=>$listeMenu));
  742.      
  743. }
  744. public function saveProjet(Request $request,SessionInterface $session)
  745. {
  746.     /*
  747.     Ensemble des sénarios pour mettre à jour les tables Voyages et étapes 
  748.     */
  749.             
  750.     $user $session->get('user',null);
  751.     $last_activity $session->get('last_activity_time'null);
  752.     /*
  753.        si session utilisaateur expirée reconnexion de l'utilisateur 
  754.     */
  755.     if($user == null)
  756.     {
  757.         return $this->redirectToRoute('login');
  758.     }
  759.     
  760.     if($user && $last_activity && (time() - $last_activity) > 86400)
  761.     {
  762.         $session->clear();
  763.         $session->invalidate();
  764.         return $this->redirectToRoute('login');
  765.     }
  766.     // 
  767.     $em $this->getDoctrine()->getManager();
  768.        $sql "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays  FROM `liste_pays`";
  769.        $sql .= " INNER JOIN `liste_pays_translation` "
  770.        $sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
  771.        $sql .= " where `lang`='fr' order by `pays`";
  772.        $statement_pays $em->getConnection()->prepare($sql);
  773.        $statement_pays->execute();
  774.        $result_pays $statement_pays->fetchAll();
  775.        $liste = array();
  776.        foreach($result_pays  as $key => $value)
  777.        {
  778.         $liste[$value['pays']]=$value['id_liste_pays'];
  779.        }  
  780.     $session->set('last_activity_time'time());
  781.     $entityManager $this->getDoctrine()->getManager();
  782.     /*
  783.      update voyage 
  784.      si l'id du voyage existe il faut systématiquement faire une mise à jour 
  785.     */
  786.     
  787.     if (isset($_POST['id_voyage_serveur']) && !empty($_POST['id_voyage_serveur']))
  788.         
  789.     {
  790.     
  791.                 if ($_POST['action'] == "new")
  792.              {
  793.                  // die('je viens');
  794.                   $idVoyage $_POST['id_voyage_serveur'];
  795.                   $numEtape $_POST['numEtape'];
  796.                   $this->saveStage($request,$idVoyage,$numEtape);
  797.                   return $this->redirectToRoute('index');
  798.              }
  799.          // update par defaut de l'entité voyage
  800.          $id_voyage $_POST['id_voyage_serveur'];
  801.          $num_etape $_POST['numEtape'];
  802.          $enregVoyage $em->getRepository(Voyage::class)->find($id_voyage);
  803.          //$enregVoyage = new Voyage($voyage );
  804.         
  805.        $VoyageForm $this->createFormBuilder($enregVoyage)
  806.             ->add('idListeSaison'ChoiceType::class, array(
  807.             'choices' => array(
  808.                     'Printemps' => '1',
  809.                     'Eté' => '2',
  810.                     'Automne' => '3',
  811.                     'Hiver' => '4',
  812.                 )))
  813.             ->add('nomVoyage'TextType::class)
  814.             ->add('detailVoyage'TextareaType::class)
  815.             ->add('save'SubmitType::class, ['label' => 'valider'])
  816.             ->getForm();
  817.          $VoyageForm->handleRequest($request);
  818.          if ($VoyageForm->isSubmitted() && $VoyageForm->isValid()) {
  819.             //$enregVoyage->setDateCreation(new \DateTime('now'));
  820.             $enregVoyage->setDateMaj(new \DateTime('now'));
  821.             $enregVoyage->setIdParametres($user->getIdParametres());
  822.             
  823.             //$entityManager->persist($enregVoyage);
  824.             $entityManager->flush();
  825.             $lastId $enregVoyage->getIdVoyageServeur();
  826.         // $voyage->setDetailVoyage=$_POST['detailVoyage'];
  827.         // $voyage->setNomVoyage=$_POST['form[nomVoyage]'];   
  828.         // $voyage_>setDateMaj(new \DateTime('now'));
  829.         // $entityManager->flush();
  830.          }
  831.     /*
  832.         update de l'entité étape si num etape existe 
  833.     */
  834.         
  835.     //   on vérifie si  le numéro d'étape envoyé ou saisie existe 
  836.          if (!empty($_POST['numEtape']))
  837.             $numEtape $_POST['numEtape'];
  838.         
  839.             //die('Num etape='.$numEtape);  
  840.           
  841.          $etape=$entityManager->getRepository(Etapes::class)
  842.          ->findOneBy(['idVoyageServeur'=>$_POST['id_voyage_serveur'],'numEtape'=>$_POST['numEtape']]);
  843.          /*
  844.          echo '<pre>';
  845.          var_dump($etape);
  846.          echo '</pre>';
  847.          die();*/
  848.          
  849.           $EtapeForm $this->createFormBuilder($etape)
  850.             //->add('numEtape', IntegerType::class,array('attr'=>array('value'=>$numEtape)))
  851.                ->add('idListePays'ChoiceType::class, ['choices'=>$liste])
  852.             ->add('dateDeplacement'DateType::class)
  853.             ->add('coordonneeGps'TextType::class)
  854.             ->add('adresse'TextareaType::class)
  855.             ->add('hebergement'TextareaType::class)
  856.             ->add('particulariteEtape'TextareaType::class)
  857.             ->add('aVoir'TextareaType::class)
  858.             ->add('aFaire'TextareaType::class)
  859.             ->add('remarque'TextareaType::class)
  860.             ->add('save'SubmitType::class, ['label' => 'valider'])
  861.             ->getForm();
  862.         $EtapeForm->handleRequest($request);   
  863.         // echo 'je passe ici  encore  ';
  864.          if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) {
  865.                 // die('je soumets num etape ='.$numEtape);
  866.          if (!empty($etape))
  867.          {              
  868.             $etape->setDateMaj(new \DateTime('now'));
  869.             
  870.           }
  871.           else
  872.           {
  873.               //die('+++++++++');
  874.             $etape->setDateCre(new \DateTime('now'));
  875.             $etape->setDateMaj(new \DateTime('now'));
  876.             $etape->setIdVoyageServeur($lastId);
  877.             $etape->setNumEtape($numEtape);
  878.             $entityManager $this->getDoctrine()->getManager();
  879.             $entityManager->persist($etape); 
  880.           }
  881.            $entityManager->flush();
  882.            return $this->redirectToRoute('index');
  883.              
  884.       }
  885.     }
  886.       
  887.     /*
  888.         nouveau voyage projet 
  889.     */
  890.        $enregVoyage = new Voyage();
  891.         
  892.        $VoyageForm $this->createFormBuilder($enregVoyage)
  893.             ->add('idListeSaison'ChoiceType::class, array(
  894.             'choices' => array(
  895.                     'Printemps' => '1',
  896.                     'Eté' => '2',
  897.                     'Automne' => '3',
  898.                     'Hiver' => '4',
  899.                 )))
  900.             ->add('nomVoyage'TextType::class)
  901.             ->add('detailVoyage'TextareaType::class)
  902.             ->add('save'SubmitType::class, ['label' => 'valider'])
  903.             ->getForm();
  904.          $VoyageForm->handleRequest($request);
  905.          if ($VoyageForm->isSubmitted() && $VoyageForm->isValid()) {
  906.             $enregVoyage->setDateCreation(new \DateTime('now'));
  907.             $enregVoyage->setDateMaj(new \DateTime('now'));
  908.             $enregVoyage->setIdParametres($user->getIdParametres());
  909.             $entityManager $this->getDoctrine()->getManager();
  910.             $entityManager->persist($enregVoyage);
  911.             $entityManager->flush();
  912.             $lastId $enregVoyage->getIdVoyageServeur();
  913.         /* echo ' premier formulaire envoye';
  914.          echo '<pre>',
  915.          var_dump($VoyageForm);
  916.          echo '</pre>';*/
  917.          }
  918.     
  919.         $etape = new Etapes();
  920.         
  921.       $EtapeForm $this->createFormBuilder($etape)
  922.             ->add('numEtape'IntegerType::class)
  923.                ->add('idListePays'ChoiceType::class, ['choices'=>$liste])
  924.             ->add('dateDeplacement'DateType::class)
  925.             ->add('coordonneeGps'TextType::class)
  926.             ->add('adresse'TextareaType::class)
  927.             ->add('hebergement'TextareaType::class)
  928.             ->add('particulariteEtape'TextareaType::class)
  929.             ->add('aVoir'TextareaType::class)
  930.             ->add('aFaire'TextareaType::class)
  931.             ->add('remarque'TextareaType::class)
  932.             ->add('save'SubmitType::class, ['label' => 'valider'])
  933.             ->getForm();
  934.         $EtapeForm->handleRequest($request);
  935.          if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) {
  936.             $etape->setDateCre(new \DateTime('now'));
  937.             $etape->setDateMaj(new \DateTime('now'));
  938.             $etape->setIdVoyageServeur($lastId);
  939.             $etape->setNumEtape(1);
  940.             $entityManager $this->getDoctrine()->getManager();
  941.             $entityManager->persist($etape);
  942.             $entityManager->flush();
  943.         /* echo 'deuxieme formulaire envoye';
  944.          echo '<pre>',
  945.          var_dump($EtapeForm);
  946.          echo '</pre>';*/
  947.          }
  948.         return $this->redirectToRoute('index');
  949.     
  950. }
  951. public function saveStage(Request $request,$idVoyage,$numEtape)
  952. {
  953.    $em $this->getDoctrine()->getEntityManager();
  954.    $sql "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays  FROM `liste_pays`";
  955.    $sql .= " INNER JOIN `liste_pays_translation` "
  956.    $sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
  957.    $sql .= " where `lang`='fr' order by `pays`";
  958.    $statement_pays $em->getConnection()->prepare($sql);
  959.    $statement_pays->execute();
  960.    $result_pays $statement_pays->fetchAll();
  961.    $liste = array();
  962.        foreach($result_pays  as $key => $value)
  963.        {
  964.         $liste[$value['pays']]=$value['id_liste_pays'];
  965.        }  
  966.         $etape = new Etapes();
  967.         
  968.       $EtapeForm $this->createFormBuilder($etape)
  969.             ->add('numEtape'IntegerType::class)
  970.                ->add('idListePays'ChoiceType::class, ['choices'=>$liste])
  971.             ->add('dateDeplacement'DateType::class)
  972.             ->add('coordonneeGps'TextType::class)
  973.             ->add('adresse'TextareaType::class)
  974.             ->add('hebergement'TextareaType::class)
  975.             ->add('particulariteEtape'TextareaType::class)
  976.             ->add('aVoir'TextareaType::class)
  977.             ->add('aFaire'TextareaType::class)
  978.             ->add('remarque'TextareaType::class)
  979.             ->add('save'SubmitType::class, ['label' => 'valider'])
  980.             ->getForm();
  981.          $EtapeForm->handleRequest($request);
  982.          if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) {
  983.             $etape->setDateCre(new \DateTime('now'));
  984.             $etape->setDateMaj(new \DateTime('now'));
  985.             $etape->setIdVoyageServeur($idVoyage);
  986.             $etape->setNumEtape($numEtape);
  987.             $entityManager $this->getDoctrine()->getManager();
  988.             $entityManager->persist($etape);
  989.             $entityManager->flush();
  990.         /* echo 'deuxieme formulaire envoye';
  991.          echo '<pre>',
  992.          var_dump($EtapeForm);
  993.          echo '</pre>';*/
  994.          }
  995.     //    $this->redirectToRoute('index');
  996.     /*echo '<pre>';*/
  997. }
  998. }
  999. ?>