//Liste des valeurs valides pour le sexe d'un utilisateur const validSexes = ["h","f","a"]; //Classe pour représenter un avis laissé sur la borne que ce soit par l'interface web ou par un geste export class Review { /** * Constructeur * @param {Auteur} auteur L'auteur de l'avis * @param {Number} note La note principale entre 0 et 10 compris * @param {String} source La source de l'avis, doit être une entrée dans la table soruces de la bdd * @param {String} commentaire Le commentaire lié a l'avis * @param {Object} notesAutre Les notes secondaires laissées, sous la forme d'un object ou les clés sont les labels de chaque notes et les valeurs sont des notes entre 0 et 10 compris */ constructor(auteur, note, source, commentaire=null, notesAutre={}) { this.auteur = auteur; this.note = note; this.source = source; this.commentaire = commentaire; this.notesAutre = notesAutre; //On vérifie si toutes les données sont correctes if(note < 0 || note > 10) { throw new Error("Note principale invalide"); } for(let nom in notesAutre) { if(notesAutre[nom] < 0 || notesAutre[nom] > 10) { throw new Error("Note " + notesAutre[nom] +"/10 invalide"); } } } } //Classe qui représente l'auteur d'un avis export class Auteur { /** * Constructeur * @param {Number} age L'age de l'auteur * @param {String} sexe Le sexe de la personne (doit être dans l'array validSexes défini au début de ce fichier) */ constructor(age=null, sexe=null) { this.age = age; this.sexe = sexe; //Verification des données if(sexe != undefined && !validSexes.includes(sexe) ) { throw new Error("Sexe invalide"); } if(age != undefined && age <= 0) { throw new Error("Age invalide"); } } }