rachelbouhier / pizzaplanet

A website selling pizzas / technical test for Médoucine
1 stars 0 forks source link

Compréhension des besoins #1

Open rachelbouhier opened 1 year ago

rachelbouhier commented 1 year ago

Découpage :

1) Une page login

2) Une page Admin

3) Une page client

4) Une page Mes allergies

5) Mettre en place des tests unitaires

6) Rédiger le README

7) Optionnel : un script bash qui permet de setup le projet et de tout lancer

rachelbouhier commented 1 year ago

Enoncé originel :

I - Création site web Le but de l'exercice est de créer une application web de vente de pizzas. Pour y accéder, il faut s'y connecter que l'on soit un client ou gérant du site, nous aurons donc un espace administration et un espace public. Deux rôles sont possibles : ADMIN ou CLIENT L'espace administration est disponible par le rôle ADMIN uniquement L'espace public est disponible par les rôle ADMIN et CLIENT

Le site devra être en PHP 8.0 et SF6.0. Le reste est laissé à ton bon choix.

Notre site est composé de : • Une page login classique en guise de homepage o Il n'y a pas de page signin, il faudra par conséquent prévoir un script SQL permettant de remplir la BDD avec : o 1 utilisateur ADMIN o 1 utilisateur CLIENT o Le choix de l'encodage du mot de passe est libre o Les choix des mots de passe sont libres mais doivent être communiqués (pour vérifier ton test technique par la suite)

• Après authentification, si on est connecté avec un role ADMIN, on est redirigé vers l'espace administration contenant : o Une page CRUD "ingrédients" avec :  son nom  son prix o Un page CRUD "pizzas" avec :  son nom  sa photo  ses ingrédients (liste à sélection multiple directement nourrie par les ingrédients enregistrés ci-dessus)  son prix (somme des prix des ingrédients, donc non éditable) o Un menu accessible sur toutes les pages de l'espace administration avec :  le nom et le prénom affiché (sans lien)  un lien "Voir l'espace public" qui amène sur l'espace public (voir ci-dessous)  un lien "Les ingrédients" qui amène vers la page CRUD ingrédients  un lien "Les pizzas" qui amène vers la page CRUD pizzas o Le choix de la page d'accueil de l'espace administration est libre, cela peut être un dashboard, un listing des CRUDS ou bien une des deux 2 CRUDS.

• Après authentification, si on est connecté avec un rôle CLIENT, on est alors redirigé vers l'espace public contenant : o La liste des pizzas (prix, ingredients, photo) qui est la page par défaut de l'espace public  au clic sur une pizza, on arrive sur une page "commande en cours de préparation" (page statique, il n'y a pas de panier) o un menu accessible sur toutes les pages de l'espace public avec :  le nom et le prénom affiché (sans lien)  un lien "Nos pizzas" qui amène vers la page d'accueil  si l'utilisateur a un rôle ADMIN : un lien "Voir l'espace administration" qui amène sur l'espace administration  si l'utilisateur a un rôle CLIENT : un lien "Mes allergies" qui amène sur la page "Mes allergies" o une page "Mes allergies" contenant un formulaire avec une liste cochable des ingrédients existants et un bouton "Sauvegarder"  Après enregistrement, si l'utilisateur CLIENT retourne sur la liste des pizzas, une mention "Cette pizza contient des ingrédients dont vous êtes allergiques" doit être placée au dessus des pizzas qui contiennent des ingrédients qui ont été cochés dans la page "Mes allergies". De plus, les ingrédients allergènes doivent être en rouge dans cette liste.  accessible uniquement par un utilisateur ayant le rôle CLIENT

Des tests unitaires sont attendus, tu as la liberté de tester les parties qui te semblent pertinentes.

Un script bash est demandé pour :

  1. builder l'application
  2. jouer le script SQL d'import des utilisateurs
  3. lancer les tests unitaires
  4. lancer un symfony server:start Si une étape du script échoue, tout le script échoue.

Tu devras partager le code sur un repository github ou gilab avec un readme.

Tu peux prendre des libertés sur l'interprétation de l'énoncé (nom de la pizzeria, son logo). Un rendu visuel propre est attendu (menu de navigation, boutons stylisés, inputs stylisés etc...) Tu peux utiliser docker si tu le souhaites.