Dans cette page nous pourrons voir ce qui concerne l’implémentation des fonctionnalités liées à l’affichage de tout les voyages, leurs filtres, voyage de l’utilisateur et l’affichage des détails des voyages dans cette application de covoiturage. Les sections suivantes détailleront le code associé à ces fonctionnalités et expliqueront leur fonctionnement.

Voyages Public

Liste Voyages

La fonctionnalité d’affichage des voyages et permet aux utilisateurs de visualiser les voyages disponibles en fonction de critères spécifiques. Le code correspondant se trouve dans la classe « TravelController ». La méthode « index » est responsable de récupérer les voyages correspondant aux critères de recherche spécifiés par l’utilisateur. J’affiche les différentes information grâce à la variable que j’envoie à mon template, ensuite je boucle sur cette variable qui contient tout les voyages dans la base de données  et affiche que ceux qu’il ne sont pas déjà passé.

Filtre

Les critères de recherche sont récupérés à partir du formulaire « SearchForm » et sont passés à la méthode « findSearch » de l’objet « VoyageRepository ». Les résultats de la recherche sont ensuite affichés dans la vue « index.html.twig » dans le dossier travel.
Le formulaire de recherche affiche différents filtres permettant aux utilisateurs de spécifier leurs préférences de voyage, tels que la destination le nombre de places disponibles. Les résultats des voyages sont filtrés en fonction des critères sélectionnés par l’utilisateur. Le formulaire de recherche est créé à l’aide de la classe « SearchForm ». 

La méthode commence par construire une requête de recherche en utilisant le QueryBuilder. Les tables « voyage », « ville_depart » et « ville_arrive » sont jointes et les colonnes pertinentes sont sélectionnées.

Ensuite, des conditions sont ajoutées à la requête en fonction des critères de recherche. Par exemple, la condition « voy.heure_depart >= :currentDate » est utilisée pour exclure les voyages passés. Les critères de recherche incluent également la recherche par mot-clé, la sélection de la ville de départ et la ville d’arrivée, ainsi que la disponibilité des places dans le voyage.

Une fois que la requête est construite, elle est exécutée en utilisant la méthode « getQuery() » pour obtenir le résultat de la requête Query correspondant.

Pagination

Pour faciliter la navigation entre les résultats de recherche, la pagination est mise en place. Les voyages sont affichés par pages et les utilisateurs peuvent naviguer entre les différentes pages de résultats. La pagination est gérée à l’aide de la fonction « knp_pagination_render » de la bibliothèque KnpPaginatorBundle. On pourra préciser combien de voyage on veut sur la page; la fonction de pagination aura besoin de la requête de notre contrôleur « searchData » qui contient la page sur laquelle nous situons.

Voyages Utilisateurs

Détail voyage

La fonctionnalité d’affichage des détails d’un voyage permet aux utilisateurs de consulter les informations spécifiques d’un voyage donné. Le code associé à cette fonctionnalité se trouve également dans la classe « VoyageController ». La méthode « history » est responsable de récupérer les détails du voyage à partir de son identifiant et de les afficher. Les informations sur le voyage sont récupérées à partir de l’objet « VoyageRepository » en utilisant la méthode « findBy ». Les données récupérées sont ensuite passées à la vue « history_voyage.html.twig » pour l’affichage.

On bouclera sur le tableau voyage (correspond au voyage que l’on souhaite voir ces détail), pour afficher ces données, et on utilisera le slug contenu dans les informations du voyages afin de cacher à l’utilisateur qui souhaite voir les informations l’id, et on affichera un lien de profil pour l’utilisateur ayant posté le voyage, ainsi que les passagers.

Formulaires d'ajout

Conducteur

Une fois que l’utilisateur c’est inscrit alors il pourra devenir un conducteur s’il souhaite publier des voyages, tant qu’il n’est pas conducteur il ne possèdera que la possibilité de devenir conducteur, une fois devenu conducteur il pourra ajouter ces véhicules et ensuite publier ces premiers voyages.

Pour le moment la table conducteur ne demande que le village de résidence et l’âge, par la suite ce formulaire demandera un rib afin qui obtienne les payements des passagers et le permit de conduire qui sera vérifier par un modérateur.

Véhicules

Afin que l’utilisateur puisse proposer des voyages, il doit ajouter ces véhicules afin d’avoir cette possibilité ; une pourra accéder à la page mes véhicules ou il aura la possibilité d’en ajouter ou de voir ces véhicules actuelle, s’il voit qui ne possède plus l’un des véhicules qui a ajouter alors il pourra le supprimer

Accueil

Navbar

La navbar contient plusieurs éléments qui sont affichés en fonction de différentes conditions. Voici un aperçu de son fonctionnement :

 

Lorsque l’utilisateur n’est pas connecté voici ce qui s’affiche

  • deux liens sont affichés : « Connexion » et « Inscription ». Cela permet aux visiteurs de s’identifier ou de créer un compte.

 

Si l’utilisateur est connecté:

  • Un lien avec une icône d’enveloppe affiche le nombre de messages non lus. Si l’utilisateur a des messages non lus, le nombre est affiché à côté de l’icône.
  • Un bouton avec l’image de profil de l’utilisateur est affiché. En cliquant sur ce bouton, un menu déroulant s’ouvre avec plusieurs options :
    • Si l’utilisateur est également un conducteur, il a accès à un lien « Mes Voyages » et un lien « Mes Véhicules » qui le redirigent vers les pages correspondantes.
    • Si l’utilisateur n’est pas un conducteur, un lien « Devenir conducteur » est affiché pour l’inciter à rejoindre la communauté de conducteurs.
    • Un lien « Se déconnecter » est également présent pour permettre à l’utilisateur de se déconnecter de son compte.
  • De plus, si l’utilisateur connecté a le rôle « ROLE_ADMIN », un lien « Administration » est affiché pour accéder à l’interface d’administration.