EasyFood est une application web de commande de repas dĂ©veloppĂ©e avec Symfony. Elle permet aux utilisateurs de parcourir une sĂ©lection de restaurants partenaires et de consulter les plats disponibles, classĂ©s par restaurant. Chaque utilisateur peut crĂ©er un compte, personnaliser ses prĂ©fĂ©rences, passer des commandes et suivre leur statut. Le systĂšme propose Ă©galement la gestion des avis, avec possibilitĂ© de noter et commenter les restaurants. Un module de notifications informe lâutilisateur des mises Ă jour importantes, tandis quâun support client via tickets permet de traiter les problĂšmes rencontrĂ©s. Des codes promotionnels peuvent ĂȘtre appliquĂ©s aux commandes pour bĂ©nĂ©ficier de rĂ©ductions. Enfin, un back-office probable permettrait aux partenaires ou administrateurs de gĂ©rer les contenus (plats, promotions, restaurants).
SystÚme de gestion de la base de données EasyFood
La base de donnĂ©es EasyFood est conĂ©Âșue pour gĂ©rer une plateforme complĂšte de commande de repas. Elle intĂšgre la gestion des utilisateurs, leurs prĂ©fĂ©rences, les restaurants partenaires et les plats proposĂ©s. Chaque plat est liĂ© Ă un restaurant et peut avoir plusieurs ingrĂ©dients. Les utilisateurs peuvent passer des commandes, laisser des avis, recevoir des notifications ou soumettre des tickets de support. Le systĂšme permet aussi lâutilisation de promotions et le traitement de messages de contact. Cette base est pensĂ©e pour couvrir Ă la fois les besoins fonctionnels front-end (commandes, avis) et back-end (gestion, modĂ©ration).
SystÚme relationnel de la base de données EasyFood
Les entitĂ©s sont fortement liĂ©es entre elles : chaque commande (order) est liĂ©e Ă un utilisateur, chaque plat (dish) Ă un restaurant, et chaque avis (review) relie un utilisateur Ă un restaurant. Des modules complĂ©mentaires enrichissent l'expĂ©rience : prĂ©fĂ©rences utilisateur, notifications, support et promotions. Le schĂ©ma relationnel est conĂ©Âșu pour assurer une traĂ©ÂșabilitĂ© complĂšte de lâactivitĂ© client. Il permet aussi une administration efficace des contenus (plats, partenaires, messages).
Le schéma montre les relations entre utilisateurs, commandes, restaurants, plats, avis et autres entités du projet EasyFood, avec toutes les clés étrangÚres bien visibles.
Passer une commande dans EasyFood
Cette fonctionnalitĂ© permet Ă un utilisateur connectĂ© de commander un plat parmi ceux proposĂ©s par les restaurants partenaires. Il accĂšde Ă un formulaire dans lequel il sĂ©lectionne un restaurant, saisit le nom du plat et la quantitĂ© dĂ©sirĂ©e. Avant de crĂ©er la commande, le systĂšme vĂ©rifie que lâutilisateur est bien authentifiĂ© et quâil a renseignĂ© une adresse de livraison. Une fois validĂ©, une nouvelle commande est créée et persistĂ©e en base via Doctrine. Lâutilisateur est ensuite redirigĂ© vers une page de confirmation qui affiche un message de remerciement. Ce processus garantit une expĂ©rience utilisateur fluide et encadrĂ©e, tout en assurant lâintĂ©gritĂ© des donnĂ©es. Il constitue un Ă©lĂ©ment central du parcours client dans EasyFood.
Affichage du formulaire de commande
Lâutilisateur accĂšde Ă la route /order qui dĂ©clenche la mĂ©thode index() du OrderController. Cette mĂ©thode rĂ©cupĂšre tous les restaurants partenaires via le PartnerRepository, puis envoie la liste Ă la vue order/index.html.twig. Le template Twig utilise cette liste pour afficher un formulaire dynamique avec un menu dĂ©roulant pour les restaurants, un champ texte pour le nom du plat et un champ numĂ©rique pour la quantitĂ©.
Code PHP du contrĂ©â€leur qui rĂ©cupĂšre les partenaires et les passe Ă la vue.
Vue Twig du formulaire de commande, avec les champs nécessaires pour saisir restaurant, plat et quantité.
Vérification des prérequis utilisateur
Lorsquâun utilisateur soumet le formulaire, la mĂ©thode create() est dĂ©clenchĂ©e. Elle vĂ©rifie si lâutilisateur est connectĂ© Ă son compte et sâil a renseignĂ© une adresse de livraison. Si ce nâest pas le cas, lâapplication interrompt le processus et redirige lâutilisateur vers la page de connexion ou son profil. Des messages flash sont utilisĂ©s pour afficher lâerreur.
Contient les vĂ©rifications dâauthentification et de prĂ©sence dâadresse avant dâautoriser la crĂ©ation de la commande.
Création et sauvegarde de la commande
Si les conditions prĂ©cĂ©dentes sont respectĂ©es, lâapplication crĂ©e une nouvelle entitĂ© Order. Celle-ci est remplie avec les donnĂ©es du formulaire (restaurant, dish, quantity) et lâadresse extraite du profil utilisateur. Lâobjet est ensuite persistĂ© et flushĂ© avec Doctrine pour enregistrer la commande en base. Un message flash confirme la rĂ©ussite de lâopĂ©ration.
Montre la construction de l'objet Order avec ses attributs remplis et son enregistrement via persist() et flush().
Affichage de la confirmation
AprĂšs la validation de la commande, lâutilisateur est redirigĂ© vers la route /order/success, qui affiche une vue success.html.twig. Cette vue contient un message de remerciement et confirme que la commande sera livrĂ©e sous peu. Cela conclut lâaction utilisateur de faĂ©Âșon claire et professionnelle.
MĂ©thode success() du contrĂ©â€leur, qui affiche la vue Twig de confirmation.
Contenu de la vue success.html.twig avec un message indiquant que la commande a été prise en compte.
Laisser un avis sur un restaurant
Cette fonctionnalitĂ© permet Ă un utilisateur connectĂ© de donner son avis sur un service ou un restaurant via un formulaire simple. L'utilisateur remplit un champ texte pour rĂ©diger son commentaire, et celui-ci est automatiquement associĂ© Ă son adresse e-mail. Lors de la soumission du formulaire, le contrĂ©â€leur Symfony crĂ©e un nouvel objet Review, le remplit avec les donnĂ©es envoyĂ©es, puis lâenregistre en base avec Doctrine. AprĂšs lâenvoi, lâutilisateur est redirigĂ© vers la page dâaccueil ou une autre destination. Une interface dĂ©diĂ©e lui permet de consulter tous les avis quâil a postĂ©s, avec la possibilitĂ© de les modifier ou de les supprimer. Lâensemble offre un systĂšme de feedback utilisateur complet, propre et facilement modĂ©rable.
Affichage du formulaire dâajout dâavis
Lâutilisateur accĂšde Ă un formulaire depuis la route /review/add. Ce formulaire permet de saisir un texte via une <textarea> nommĂ©e content. L'action du formulaire pointe directement sur la route review_add, qui dĂ©clenche le contrĂ©â€leur de traitement lors de la soumission.
Affiche le formulaire add.html.twig contenant un champ pour le contenu de lâavis et un bouton de soumission.
Traitement et enregistrement de lâavis
Lorsquâun utilisateur soumet le formulaire, la mĂ©thode add() du ReviewController est appelĂ©e. Elle crĂ©e une instance de Review, y injecte le contenu et lâemail de lâauteur, puis lâenregistre dans la base grĂłce Ă Doctrine. Cela garantit que chaque avis est bien liĂ© Ă un utilisateur authentifiĂ©.
Affiche le contrĂ©â€leur qui traite lâenvoi du formulaire, crĂ©e lâobjet Review, et effectue le persist() + flush().
Redirection aprĂšs validation
AprĂšs lâenregistrement de lâavis, lâutilisateur est automatiquement redirigĂ© vers la route home. Cela permet d'Ă©viter un double envoi et assure une continuitĂ© de navigation. La ligne de redirection est la derniĂšre instruction du bloc conditionnel.
Met en Ă©vidence la ligne de redirection vers home et la structure complĂšte du contrĂ©â€leur.
Affichage des avis existants
Dans la vue user/review.html.twig, lâutilisateur peut visualiser tous les avis quâil a publiĂ©s. Ces avis sont affichĂ©s dans un tableau contenant le contenu, la date, et deux liens pour modifier ou supprimer chaque entrĂ©e. Cela constitue lâinterface de gestion des retours utilisateurs.
Montre la boucle Twig {% for review in reviews %} qui affiche le contenu de chaque avis et les actions associées.