From c19140edc0536800782957d08dc64b1fd1c7086b Mon Sep 17 00:00:00 2001 From: TheCoreDev Date: Thu, 4 Jan 2024 18:40:37 +0100 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'un=20README=20+=20les=20scrip?= =?UTF-8?q?ts=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ donnees.sql | 69 +++++++++++++++++++++++++ schema.sql | 48 +++++++++++++++++ 3 files changed, 263 insertions(+) create mode 100644 donnees.sql create mode 100644 schema.sql diff --git a/README.md b/README.md index e69de29..a3de625 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,146 @@ +# Création d'une appli Web pour lister les cadeaux souhaités par Louisa pour Noël ou son anniversaire + +## Introduction + +L'idée première était de centraliser les cadeaux que souhaitait Louisa, afin d'éviter les doublons et ne pas en oublier. + + +## Architecture du module + +``` +wishlist +├── ... +├── node_modules +│ ├── Tous les modules Node nécessaires à l'application (express, ...) +├── public +│ ├── styles.css (feuilles de style globales de l'appli) +├── views +│ ├── index.hbs (page principale affichant la liste des cadeaux) +│ ├── offrant.hbs (choix de la personne qui offre le cadeau) +│ ├── presence.hbs (juste une page qui affiche ceux qui seront présents à l'anniv de Loulou) +│ ├── reservation.hbs (saisie des infos complémentaires sur le cadeau -a-t-il été acheté ? Pour quelle occasion ? ...-) +│ ├── votre-vote.hbs (écran résultat suite aux réponses des invités de Louisa pour son anniv') +├── .env (variables globales pour la BDD) +├── donnees.sql (export des données à date) +├── package-lock.json +├── package.json +├── README.md (le présent fichier) +├── schema.sql (structure de la BDD) +├── wishlist.js (fichier principal avec le code Node JS) +``` + +## Installation des dépendances + +Exemple de commande : + +```bash +npm install bcrypt +``` + +## Description des différents écrans + +### index + +Cet écran permet d'afficher la liste des cadeaux en BDD, et toutes les infos liées à chaque cadeau (s'il est réservé, par qui, le prix du produit, sa photo, ...). +Pour chaque cadeau non encore réservé, un bouton permet d'effectuer la réservation. + +#### Accès à l'écran + +Page d'accueil du site + +#### Contrôles mis en place + +Aucun. + +#### Actions effectuées depuis cet écran + +* Au clic sur le lien hypertexte pour chaque produit, l'utilisateur est redirigé vers une nouvelle page qui présente les infos du produit. +* Au survol de la vignette, la photo du produit est affichée en plus grand. +* Au clic sur le bouton "Le réserver", chainage vers la page "offrant" + +------------------------------------------------- + +### offrant + +Dans cet écran, l'utilisateur sélectionne son nom pour indiquer qu'il souhaite réserver le cadeau. + + +#### Accès à l'écran + +* Depuis la liste des cadeaux + +#### Contrôles mis en place + +Aucun. + +#### Actions effectuées depuis cet écran + +* L'utilisateur clique sur le bouton qui correspond à son nom. +* Ensuite, il est redirigé vers la page "reservation". + +------------------------------------------------- + +### presence + +Ecran qui liste tous ceux qui ont répondu "Présent" pour l'anniversaire de Louisa. + +#### Accès à l'écran + +Via l'URL directe à saisir. + +#### Contrôles mis en place + +Aucun. + +#### Actions effectuées depuis cet écran + +Aucune. + +------------------------------------------------- + +### reservation + +Ecran dans lequel l'utilisateur (qui a choisi le cadeau et s'est identifié) doit saisir des infos complémentaires : +* A-t-il déjà acheté le cadeau ? +* Si pas acheté, qui doit acheter le produit ? +* Est-ce que l'acheteur a été remboursé ? +* Pour quelle occasion sera offert le cadeau ? Anniversaire ou Noël ? + +#### Accès à l'écran + +Après l'écran de sélection de l'offrant. + +#### Contrôles mis en place + +RAS : des cases à cocher obligent l'utilisateur de sélectionner à chaque question une valeur. + +#### Actions effectuées depuis cet écran + +* Un bouton "Retour aux cadeaux" qui permet de revenir à l'accueil +* Un bouton "Enregistrer" qui enregistre les modifs + +------------------------------------------------- + +### votre-vote + +Cet écran affiche un retour sur la réponse à l'invitation d'anniversaire de Louisa. + +Le principe : + +Chaque invité à son anniversaire s'est vu remettre un carton d'invitation avec deux QR codes : +* un généré à partir du prénom de l'enfant et d'un flag "non présent" +* un autre généré à partir du prénom de l'enfant et d'un flag "présent" + +Suivant le QR Code scanné, le parent verra apparaitre sur son navigateur le prénom de son enfant ainsi que la réponse. + +#### Accès à l'écran + +Après scan du QR code, ou via URL directe. + +#### Contrôles mis en place + +Aucun. + +#### Actions effectuées depuis cet écran + +Aucune. diff --git a/donnees.sql b/donnees.sql new file mode 100644 index 0000000..983e092 --- /dev/null +++ b/donnees.sql @@ -0,0 +1,69 @@ +INSERT INTO wishlist.anniversaire (enfant,present) VALUES + ('Nola',1), + ('Amélia',1), + ('Louisa',1), + ('Nolann',1), + ('Léa',0), + ('Emma',1), + ('Paula',1), + ('Paul',0), + ('Naomie',0); +INSERT INTO wishlist.cadeau (libelle,prix,photo,lien,achete,paye,pour_noel,emballe) VALUES + ('Coffret d''élastiques',15.00,'https://cdn.cultura.com/cdn-cgi/image/width=1280/media/pim/10139566.jpg','https://www.cultura.com/p-rainbow-loom-original-10139566.html?utm_source=google&utm_medium=cpc&utm_campaign=PMAX_Ludo_Enfant_Reste&gclid=EAIaIQobChMI-Kub997AggMV_4NoCR1W3wopEAQYAyABEgLnyvD_BwE',1,1,1,1), + ('Coffret cartes Pokémon',75.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/e710cb7ae8d0daeedc896722d2e73f534c1da76f_41122129.jpeg','https://www.joueclub.fr/jeux-de-societes/pokemon-eb12-5-coffret-ultra-premium-figurine-0820650556357.html',1,1,1,1), + ('Peluche chat',19.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu943408_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/peluches/peluches-interactives/ref-943408-peluche-smitten-kittens-pets-alive.htm?cid=Google_Paid-Search_campaign=Fil+Rouge_Google_HM_SmartShopping_Marques+Exclusives_adgroup=Marques+Exclusives_adcr=&gad_source=4',0,0,1,0), + ('VIP Pets Hair Academy',29.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu944102_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/Jeux-imitation-mondes-imaginaires/figurines-cartes-a-collectionner/ref-944102-vip-pets-hair-academy-alexia.htm',0,0,1,0), + ('Pack figurines Pokémon',34.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/1416c04cc425486e28ac7f605210ca70f29ed279_14068544.jpeg','https://www.joueclub.fr/figurines/pokemon-pack-de-8-figurines-3296580802999.html',1,1,1,1), + ('Jeu Switch Pikachu',36.99,'https://media.carrefour.fr/medias/e015adaf3fab3cbfafd142a4fc728159/p_1500x1500/0045496479633-0.jpg','https://www.carrefour.fr/p/le-retour-de-detective-pikachu-nintendo-switch-0045496479633?gad_source=1',0,1,1,0), + ('Livre Pokémon',15.95,'https://cdn.cultura.com/cdn-cgi/image/width=1280/media/pim/TITELIVE/41_9782821217140_1_75.jpg','https://www.cultura.com/p-pokemon-mon-livre-collector-une-aventure-a-paldea-9782821217140.html?utm_source=google&utm_medium=cpc&utm_campaign=PMAX_Livre_Prio&gad_source=1',1,1,0,1), + ('Poupée VIP Pets Chloé',32.99,'https://lagranderecre-lagranderecre-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/575/575/40764f334152e89e10821fe986724b524beaf721_890952_1.jpg','https://www.lagranderecre.fr/poupons-et-poupees/poupees-mannequins/poupee-vip-academie-de-coiffure-chloe.html?srsltid=AfmBOory-qN8TMZmdHOBffzGFkmJqZBN1ydOEzZ85lM1kkPdcNXeHGUb_7w',0,0,1,0), + ('Poupée Rainbow Color',39.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu943687_6_2.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/poupees-poupons/barbie-poupees-mannequin/ref-943687-poupee-rainbow-high-color-create-fashion.htm',1,1,0,1), + ('Figurines AdoptMe',22.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu944519_6_2.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/Jeux-imitation-mondes-imaginaires/figurines-cartes-a-collectionner/ref-944519-pack-6-figurines-fantasy-clan-adopt-me.htm',0,0,1,0); +INSERT INTO wishlist.cadeau (libelle,prix,photo,lien,achete,paye,pour_noel,emballe) VALUES + ('Jeu Attention aux pandas',14.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu895116_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/jeux-societes/jeux-reflexions/ref-895116-attention-aux-pandas.htm',1,1,1,1), + ('Jeu Dr Maboul Pat Patrouille',24.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu887448_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/jeux-societes/jeux-ambiance/ref-887448-docteur-maboul-pat-patrouille.htm',1,1,1,1), + ('Jeu Pokémon dresseur Mission',34.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/b33b5c0a088ceeb7ac037564c1c32c44b9caf9e6_41059373.jpeg','https://www.joueclub.fr/jeux-educatifs/pokemon-dresseur-mission-3701405803742.html',1,1,1,1), + ('Jeu Loups garous',14.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/deda21ebd3790d29d13e7c5c3873357d6778a1c2_41122124.jpeg','https://www.joueclub.fr/musiques-sons-images/flam-album-audio-interactif-les-loups-garous-3760361141213.html',0,0,1,0), + ('POKEMON - DECK COMBAT BAOJIAN EX',21.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/f8e9c27bce6df5faffdf029340de5111246a2c8f_41128025.jpeg','https://www.joueclub.fr/jeux-de-societes/pokemon-deck-combat-baojian-ex-0820650555879.html',0,0,1,0), + ('POKEMON - DECK COMBAT EX - AMPHINOBI EX OU KANGOUREX EX',21.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/1fef09e4a7a0b439ddc432f2162fde8b43489099_41095636.jpeg','https://www.joueclub.fr/jeux-de-societes/pokemon-deck-combat-ex-amphinobi-ex-ou-kangourex-ex-0820650556050.html',1,1,1,1), + ('GEOMAG - ECOFRIENDLY 78 PIECES PANELS SUPERCOLOR',44.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/007438a8c8cf2401961021457380190499078c32_41000801.jpeg','https://www.joueclub.fr/jeux-de-constructions-maquettes/geomag-ecofriendly-78-pieces-panels-supercolor-0871772003793.html',1,1,1,1), + ('Tube PLUS PLUS - avec des pièces dorées et argentées',6.99,'https://joueclub-joueclub-fr-storage.omn.proximis.com/Imagestorage/imagesSynchro/463/429/2aa2e483d384c90b666baea755180700d1313292_41095520.jpeg','https://www.joueclub.fr/jeux-de-constructions-maquettes/plus-plus-jeu-de-construction-tube-pirate-100-pieces-5710409107020.html',0,1,1,0), + ('YANI 30pcs Pokemon Figurines de 3-5cm',29.99,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/81NWURADcIL._AC_SL1500_.jpg','https://www.amazon.fr/YANI-Pokemon-Figurines-r%C3%A9p%C3%A9tition-Rangement/dp/B0CK2S4W7B/ref=sr_1_31?adgrpid=1360097719411163&hvadid=85006537389920&hvbmt=be&hvdev=c&hvlocphy=66&hvnetw=s&hvqmt=e&hvtargid=kwd-85007240376587%3Aloc-66&hydadcr=13318_2282558&keywords=8%2Bfigurines%2Bpok%C3%A9mon&qid=1699558535&sr=8-31&th=1',1,1,1,1), + ('Pokemon Figurine Jouet 8Pack Figurine 5-11 cm',47.99,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/81a2r7dxYeL._AC_SL1500_.jpg','https://www.amazon.fr/Pokemon-Figurine-Jouet-8Pack-5-11/dp/B09NT95337/ref=sr_1_19_sspa?adgrpid=1360097719411163&hvadid=85006537389920&hvbmt=be&hvdev=c&hvlocphy=66&hvnetw=s&hvqmt=e&hvtargid=kwd-85007240376587%3Aloc-66&hydadcr=13318_2282558&keywords=8+figurines+pok%C3%A9mon&qid=1699558535&sr=8-19-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9tdGY&psc=1',0,0,1,0); +INSERT INTO wishlist.cadeau (libelle,prix,photo,lien,achete,paye,pour_noel,emballe) VALUES + ('Lot de 144 mini figurines Pokémon en PVC - Statuette Pokémon Pop',22.99,'https://m.media-amazon.com/images/I/61l9bQSq2OL._AC_.jpg','https://www.amazon.fr/Lot-144-mini-figurines-Pok%C3%A9mon/dp/B0CKLTHC2X/ref=pd_vtp_h_pd_vtp_h_sccl_5/259-1817293-0373712?pd_rd_w=NRMzj&content-id=amzn1.sym.f66a82f4-7276-4231-ba6b-c00184d21fe0&pf_rd_p=f66a82f4-7276-4231-ba6b-c00184d21fe0&pf_rd_r=K679TAHFE6DRH10A47TH&pd_rd_wg=d58oD&pd_rd_r=e58fab45-c726-4c52-8b59-cb009a2138a6&pd_rd_i=B0CKLTHC2X&psc=1',0,0,1,0), + ('Poupée Miraculous',20.00,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/71GjnqjyTwL._AC_SL1500_.jpg','https://www.amazon.fr/Bandai-Miraculous-Marinette-articul%C3%A9e-Surprises/dp/B0BS9SVB55/ref=asc_df_B0BS9SVB55/?tag=googshopfr-21&linkCode=df0&hvadid=554851244787&hvpos=&hvnetw=g&hvrand=18051163504363436181&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9110130&hvtargid=pla-1947562984920&psc=1&mcid=56f88fb297e23a5dbd0f95da062f6b0f',1,1,1,1), + ('Poupée LOL Magic Flyers',40.00,'https://cdn.cultura.com/cdn-cgi/image/width=1280/media/pim/0035051593430.png','https://www.cultura.com/p-l-o-l-surprise-magic-flyers-poupees-volantes-7-5cm-modele-aleatoire-10232774.html?utm_source=google&utm_medium=cpc&utm_campaign=PMAX_Ludo_Enfant_Reste&gclid=EAIaIQobChMIkJ_-5uLAggMVGYVoCR29IQUsEAQYAiABEgKi4vD_BwE',1,1,0,1), + ('Cherche et trouve Pokémon',19.95,'https://m.media-amazon.com/images/W/MEDIAX_792452-T1/images/I/71E+p20bWmL._SL1500_.jpg','https://www.amazon.fr/Pok%C3%A9mon-grand-jeu-cherche-trouve/dp/2821206755/ref=asc_df_2821206755/?tag=googshopfr-21&linkCode=df0&hvadid=194872438775&hvpos=&hvnetw=g&hvrand=8069648964385930394&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9110130&hvtargid=pla-277307586168&psc=1&mcid=ae3d1499173830ea81ee2dd8a5dd2e0d',1,1,0,1), + ('Furby',30.00,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu944293_6.jpg?frz-v=3102','https://www.king-jouet.com/jeu-jouet/peluches/peluches-interactives/ref-944293-furby-violet.htm?cid=Google_Paid-Search_campaign=Fil+Rouge_Google_HM_SmartShopping_Top500_adgroup=Top+500+produits_adcr=PRODUCT_GROUP&gclid=EAIaIQobChMIu-DPhObAggMVyZHVCh1IOgwYEAQYCCABEgK3w_D_BwE&gclsrc=aw.ds',1,1,0,1), + ('Cahier Pokémon 252 cartes A4 Écarlate et Violet 3',18.99,'https://www.king-jouet.com/fstrz/r/s/images.king-jouet.com/6/gu942442_6.jpg?frz-v=3131','https://www.king-jouet.com/jeu-jouet/jeux-societes/cartes-a-collectionner/ref-942442-cahier-pokemon-252-cartes-a4-ecarlate-et-violet-3.htm',0,0,0,0); +INSERT INTO wishlist.participant (prenom) VALUES + ('Yaya'), + ('Céline'), + ('Les parents'), + ('Vio'), + ('Néna'), + ('Tatie Pierrot'), + ('Pépé'), + ('Matthieu et Sophie'), + ('Emilie et Rodrick'); +INSERT INTO wishlist.participations (offrant,cadeau,responsable_achat) VALUES + (3,2,3), + (3,26,3), + (8,14,3), + (3,24,3), + (3,25,3), + (3,27,3), + (7,15,3), + (7,8,3), + (2,13,3), + (2,10,3); +INSERT INTO wishlist.participations (offrant,cadeau,responsable_achat) VALUES + (2,21,3), + (2,7,3), + (2,20,3), + (1,3,1), + (5,19,1), + (4,6,1), + (1,18,1), + (9,28,3); diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..c8b1eac --- /dev/null +++ b/schema.sql @@ -0,0 +1,48 @@ +CREATE DATABASE `wishlist` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci */; + +use `wishlist`; + +-- wishlist.anniversaire definition + +CREATE TABLE `anniversaire` ( + `enfant` varchar(50) DEFAULT NULL, + `present` tinyint(1) DEFAULT 0 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + + +-- wishlist.cadeau definition + +CREATE TABLE `cadeau` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `libelle` varchar(100) NOT NULL, + `prix` decimal(10,2) NOT NULL, + `photo` varchar(200) NOT NULL, + `lien` varchar(500) NOT NULL, + `achete` tinyint(1) DEFAULT 0, + `paye` tinyint(1) DEFAULT 0, + `pour_noel` tinyint(1) DEFAULT 1, + `emballe` tinyint(1) DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + + +-- wishlist.participant definition + +CREATE TABLE `participant` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `prenom` varchar(50) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; + + +-- wishlist.participations definition + +CREATE TABLE `participations` ( + `offrant` int(11) NOT NULL, + `cadeau` int(11) NOT NULL, + `responsable_achat` int(11) DEFAULT NULL, + KEY `participations_FK` (`cadeau`), + KEY `participations_FK_1` (`offrant`), + CONSTRAINT `participations_FK` FOREIGN KEY (`cadeau`) REFERENCES `cadeau` (`id`), + CONSTRAINT `participations_FK_1` FOREIGN KEY (`offrant`) REFERENCES `participant` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; \ No newline at end of file