<?php
namespace App\Controller;
use App\Entity\Parametres;
use App\Entity\Voyage;
use App\Entity\Etapes;
use App\Entity\ListeMenu;
use App\Entity\Jaime;
use App\Entity\PhotosUsers;
use App\Entity\ListeMenuTranslation;
use App\Entity\ListeSaison;
Use App\Entity\ListeSaisonTranslation;
use App\Services\MenuFetcher;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\CountryType;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class TripsController extends Controller
{
/**
* @Route("/trips", name="trips")
*/
public function index(SessionInterface $session, MenuFetcher $menuFetcher,Request $request)
{
$user = $session->get('user',null);
/*
* controle d'accès
* l'utilisateur doit avoir au minimum un credential user ou admin
*/
if ($user && $user->getIdCredentiel() > 2)
{
$this->erreur = 2;
return $this->redirect('Authentication/index?login_user=true&erreur=2');
}
if($user == null)
{
return $this->redirectToRoute('login');
}
else
{
$utilisateur = array();
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
$em = $this->getDoctrine()->getManager();
$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");
$stmt->execute();
$mesVoyages = $stmt->fetchAll();
$listeMenu = $menuFetcher->menu('en', $em->getConnection());
$session->set('last_activity_time', time());
$page = 1; //par défaut
return $this->render('Trips/index.html.php', array(
'mesProjets' => $mesVoyages,
'listeMenu' => $listeMenu,
'page'=> $page,
'credentiel' => $user->getIdCredentiel(),
'utilisateur' => $utilisateur
));
/* return $this->json([
'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/TripsController.php',
]);*/
}
public function showTrip($credentiel=0, MenuFetcher $menuFetcher, SessionInterface $session,Request $request)
{
$langue='fr';
$nblike=0;
$nbComments=0;
// éléments du menu dynamique
$conn = $this->getDoctrine()->getManager()->getConnection();
$em = $this->getDoctrine()->getManager();
$listeMenu = $menuFetcher->menu('en',$conn);
// données utilisateurs
$id_voyage_serveur = $_GET['id_voyage_serveur'];
$id_user = $_GET['id_parametre'];
$user = $session->get('user',null);
$last_activity = $session->get('last_activity_time',null);
$langue ='fr';
if ($user && $last_activity && (time() - $last_activity) > 86400)//24h d'inactivité = expiration de la session
{
$user = null;
$session->clear();
$session->invalidate();
}
if($user)
$langue = $user->getLangue();
/*$user = $this->getDoctrine()
->getRepository(Parametres::class)
->find($id_user);*/
$utilisateur = array();
if ($user==null)
{
$credentiel=3;
$utilisateur['nom'] = 'Visitor';
$utilisateur['photo'] = 'avatar.jpg';
$utilisateur['pseudo'] = 'Visitor';
$utilisateur['prenom'] = 'Visitor';
}
else
{
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
//données du voyage
$voyage = $this->getDoctrine()
->getRepository(Voyage::class)
->find($id_voyage_serveur);
//
if (!empty($voyage))
$id_voyageur = $voyage->getIdParametres();
$voyageur = $this->getDoctrine()
->getRepository(Parametres::class)
->find($id_voyageur);
if (!empty($voyageur))
{
$utilisateur['pseudo_voyageur']=$voyageur->getPseudo();
if ($voyageur->getPhoto() != Null || $voyageur->getPhoto() !='' )
$utilisateur['photo_voyageur']=$voyageur->getPhoto();
else
$utilisateur['photo_voyageur']='avatar.jpg';
}
// voir le nombre de like sur le voyage
$nblike = $this->getNblike($id_voyage_serveur,$id_user);
// appel du moteur de pagination
$pagination = $this->getCurrentStage($request, $id_voyage_serveur,$em);
// lire les photos de l'étape
$mesEtapes = $pagination->getItems();
$url_photos=array();
$num_etape=1;
foreach ($mesEtapes as $etape)
{
// photos étape
$photo_users = $this->getDoctrine()
->getRepository(PhotosUsers::class)
->findBy(['idEtapeServeur'=>$etape->getIdEtapeServeur()]);
$num_photo=1;
foreach($photo_users as $photo)
{
//$nom_photo = 'mini_papillon'.$photo->getIdphotoUser().$etape->getIdEtapeServeur().'.'.$photo->getExtension();
$url_photos[$num_etape][$num_photo]=array($photo->getIdphotoUser(),$etape->getIdEtapeServeur(),$photo->getExtension());
$num_photo++;
}
$num_etape++;
}
$listePays = $this->getListePays($em);
$session->set('last_activity_time', time());
$locale="fr_FR";
return $this->render('Trips/showTrip.html.php', array(
'voyage'=>$voyage,
'mesEtapes'=>$pagination->getItems(),
'langue'=>$langue,
'id_saison'=>$voyage->getIdListeSaison(),
'listeMenu'=>$listeMenu,
'listePays'=>$listePays,
'credentiel'=>$credentiel,
'utilisateur'=>$utilisateur,
'pagination'=>$pagination,
'nblike'=>$nblike,
'nbComments'=>$nbComments,
'user'=>$user,
'url_photos'=>$url_photos,
'locale'=>$locale
));
}
public function getCurrentStage($request,$idVoyageServeur,$em)
{
$dql = "SELECT e FROM App\Entity\Etapes e WHERE e.idVoyageServeur ='".$idVoyageServeur."' ORDER BY e.numEtape";
$query = $em->createQuery($dql);
/**
*@var $paginator \knp\Component\Pager\Paginator
*/
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query,
$request->query->getInt('page',1),
$request->query->getInt('limit',1)
);
/* echo '<pre>';
var_dump($pagination);
echo '</pre>';
die();*/
return $pagination;
}
public function newStage(Request $request, SessionInterface $session, MenuFetcher $menuFetcher)
{
$id_voyage = $_GET['id_voyage_serveur'];
$id_etape_serveur = $_GET['id_etape_serveur'];
$num_etape_precedent = $_GET['current_sate_num'];
$user = $session->get('user',null);
if($user == null)
{
return $this->redirectToRoute('login');
}
//$id_voyage = $_POST['id_voyage_serveur'];
//$page = $_POST['page'];
$em = $this->getDoctrine()->getManager();
$query_voyage = $em->createQuery('SELECT v FROM App\Entity\Voyage v WHERE v.idVoyageServeur = :id AND v.idParametres = :param')
->setParameter('id', $id_voyage)
->setParameter('param', $user->getIdParametres());
$voyages = $query_voyage->execute();
if(empty($voyages))
{
return $this->redirectToRoute('trip');
}
$utilisateur = array();
if ($user==null)
{
$credentiel=3;
$utilisateur['nom'] = 'Visitor';
$utilisateur['photo'] = 'avatar.jpg';
$utilisateur['pseudo'] = 'Visitor';
$utilisateur['prenom'] = 'Visitor';
}
else
{
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
$voyage = $voyages[0]; // resultat unique
$listeMenu = $menuFetcher->menu('en', $em->getConnection());
$listePays = $this->getListePays($em);
$liste = $this->getListe($em);
$VoyageForm = $this->createFormBuilder($voyage)
->add('idListeSaison', ChoiceType::class, array(
'choices' => array(
'Printemps' => '1',
'Eté' => '2',
'Automne' => '3',
'Hiver' => '4',
)))
->add('nomVoyage', TextType::class)
->add('detailVoyage', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$etape_affiche = new Etapes();
$etape_affiche->setDateCre(new \DateTime('now'));
$etape_affiche->setDateDeplacement(new \DateTime('now'));
$etape_affiche->setIdVoyageServeur($voyage->getIdVoyageServeur());
$etape_affiche->setNumEtape($num_etape_precedent + 1);
//
$EtapeForm = $this->createFormBuilder($etape_affiche)
->add('dateDeplacement', DateType::class)
->add('idListePays', ChoiceType::class, array('choices'=>$liste))
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'25')))
->add('hebergement', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('numEtape', IntegerType::class)
->add('particulariteEtape', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('aVoir', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('aFaire', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('remarque', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$id_voyage_serveur=$voyage->getIdVoyageServeur();
$pagination = $this->getCurrentStage($request, $id_voyage_serveur,$em);
return $this->render('Trips/newTrip.html.php', array(
'idVoyageServeur'=>$id_voyage,
'VoyageForm'=>$VoyageForm->createView(),
'EtapeForm'=>$EtapeForm->createView(),
'page'=>$num_etape_precedent + 1,
'id_etape_serveur'=>$id_etape_serveur,
'url_photos'=>array(),
'num_etape'=>$num_etape_precedent + 1,
'credentiel'=>$user->getIdCredentiel(),
'utilisateur'=>$utilisateur,
'action'=>'new',
'pagination'=>$pagination,
'voyage'=>$voyage,
'user'=>$user,
'listeMenu'=>$listeMenu));
//echo 'id etape=>'.$id_etape_serveur;
//echo 'num etape=>'.$num_etape_precedent;
//die();
}
public function getEtapForm($etape)
{
return $EtapeForm = $this->createFormBuilder($etape_affiche)
->add('dateDeplacement', DateType::class)
->add('idListePays', ChoiceType::class, array('choices'=>$liste, 'preferred_choices' => array($etape_affiche->getIdListePays())))
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'45')))
->add('hebergement', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('numEtape', IntegerType::class)
->add('particulariteEtape', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('aVoir', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('aFaire', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('remarque', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'50')))
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
}
Public function getListePays($em)
{
$sql = "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays FROM `liste_pays`";
$sql .= " INNER JOIN `liste_pays_translation` ";
$sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
$sql .= " where `lang`='fr' order by `pays`";
$statement_pays = $em->getConnection()->prepare($sql);
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
$liste = array();
foreach($result_pays as $key => $value)
{
$liste[$value['id_liste_pays']]=$value['pays'];
}
return $liste;
}
Public function getListe($em)
{
$sql = "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays FROM `liste_pays`";
$sql .= " INNER JOIN `liste_pays_translation` ";
$sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
$sql .= " where `lang`='fr' order by `pays`";
$statement_pays = $em->getConnection()->prepare($sql);
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
$liste = array();
foreach($result_pays as $key => $value)
{
$liste[$value['pays']]=$value['id_liste_pays'];
}
return $liste;
}
Public function coment()
{
}
public function getNblike($idVoyageServeur,$id_user)
{
$jaime= $this->getDoctrine()
->getRepository(Jaime::class)
->findBy(['idParametre'=>$id_user]);
$this->user_like = true;
if (!empty($jaime))
$this->user_like = false;
/******
* compter le nombre de fois que le voyage a ét aimé
*/
$this->nblike = 0;
$enregts = $this->getDoctrine()
->getRepository(Jaime::class)
->findBy(['idVoyageServeur'=>$idVoyageServeur]);
if (!isset($enregts))
$nblike = 0;
else
$nblike = count($enregts);
return $nblike;
}
public function newProjet(Request $request, SessionInterface $session, MenuFetcher $menuFetcher)
{
$user = $session->get('user',null);
$last_activity = $session->get('last_activity_time', null);
if($user == null)
{
return $this->redirectToRoute('login');
}
if($user && $last_activity && (time() - $last_activity) > 86400)
{
$session->clear();
$session->invalidate();
return $this->redirectToRoute('login');
}
$langue = $user->getLangue();
$credentiel = $user->getIdCredentiel();
if ($user==null)
{
$credentiel=3;
$utilisateur['nom'] = 'Visitor';
$utilisateur['photo'] = 'avatar.jpg';
$utilisateur['pseudo'] = 'Visitor';
$utilisateur['prenom'] = 'Visitor';
}
else
{
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
// éléments du menu dynamique
$conn = $this->getDoctrine()->getManager()->getConnection();
$listeMenu = $menuFetcher->menu('en',$conn);
//liste pays
$sql = "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays FROM `liste_pays`";
$sql .= " INNER JOIN `liste_pays_translation` ";
$sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
$sql .= " where `lang`='fr' order by `pays`";
//echo $sql;
$statement_pays =$conn->prepare($sql);
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
$liste = array();
// liste des saisons
foreach($result_pays as $key => $value)
{
// $liste=$value;
$liste[$value['pays']]=$value['id_liste_pays'];
}
$enregVoyage = new Voyage();
$VoyageForm = $this->createFormBuilder($enregVoyage)
->add('idListeSaison', ChoiceType::class, array(
'choices' => array(
'Printemps' => '1',
'Eté' => '2',
'Automne' => '3',
'Hiver' => '4',
)))
->add('nomVoyage', TextType::class)
->add('detailVoyage', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'3','cols'=>'35')))
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$etape = new Etapes();
$EtapeForm = $this->createFormBuilder($etape)
->add('dateDeplacement', DateType::class)
->add('idListePays', ChoiceType::class, array('choices'=>$liste))
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('hebergement', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('numEtape', IntegerType::class)
->add('particulariteEtape', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('aVoir', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('aFaire', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('remarque', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$session->set('last_activity_time', time());
return $this->render('Trips/newTrip.html.php', array(
'VoyageForm'=>$VoyageForm->createView(),
'EtapeForm'=>$EtapeForm->createView(),
'langue'=>$langue,
'listeMenu'=>$listeMenu,
'num_etape'=>1,
'user'=>$user,
'utilisateur'=>$utilisateur,
'credentiel'=>$credentiel
));
}
public function editProject(Request $request, SessionInterface $session, MenuFetcher $menuFetcher)
{
/*
cette fonction permet l'édition d'un projet en vue d'une modification
*/
$conn = $this->getDoctrine()->getManager()->getConnection();
$em = $this->getDoctrine()->getManager();
// récupérer le menu
$listeMenu = $menuFetcher->menu('en',$conn);
// récupération identifiant du voyage
if($request->isMethod('GET'))
$id_voyage_serveur = $_GET['id_voyage_serveur'];
if (isset($_GET['page']) && !empty($_GET['page']))
$numEtape = $_GET['page'];
else
$numEtape=1;
$user = $session->get('user',null);
$last_activity = $session->get('last_activity_time',null);
$langue ='fr';
if ($user && $last_activity && (time() - $last_activity) > 86400)//24h d'inactivité = expiration de la session
{
$user = null;
$session->clear();
$session->invalidate();
}
if($user)
$langue = $user->getLangue();
/*$user = $this->getDoctrine()
->getRepository(Parametres::class)
->find($id_user);*/
$utilisateur = array();
if ($user==null)
{
$credentiel=3;
$utilisateur['nom'] = 'Visitor';
$utilisateur['photo'] = 'avatar.jpg';
$utilisateur['pseudo'] = 'Visitor';
$utilisateur['prenom'] = 'Visitor';
}
else
{
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
//données du voyage
if($request->isMethod('POST'))
{
$id_voyage = $_POST['id_voyage_serveur'];
}
if($request->isMethod('GET'))
{
$id_voyage = $_GET['id_voyage_serveur'];
}
$user = $session->get('user',null);
if($user == null)
{
return $this->redirectToRoute('login');
}
//$id_voyage = $_POST['id_voyage_serveur'];
//$page = $_POST['page'];
$em = $this->getDoctrine()->getManager();
$query_voyage = $em->createQuery('SELECT v FROM App\Entity\Voyage v WHERE v.idVoyageServeur = :id AND v.idParametres = :param')
->setParameter('id', $id_voyage)
->setParameter('param', $user->getIdParametres());
$voyages = $query_voyage->execute();
if(empty($voyages))
{
return $this->redirectToRoute('trip');
}
$voyage = $voyages[0]; // resultat unique
//$listeMenu = $menuFetcher->menu('en', $em->getConnection());
$sql = "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays FROM `liste_pays`";
$sql .= " INNER JOIN `liste_pays_translation` ";
$sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
$sql .= " where `lang`='fr' order by `pays`";
$statement_pays = $em->getConnection()->prepare($sql);
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
$liste = array();
foreach($result_pays as $key => $value)
{
$liste[substr($value['pays'],0,10)]=$value['id_liste_pays'];
}
if (!isset($numEtape))
$_GET['num_etape'] = 1;
$query_etape = $em->createQuery('SELECT e FROM App\Entity\Etapes e WHERE e.idVoyageServeur = :id AND e.numEtape = :numEtape')
->setParameter('id', $id_voyage)
->setParameter('numEtape', $numEtape);
$etape_temp = $query_etape->execute();
if(empty($etape_temp))
{
$etape_affiche = new Etapes();
$etape_affiche->setDateCre(new \DateTime('now'));
$etape_affiche->setIdVoyageServeur($voyage->getIdVoyageServeur());
$etape_affiche->setNumEtape($numEtape);
}
else
{
$etape_affiche = $etape_temp[0];
//var_dump($etape_affiche);
}
$url_photos=array();
$photo_users = $this->getDoctrine()
->getRepository(PhotosUsers::class)
->findBy(['idEtapeServeur'=>$etape_affiche->getIdEtapeServeur()]);
$num_photo=1;
foreach($photo_users as $photo)
{
$url_photos[1][$num_photo]=array($photo->getIdphotoUser(),$etape_affiche->getIdEtapeServeur(),$photo->getExtension());
$num_photo++;
}
/*
préparation du formulaire voyageForm
*/
$VoyageForm = $this->createFormBuilder($voyage,['attr' => ['id' => 'wizard']])
->add('idListeSaison', ChoiceType::class, array(
'choices' => array(
'Printemps' => '1',
'Eté' => '2',
'Automne' => '3',
'Hiver' => '4',
)))
->add('nomVoyage', TextType::class)
->add('detailVoyage', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'3','cols'=>'32')))
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
/* $VoyageForm->handleRequest($request);
if ($VoyageForm->isSubmitted() && $VoyageForm->isValid())
{
$voyage->setDateMaj(new \DateTime('now'));
$voyage->setIdParametres($user->getIdParametres());
$em->persist($voyage);
$em->flush();
}*/
/*
préparation du formulaire etapeForm
*/
$EtapeForm = $this->createFormBuilder($etape_affiche)
->add('dateDeplacement', DateType::class)
->add('idListePays', ChoiceType::class, array('choices'=>$liste, 'preferred_choices' => array($etape_affiche->getIdListePays())))
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('hebergement', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('numEtape', IntegerType::class)
->add('particulariteEtape', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('aVoir', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('aFaire', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('remarque', TextareaType::class,array('attr'=>array('class'=>'form-control','rows'=>'5','cols'=>'42')))
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
/* $EtapeForm->handleRequest($request);
if ($EtapeForm->isSubmitted() && $EtapeForm->isValid())
{
$etape_affiche->setDateMaj(new \DateTime('now'));
$etape_affiche->setNumEtape(1);
$em->persist($etape_affiche);
$em->flush();
}*/
// gestion de la pagination
$id_voyage_serveur=$voyage->getIdVoyageServeur();
$pagination = $this->getCurrentStage($request, $id_voyage_serveur,$em);
return $this->render('Trips/editProject.html.php', array(
'voyage'=>$voyage,
'idVoyageServeur'=>$id_voyage,
'VoyageForm'=>$VoyageForm->createView(),
'EtapeForm'=>$EtapeForm->createView(),
'page'=>$numEtape,
'id_etape_serveur'=>$etape_affiche->getIdEtapeServeur(),
'url_photos'=>$url_photos,
'num_etape'=>$etape_affiche->getNumEtape(),
'credentiel'=>$user->getIdCredentiel(),
'utilisateur'=>$utilisateur,
'pagination'=>$pagination,
'user'=>$user,
'listeMenu'=>$listeMenu));
}
public function saveProjet(Request $request,SessionInterface $session)
{
/*
Ensemble des sénarios pour mettre à jour les tables Voyages et étapes
*/
$user = $session->get('user',null);
$last_activity = $session->get('last_activity_time', null);
/*
si session utilisaateur expirée reconnexion de l'utilisateur
*/
if($user == null)
{
return $this->redirectToRoute('login');
}
if($user && $last_activity && (time() - $last_activity) > 86400)
{
$session->clear();
$session->invalidate();
return $this->redirectToRoute('login');
}
//
$em = $this->getDoctrine()->getManager();
$sql = "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays FROM `liste_pays`";
$sql .= " INNER JOIN `liste_pays_translation` ";
$sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
$sql .= " where `lang`='fr' order by `pays`";
$statement_pays = $em->getConnection()->prepare($sql);
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
$liste = array();
foreach($result_pays as $key => $value)
{
$liste[$value['pays']]=$value['id_liste_pays'];
}
$session->set('last_activity_time', time());
$entityManager = $this->getDoctrine()->getManager();
/*
update voyage
si l'id du voyage existe il faut systématiquement faire une mise à jour
*/
if (isset($_POST['id_voyage_serveur']) && !empty($_POST['id_voyage_serveur']))
{
if ($_POST['action'] == "new")
{
// die('je viens');
$idVoyage = $_POST['id_voyage_serveur'];
$numEtape = $_POST['numEtape'];
$this->saveStage($request,$idVoyage,$numEtape);
return $this->redirectToRoute('index');
}
// update par defaut de l'entité voyage
$id_voyage = $_POST['id_voyage_serveur'];
$num_etape = $_POST['numEtape'];
$enregVoyage = $em->getRepository(Voyage::class)->find($id_voyage);
//$enregVoyage = new Voyage($voyage );
$VoyageForm = $this->createFormBuilder($enregVoyage)
->add('idListeSaison', ChoiceType::class, array(
'choices' => array(
'Printemps' => '1',
'Eté' => '2',
'Automne' => '3',
'Hiver' => '4',
)))
->add('nomVoyage', TextType::class)
->add('detailVoyage', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$VoyageForm->handleRequest($request);
if ($VoyageForm->isSubmitted() && $VoyageForm->isValid()) {
//$enregVoyage->setDateCreation(new \DateTime('now'));
$enregVoyage->setDateMaj(new \DateTime('now'));
$enregVoyage->setIdParametres($user->getIdParametres());
//$entityManager->persist($enregVoyage);
$entityManager->flush();
$lastId = $enregVoyage->getIdVoyageServeur();
// $voyage->setDetailVoyage=$_POST['detailVoyage'];
// $voyage->setNomVoyage=$_POST['form[nomVoyage]'];
// $voyage_>setDateMaj(new \DateTime('now'));
// $entityManager->flush();
}
/*
update de l'entité étape si num etape existe
*/
// on vérifie si le numéro d'étape envoyé ou saisie existe
if (!empty($_POST['numEtape']))
$numEtape = $_POST['numEtape'];
//die('Num etape='.$numEtape);
$etape=$entityManager->getRepository(Etapes::class)
->findOneBy(['idVoyageServeur'=>$_POST['id_voyage_serveur'],'numEtape'=>$_POST['numEtape']]);
/*
echo '<pre>';
var_dump($etape);
echo '</pre>';
die();*/
$EtapeForm = $this->createFormBuilder($etape)
//->add('numEtape', IntegerType::class,array('attr'=>array('value'=>$numEtape)))
->add('idListePays', ChoiceType::class, ['choices'=>$liste])
->add('dateDeplacement', DateType::class)
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class)
->add('hebergement', TextareaType::class)
->add('particulariteEtape', TextareaType::class)
->add('aVoir', TextareaType::class)
->add('aFaire', TextareaType::class)
->add('remarque', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$EtapeForm->handleRequest($request);
// echo 'je passe ici encore ';
if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) {
// die('je soumets num etape ='.$numEtape);
if (!empty($etape))
{
$etape->setDateMaj(new \DateTime('now'));
}
else
{
//die('+++++++++');
$etape->setDateCre(new \DateTime('now'));
$etape->setDateMaj(new \DateTime('now'));
$etape->setIdVoyageServeur($lastId);
$etape->setNumEtape($numEtape);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($etape);
}
$entityManager->flush();
return $this->redirectToRoute('index');
}
}
/*
nouveau voyage projet
*/
$enregVoyage = new Voyage();
$VoyageForm = $this->createFormBuilder($enregVoyage)
->add('idListeSaison', ChoiceType::class, array(
'choices' => array(
'Printemps' => '1',
'Eté' => '2',
'Automne' => '3',
'Hiver' => '4',
)))
->add('nomVoyage', TextType::class)
->add('detailVoyage', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$VoyageForm->handleRequest($request);
if ($VoyageForm->isSubmitted() && $VoyageForm->isValid()) {
$enregVoyage->setDateCreation(new \DateTime('now'));
$enregVoyage->setDateMaj(new \DateTime('now'));
$enregVoyage->setIdParametres($user->getIdParametres());
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($enregVoyage);
$entityManager->flush();
$lastId = $enregVoyage->getIdVoyageServeur();
/* echo ' premier formulaire envoye';
echo '<pre>',
var_dump($VoyageForm);
echo '</pre>';*/
}
$etape = new Etapes();
$EtapeForm = $this->createFormBuilder($etape)
->add('numEtape', IntegerType::class)
->add('idListePays', ChoiceType::class, ['choices'=>$liste])
->add('dateDeplacement', DateType::class)
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class)
->add('hebergement', TextareaType::class)
->add('particulariteEtape', TextareaType::class)
->add('aVoir', TextareaType::class)
->add('aFaire', TextareaType::class)
->add('remarque', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$EtapeForm->handleRequest($request);
if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) {
$etape->setDateCre(new \DateTime('now'));
$etape->setDateMaj(new \DateTime('now'));
$etape->setIdVoyageServeur($lastId);
$etape->setNumEtape(1);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($etape);
$entityManager->flush();
/* echo 'deuxieme formulaire envoye';
echo '<pre>',
var_dump($EtapeForm);
echo '</pre>';*/
}
return $this->redirectToRoute('index');
}
public function saveStage(Request $request,$idVoyage,$numEtape)
{
$em = $this->getDoctrine()->getEntityManager();
$sql = "SELECT liste_pays.id_liste_pays, liste_pays_translation.pays FROM `liste_pays`";
$sql .= " INNER JOIN `liste_pays_translation` ";
$sql .= " ON `liste_pays_translation`.`id_liste_pays` = `liste_pays`.`id_liste_pays`";
$sql .= " where `lang`='fr' order by `pays`";
$statement_pays = $em->getConnection()->prepare($sql);
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
$liste = array();
foreach($result_pays as $key => $value)
{
$liste[$value['pays']]=$value['id_liste_pays'];
}
$etape = new Etapes();
$EtapeForm = $this->createFormBuilder($etape)
->add('numEtape', IntegerType::class)
->add('idListePays', ChoiceType::class, ['choices'=>$liste])
->add('dateDeplacement', DateType::class)
->add('coordonneeGps', TextType::class)
->add('adresse', TextareaType::class)
->add('hebergement', TextareaType::class)
->add('particulariteEtape', TextareaType::class)
->add('aVoir', TextareaType::class)
->add('aFaire', TextareaType::class)
->add('remarque', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'valider'])
->getForm();
$EtapeForm->handleRequest($request);
if ($EtapeForm->isSubmitted() && $EtapeForm->isValid()) {
$etape->setDateCre(new \DateTime('now'));
$etape->setDateMaj(new \DateTime('now'));
$etape->setIdVoyageServeur($idVoyage);
$etape->setNumEtape($numEtape);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($etape);
$entityManager->flush();
/* echo 'deuxieme formulaire envoye';
echo '<pre>',
var_dump($EtapeForm);
echo '</pre>';*/
}
// $this->redirectToRoute('index');
/*echo '<pre>';*/
}
}
?>