From f954ae780874b7d15d806f7ae5135eb25d6447b9 Mon Sep 17 00:00:00 2001
From: sacha <sachaterrasson@gmail.com>
Date: Mon, 20 Nov 2023 09:25:24 +0100
Subject: [PATCH] =?UTF-8?q?r=C3=A9cuperation=20des=20acteurs=20et=20styles?=
 =?UTF-8?q?=20pref=C3=A9r=C3=A9s=20de=20use?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backend/src/controllers/recommendation.js | 51 +++++++++++++++++++++--
 1 file changed, 47 insertions(+), 4 deletions(-)

diff --git a/backend/src/controllers/recommendation.js b/backend/src/controllers/recommendation.js
index 2d965dc..9684f32 100644
--- a/backend/src/controllers/recommendation.js
+++ b/backend/src/controllers/recommendation.js
@@ -44,6 +44,14 @@ function recommendationForUser(user_login) {
     for (let i = 0; i < authors.length; i++) { 
         fav_authors = authors[i][0]; //recuperer seulement l'auteur, pas le reste
     }
+    let actors = getAllElements(seen, getActors).slice(0,3);
+    for (let i = 0; i < actors.length; i++) { 
+        fav_actors = actors[i][0]; //recuperer seulement l'acteur, pas le reste
+    }
+    let styles = getAllElements(seen, getStyles).slice(0,3);
+    for (let i = 0; i < styles.length; i++) { 
+        fav_styles = styles[i][0]; //recuperer seulement le style, pas le reste
+    }
 
 
 
@@ -78,10 +86,9 @@ function comparerLignes(a, b) {
  * renvoie une liste d'auteurs, avec leur nombre d'apparition dans la liste des films vus par un utilisateur, puis leur note moyenne
  *
  * @param {Movie[]} movies - Liste de film vus par un utilisateur.
- * @param {string(Movie)} recupElement - Fonction qui recupere un element d'un film (pour generaliser allAutors à allElement).
  * @returns {[[string, Number, Number]]} - La liste des auteurs.
  */
-function getAllAuthors(movies, recupElement){
+function getAllAuthors(movies){
     let authors = [[]];
     //premier indice = couple auteur/nombre d'apparition/moyenne notes films, 2e indice: 0 auteur, 1 nbr apparition, 2 mpyenne films
     for (let i = 0; i < seen.length; i++) {
@@ -107,10 +114,46 @@ function getAllAuthors(movies, recupElement){
     return authors;
 }
 
-function getAuthor(movie){
-    return movie.author;
+/**
+ * renvoie une liste d'acteurs/styles, avec leur nombre d'apparition dans la liste des films vus par un utilisateur, puis leur note moyenne
+ *
+ * @param {Movie[]} movies - Liste de film vus par un utilisateur.
+ * @param {string(Movie)} recupElement - Fonction qui recupere un element d'un film (pour generaliser à allElement) (acteurs ou styles).
+ * @returns {[[string, Number, Number]]} - La liste des auteurs.
+ */
+function getAllElement(movies, recupElement){
+    let elements = [[]];
+    //premier indice = couple element/nombre d'apparition/moyenne notes films, 2e indice: 0 auteur, 1 nbr apparition, 2 mpyenne films
+    for (let i = 0; i < seen.length; i++) {
+        let j = 0;
+        let found = false;
+        temp_elements = recupElement(seen[i]);
+        for (let h = 0; h < temp_elements.length; h++) {
+            while(j < elements.length && !found){
+                if (elements[j][0] == recupElement(temp_elements[h])) {
+                    found = true;
+                    elements[j][1] += 1;
+                    elements[j][2] += temp_elements[h].note;
+                }
+                j++;
+            }
+            if(!found){
+                elements.append([recupElement(temp_elements[h]), 1, temp_elements[h].note]);
+            }
+        }
+    }
+    for (let i = 0; i < elements.length; i++) {
+        elements[i][2] /= elements[i][1];        
+    }
+
+    elements.sort(comparerLignes);
+    return elements;
 }
 
+/*function getAuthor(movie){
+    return movie.author;
+}*/
+
 function getActors(movie){
     return movie.actors;
 }
-- 
GitLab