From 7267e0d074609c75b1096b83d4b6918b9316ab68 Mon Sep 17 00:00:00 2001
From: sacha <sachaterrasson@gmail.com>
Date: Thu, 2 Nov 2023 13:33:37 +0100
Subject: [PATCH] debut recommendation

---
 backend/src/class_film.js                 |  8 +++++++
 backend/src/class_user.js                 | 12 ++++++++++
 backend/src/controllers/recommendation.js | 29 ++++++++++++++++++++---
 backend/src/controllers/userController.js | 26 ++++++++++++++++++++
 4 files changed, 72 insertions(+), 3 deletions(-)
 create mode 100644 backend/src/class_film.js
 create mode 100644 backend/src/class_user.js

diff --git a/backend/src/class_film.js b/backend/src/class_film.js
new file mode 100644
index 0000000..29be0d2
--- /dev/null
+++ b/backend/src/class_film.js
@@ -0,0 +1,8 @@
+// jsp ou le ranger mdr
+class Movie{ 
+    constructor(name, author, note){
+        this.name = name;
+        this.author = author;
+        this.note = note;
+    }
+}
\ No newline at end of file
diff --git a/backend/src/class_user.js b/backend/src/class_user.js
new file mode 100644
index 0000000..8767afb
--- /dev/null
+++ b/backend/src/class_user.js
@@ -0,0 +1,12 @@
+// jsp ou le ranger mdr
+class User{ 
+    constructor(login){
+        this.login = login;
+    }
+
+    addMovies(movieSeen){
+        this.movies.append(movieSeen);
+    }
+
+    
+}
\ No newline at end of file
diff --git a/backend/src/controllers/recommendation.js b/backend/src/controllers/recommendation.js
index 6a008ad..f1e8e6d 100644
--- a/backend/src/controllers/recommendation.js
+++ b/backend/src/controllers/recommendation.js
@@ -1,4 +1,27 @@
 
-//1) recuperer 3 films les mieux notés
-//2) recuperer 3 films les mieux notés du meilleur auteur de l'utilisateur
-//3) recuperer 3 films les mieux notés du meilleur style de l'utilisateur
+/**
+ * Cette fonction selectionne les 3 meilleurs movies d'une liste de film.
+ *
+ * @param {Movie[]} movies - Liste de film.
+ * @returns {Movie[]} - La liste des 3 films.
+ */
+
+function top3(movies) {
+    let highestNotes = [movies[0], movies[0], movies[0]];
+    for (let i = 1; i < movies.length; i++) {
+        if(movies[i].note >= highestNotes[0].note){
+            highestNotes[2] = highestNotes[1];
+            highestNotes[1] = highestNotes[0];
+            highestNotes[0] = movies[i];
+        }else if(movies[i].note >= highestNotes[1].note){
+            highestNotes[2] = highestNotes[1];
+            highestNotes[1] = movies[i];
+        }else if(movies[i].note >= highestNotes[2].note){
+            highestNotes[2] = movies[i];
+        }
+        
+    }
+    return highestNotes;
+}
+
+
diff --git a/backend/src/controllers/userController.js b/backend/src/controllers/userController.js
index 1552b7f..4f09706 100644
--- a/backend/src/controllers/userController.js
+++ b/backend/src/controllers/userController.js
@@ -75,3 +75,29 @@ exports.login = (req, res, next) => {
 
 
 };
+
+/**
+ * Cette fonction Récupere les films d'un auteur.
+ *
+ * @param {string} author - L'auteur cherché.
+ * @param {boolean} isOrdered - Faut il trier la liste.
+ * @param {int} length - La taille de la liste (-1 = max).
+ * @returns {Film[]} - La liste des films en type Film.
+ */
+
+function getFilmsByAuthor(author, isOrdered = false, length = -1){
+    return true;
+}
+
+/**
+ * Cette fonction Récupere les films d'un Style.
+ *
+ * @param {string} style - Le style cherché.
+ * @param {boolean} isOrdered - Faut il trier la liste.
+ * @param {int} length - La taille de la liste (-1 = max).
+ * @returns {Film[]} - La liste des films en type Film.
+ */
+
+function getFilmsByStyle(style, isOrdered = false, length = -1){
+    return true;
+}
\ No newline at end of file
-- 
GitLab