Files
Telereview/code/reviews_api/borne/structures.js
2023-04-02 20:28:12 +02:00

62 lines
2.4 KiB
JavaScript

//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");
}
}
}
//Appelle l'API de traitement du langage pour attribuer une note au commentaire
async analyzeComment() {
let res = await fetch("http://"+process.env.ANALYZER_HOST + ":" + process.env.ANALYZER_PORT, {
method: "POST",
body: this.commentaire
})
let grade = await res.text();
this.notesAutre["analyse"] =grade;
}
}
//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");
}
}
}