# TP Web-Serveur [ToC] ## :poop: :gun: :dog: Partie 1 ### Quelles sont les fonctionnalités qui vous semblent importantes ? * Rajouter une *gommette* à un élève donné. * Ajouter un commentaire. * Sauvegarder les *gommette* dans une base de donnée pour garder une trace des ajouts. * Mettre en place un carnet numérique par élève. ### Quelles vont être les principales classes de votre application ? >* Une classe **Gommette** >* Une classe **Professeur** >* Une classe **Elève** ### Quelles vont être les tables de votre base de données ? Vous pouvez produire un diagramme UML pour mettre au clair les jointures entre les tables, mais c'est facultatif. Notre base de données possède les table suivantes: Professeur | Gommette | Elève | Date | Commentaire <!-- // Sweet Class Diagram // ------------------- // Chain elements like this [Professor]-0..*>[Student] [Professor]-^[Personne] [Student]-^[Personne] // Add notes //[Carnet]-[note: Aggregate Root ala DDD] // Add more detail [Student|- idStudent: int] [Gommette|- couleur: Color;- Description: String] [Professor|- idProfesseur: int|- createGommette(color: Color, desc: String): boolean;- deleteGommette(color: Color, desc: String): boolean;- updateGommette(targetColor: Color, targetDesc: String, newColor: Color, newDesc: String): boolean;- createStudent(student: Student): boolean;- deleteStudent(student: Student): boolean;- updateStudent(student: Student, firstname: String, lastname: String, birthdate: DateTime): boolean;- addStudentGommette(student: Student, gommette: Gommette, motif: String): boolean;- deleteStudentGomette(student: Student, gommette: Gommette, date: DateTime): boolean] [Personne|- firstname: String;- lastname: String;- birthdate: DateTime;/ age: int] [<<Enumeration>>; Color|GREEN;WHITE;RED] --> #### Diagramme UML correspondant ![Diagramme UML correspondant](https://i.imgur.com/dQkrO0e.png) ### Quelles solutions technologiques envisagez vous ? ## Partie 2 ### Dans le TP précédent, nous avons défini nos entités, nos tables et les relations entre ces dernières. La dernière étape avant de commencer à coder est de définir la structure de notre site : comment les pages vont-elles être agencées, et quels seront leurs liens d'accès ? * `GET /login` va afficher la mire de connexion et `POST /login` permet de se connecter * `GET /students` pour récupérer la liste des élèves, `DELETE /students/:idStudent` pour supprimer un élève, `POST /students/:student` pour ajouter un élève, `PATCH /students/:idStudent` pour modifier un élève * `GET /gommettes/:gommette` pour obtenir la liste des gommettes, `DELETE /gommettes/:gommette` pour supprimer une gommette, `POST /gommettes/:gommette` pour ajouter une gommette à la liste des gommettes, `PATCH /gommettes/:gommette` pour modifier une gommette * `POST /students/:idStudent/:gommettes/:gommette` pour ajouter une gommette à un élève, `DELETE /students/:idStudent/:gommettes/:gommette` pour supprimer la gommette d'un élève * `GET /students/idStudent/gommettes` pour lister les gommettes d'un élève, `GET /studentGommette/gommette/attributor` obtenir l'attributteur d'une gommette * `GET /students/idStudent/gommettes` pour obtenir la liste des gommettes, `GET /students/idStudent/gommettes` obtenir l'attributteur d'une gommette