# 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

### 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