From 79db066a037332d3b5b1af8a2aea6363478edf46 Mon Sep 17 00:00:00 2001 From: Matheo HERSAN Date: Fri, 26 May 2023 10:01:30 +0200 Subject: [PATCH 1/5] start Debug --- MangaMap/App.xaml.cs | 7 ++++--- MangaMap/Model/Manager.cs | 16 +++++++++++----- MangaMap/Model/Utilisateur.cs | 7 +++++++ MangaMap/Stub/Stub.cs | 4 +++- MangaMap/Views/FicheAnime.xaml.cs | 9 +++++++++ MangaMap/Views/listPage.xaml | 1 - MangaMap/Views/loginPage.xaml.cs | 4 ++-- 7 files changed, 36 insertions(+), 12 deletions(-) diff --git a/MangaMap/App.xaml.cs b/MangaMap/App.xaml.cs index d992022..d0dfd42 100644 --- a/MangaMap/App.xaml.cs +++ b/MangaMap/App.xaml.cs @@ -19,11 +19,12 @@ public partial class App : Application if (File.Exists(Path.Combine(FilePath, FileName))) { - MyManager = new Manager(new Stub.DataContract()); //pour utiliser le dataContract comme moyen de persistance. + MyManager = new Manager(new Stub.Stub()); //pour utiliser le dataContract comme moyen de persistance. } - MyManager.charger(); + //MyManager.charger(); MyManager.Admins.Add(MyAdmin); + MyManager.UtilisateurActuel = MyManager.charger(); MainPage = new AppShell(); @@ -32,7 +33,7 @@ public partial class App : Application MyManager.Persistance = new DataContract(); //pour utiliser le stub comme moyen de persistance. } - MyManager.sauvegarder(); + //MyManager.sauvegarder(); Console.WriteLine("sauvegarde faite"); } } diff --git a/MangaMap/Model/Manager.cs b/MangaMap/Model/Manager.cs index 223bb2b..9d9b3e2 100644 --- a/MangaMap/Model/Manager.cs +++ b/MangaMap/Model/Manager.cs @@ -30,19 +30,25 @@ namespace MangaMap.Model Admins = new List(); Utilisateurs = new List(); Oeuvres = new List(); - UtilisateurActuel = null; + UtilisateurActuel = new Utilisateur(); } - public void charger() + public Utilisateur charger() { - var donne = Persistance.chargeDonne(); - foreach (var item in donne.Item1) + var donnees = Persistance.chargeDonne(); + foreach (var item in donnees.Item1) { Oeuvres.Add(item); } - Utilisateurs.AddRange(donne.Item2); + Utilisateurs.AddRange(donnees.Item2); + + // récupérer le premier utilisateur de la liste Utilisateurs : + Utilisateur utilisateurActuel = Utilisateurs.FirstOrDefault(); + + return utilisateurActuel; // Renvoyez l'utilisateur actuel } + public void sauvegarder() { Persistance.sauvegarder(Oeuvres, Utilisateurs); diff --git a/MangaMap/Model/Utilisateur.cs b/MangaMap/Model/Utilisateur.cs index c0b79c1..57079ab 100644 --- a/MangaMap/Model/Utilisateur.cs +++ b/MangaMap/Model/Utilisateur.cs @@ -40,6 +40,13 @@ namespace MangaMap.Model ListeOeuvreFavorites = new List(); } + public Utilisateur() { + ListeOeuvreEnVisionnage = new List(); + ListeOeuvreDejaVu = new List(); + ListeOeuvrePourPlusTard = new List(); + ListeOeuvreFavorites = new List(); + } + public void SupprimerUtilisateur() { this.nom = null; diff --git a/MangaMap/Stub/Stub.cs b/MangaMap/Stub/Stub.cs index 7da9893..10d0e3d 100644 --- a/MangaMap/Stub/Stub.cs +++ b/MangaMap/Stub/Stub.cs @@ -17,7 +17,7 @@ namespace MangaMap.Stub List l1 = new List(); List l2 = new List(); - Utilisateur u1 = new Utilisateur("test@test.ts", "Pseudo1", "MotDePasse123", "Jean", "Baptiste", 12); + Utilisateur u1 = new Utilisateur("t", "Pseudo1", "123", "Jean", "Baptiste", 12); Utilisateur u2 = new Utilisateur("test@test.ts", "Pseudo2", "MotDePasse123", "Baptiste", "Jean", 12); Utilisateur u3 = new Utilisateur("test@test.ts", "Pseudo3", "MotDePasse123", "David", "Marc", 12); List genres = new List(); @@ -29,6 +29,8 @@ namespace MangaMap.Stub l1.Add(o1); l1.Add(o2); l2.Add(u1); l2.Add(u2); l2.Add(u3); + u1.ListeOeuvreEnVisionnage.Add(o1); + return (l1, l2); } diff --git a/MangaMap/Views/FicheAnime.xaml.cs b/MangaMap/Views/FicheAnime.xaml.cs index 2cda192..6f7ad15 100644 --- a/MangaMap/Views/FicheAnime.xaml.cs +++ b/MangaMap/Views/FicheAnime.xaml.cs @@ -1,6 +1,7 @@ namespace MangaMap.Views; using Model; using System.ComponentModel; +using System.Diagnostics; using System.Xml.Linq; public partial class ficheAnime : ContentPage, INotifyPropertyChanged @@ -35,7 +36,15 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged return; } + if (my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage == null) + { + // Initialisez la liste si elle est nulle + //my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage = new List(); + } + Debug.WriteLine("Iciii"); + my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Add(AnimeModel); + Debug.WriteLine("Okkkkkkkkkkkk"); // Naviguez vers la page de la fiche d'anime en passant l'objet sélectionné await Navigation.PushAsync(new listPage()); } diff --git a/MangaMap/Views/listPage.xaml b/MangaMap/Views/listPage.xaml index 48591f9..f2f1fc2 100644 --- a/MangaMap/Views/listPage.xaml +++ b/MangaMap/Views/listPage.xaml @@ -40,7 +40,6 @@ - diff --git a/MangaMap/Views/loginPage.xaml.cs b/MangaMap/Views/loginPage.xaml.cs index 5a52a7c..f1a548c 100644 --- a/MangaMap/Views/loginPage.xaml.cs +++ b/MangaMap/Views/loginPage.xaml.cs @@ -27,11 +27,11 @@ public partial class loginPage : ContentPage } // Vérifier que l'e-mail a la bonne forme - if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) + /*if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) { await DisplayAlert("Erreur", "L'email n'est pas valide.", "OK"); return; - } + }*/ // Vérifier que l'utilisateur existe Utilisateur utilisateur = my_manager.Utilisateurs.FirstOrDefault(u => u.Email == email && u.MotDePasse == password); From 8c5f7872be17026297bbadc907e06c122ec2e9e4 Mon Sep 17 00:00:00 2001 From: Matheo HERSAN Date: Fri, 26 May 2023 13:56:13 +0200 Subject: [PATCH 2/5] Resolved the bug --- MangaMap/Views/listPage.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MangaMap/Views/listPage.xaml b/MangaMap/Views/listPage.xaml index f2f1fc2..6f22f68 100644 --- a/MangaMap/Views/listPage.xaml +++ b/MangaMap/Views/listPage.xaml @@ -39,7 +39,7 @@ - + @@ -51,7 +51,7 @@ - + From 561a57ff6ff8639b32fd7d695588c59b2ac2862f Mon Sep 17 00:00:00 2001 From: Matheo HERSAN Date: Fri, 26 May 2023 14:12:45 +0200 Subject: [PATCH 3/5] Adding to a list works almost entirely --- MangaMap/App.xaml.cs | 8 +-- MangaMap/Model/Manager.cs | 13 +++- MangaMap/Model/Utilisateur.cs | 110 +++++++++++++++---------------- MangaMap/Views/loginPage.xaml.cs | 4 +- 4 files changed, 73 insertions(+), 62 deletions(-) diff --git a/MangaMap/App.xaml.cs b/MangaMap/App.xaml.cs index d0dfd42..bc05b10 100644 --- a/MangaMap/App.xaml.cs +++ b/MangaMap/App.xaml.cs @@ -19,12 +19,12 @@ public partial class App : Application if (File.Exists(Path.Combine(FilePath, FileName))) { - MyManager = new Manager(new Stub.Stub()); //pour utiliser le dataContract comme moyen de persistance. + MyManager = new Manager(new Stub.DataContract()); //pour utiliser le dataContract comme moyen de persistance. } - //MyManager.charger(); + MyManager.charger(); MyManager.Admins.Add(MyAdmin); - MyManager.UtilisateurActuel = MyManager.charger(); + //MyManager.UtilisateurActuel = MyManager.charger(); MainPage = new AppShell(); @@ -33,7 +33,7 @@ public partial class App : Application MyManager.Persistance = new DataContract(); //pour utiliser le stub comme moyen de persistance. } - //MyManager.sauvegarder(); + MyManager.sauvegarder(); Console.WriteLine("sauvegarde faite"); } } diff --git a/MangaMap/Model/Manager.cs b/MangaMap/Model/Manager.cs index 9d9b3e2..e2d2e6a 100644 --- a/MangaMap/Model/Manager.cs +++ b/MangaMap/Model/Manager.cs @@ -33,7 +33,7 @@ namespace MangaMap.Model UtilisateurActuel = new Utilisateur(); } - public Utilisateur charger() + /*public Utilisateur charger() { var donnees = Persistance.chargeDonne(); foreach (var item in donnees.Item1) @@ -46,9 +46,20 @@ namespace MangaMap.Model Utilisateur utilisateurActuel = Utilisateurs.FirstOrDefault(); return utilisateurActuel; // Renvoyez l'utilisateur actuel + }*/ + + public void charger() + { + var donne = Persistance.chargeDonne(); + foreach (var item in donne.Item1) + { + Oeuvres.Add(item); + } + Utilisateurs.AddRange(donne.Item2); } + public void sauvegarder() { Persistance.sauvegarder(Oeuvres, Utilisateurs); diff --git a/MangaMap/Model/Utilisateur.cs b/MangaMap/Model/Utilisateur.cs index 57079ab..750614a 100644 --- a/MangaMap/Model/Utilisateur.cs +++ b/MangaMap/Model/Utilisateur.cs @@ -1,57 +1,57 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; - -namespace MangaMap.Model -{ - [DataContract] - public class Utilisateur : Personne - { - [DataMember] - public string nom { get; private set; } - [DataMember] - public string prenom { get; private set; } - [DataMember] - public int age { get; private set; } - [DataMember] - public List ListeOeuvreEnVisionnage { get; set; } - [DataMember] - public List ListeOeuvreDejaVu { get; private set; } - [DataMember] - public List ListeOeuvrePourPlusTard { get; private set; } - [DataMember] - public List ListeOeuvreFavorites { get; private set; } - - public Utilisateur(string email, string pseudo, string mdp, string nom, string prenom, int age) - { - Email = email; - Pseudo = pseudo; - MotDePasse = mdp; - this.nom = nom; - this.prenom = prenom; - this.age = age; - - ListeOeuvreEnVisionnage = new List(); - ListeOeuvreDejaVu = new List(); - ListeOeuvrePourPlusTard = new List(); - ListeOeuvreFavorites = new List(); - } - +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace MangaMap.Model +{ + [DataContract] + public class Utilisateur : Personne + { + [DataMember] + public string nom { get; private set; } + [DataMember] + public string prenom { get; private set; } + [DataMember] + public int age { get; private set; } + [DataMember] + public List ListeOeuvreEnVisionnage { get; set; } + [DataMember] + public List ListeOeuvreDejaVu { get; private set; } + [DataMember] + public List ListeOeuvrePourPlusTard { get; private set; } + [DataMember] + public List ListeOeuvreFavorites { get; private set; } + + public Utilisateur(string email, string pseudo, string mdp, string nom, string prenom, int age) + { + Email = email; + Pseudo = pseudo; + MotDePasse = mdp; + this.nom = nom; + this.prenom = prenom; + this.age = age; + + ListeOeuvreEnVisionnage = new List(); + ListeOeuvreDejaVu = new List(); + ListeOeuvrePourPlusTard = new List(); + ListeOeuvreFavorites = new List(); + } + public Utilisateur() { - ListeOeuvreEnVisionnage = new List(); - ListeOeuvreDejaVu = new List(); - ListeOeuvrePourPlusTard = new List(); - ListeOeuvreFavorites = new List(); - } - - public void SupprimerUtilisateur() - { - this.nom = null; - this.prenom = null; - this.age = 0; - } - } + ListeOeuvreEnVisionnage = new List(); + ListeOeuvreDejaVu = new List(); + ListeOeuvrePourPlusTard = new List(); + ListeOeuvreFavorites = new List(); + } + + public void SupprimerUtilisateur() + { + this.nom = null; + this.prenom = null; + this.age = 0; + } + } } \ No newline at end of file diff --git a/MangaMap/Views/loginPage.xaml.cs b/MangaMap/Views/loginPage.xaml.cs index f1a548c..5a52a7c 100644 --- a/MangaMap/Views/loginPage.xaml.cs +++ b/MangaMap/Views/loginPage.xaml.cs @@ -27,11 +27,11 @@ public partial class loginPage : ContentPage } // Vérifier que l'e-mail a la bonne forme - /*if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) + if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) { await DisplayAlert("Erreur", "L'email n'est pas valide.", "OK"); return; - }*/ + } // Vérifier que l'utilisateur existe Utilisateur utilisateur = my_manager.Utilisateurs.FirstOrDefault(u => u.Email == email && u.MotDePasse == password); From 708a7f06959d9dcd2c9aec15f812bb7f45fde4eb Mon Sep 17 00:00:00 2001 From: Matheo HERSAN Date: Fri, 26 May 2023 14:12:51 +0200 Subject: [PATCH 4/5] Adding to a list works almost entirely --- MangaMap/Stub/Stub.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MangaMap/Stub/Stub.cs b/MangaMap/Stub/Stub.cs index 10d0e3d..25c19a1 100644 --- a/MangaMap/Stub/Stub.cs +++ b/MangaMap/Stub/Stub.cs @@ -17,7 +17,7 @@ namespace MangaMap.Stub List l1 = new List(); List l2 = new List(); - Utilisateur u1 = new Utilisateur("t", "Pseudo1", "123", "Jean", "Baptiste", 12); + Utilisateur u1 = new Utilisateur("test@test.tst", "Pseudo1", "MotDePasse123", "Jean", "Baptiste", 12); Utilisateur u2 = new Utilisateur("test@test.ts", "Pseudo2", "MotDePasse123", "Baptiste", "Jean", 12); Utilisateur u3 = new Utilisateur("test@test.ts", "Pseudo3", "MotDePasse123", "David", "Marc", 12); List genres = new List(); From 4e0c2fb740a4e7f819d9eea3faf9f0d49b73b63a Mon Sep 17 00:00:00 2001 From: Matheo HERSAN Date: Fri, 26 May 2023 15:22:50 +0200 Subject: [PATCH 5/5] Button working --- MangaMap/Stub/DataToPersist.cs | 1 + MangaMap/Views/FicheAnime.xaml.cs | 43 ++++++++++++++++++++++++++----- MangaMap/Views/listPage.xaml | 3 ++- MangaMap/Views/listPage.xaml.cs | 3 +++ 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/MangaMap/Stub/DataToPersist.cs b/MangaMap/Stub/DataToPersist.cs index 2e5386e..ef26f80 100644 --- a/MangaMap/Stub/DataToPersist.cs +++ b/MangaMap/Stub/DataToPersist.cs @@ -12,5 +12,6 @@ namespace MangaMap.Stub { public List Oeuvres { get; set; } = new List(); public List Utilisateurs { get; set; } = new List(); + } } diff --git a/MangaMap/Views/FicheAnime.xaml.cs b/MangaMap/Views/FicheAnime.xaml.cs index 6f7ad15..ea5f9ac 100644 --- a/MangaMap/Views/FicheAnime.xaml.cs +++ b/MangaMap/Views/FicheAnime.xaml.cs @@ -28,6 +28,8 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged this.BindingContext = this; } + + public async void AjouterListe(object sender, EventArgs e) { if (my_manager.UtilisateurActuel == null) @@ -36,19 +38,46 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged return; } - if (my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage == null) + string selectedOption = await DisplayActionSheet("Ajouter à quelle liste ?", "Annuler", null, "En Visionnage", "Déjà Vu", "Pour Plus Tard", "Favoris"); + + if (selectedOption == "Annuler") + return; + + Debug.WriteLine("Selected Option: " + selectedOption); + + // Ajouter l'anime à la liste sélectionnée + switch (selectedOption) { - // Initialisez la liste si elle est nulle - //my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage = new List(); + case "En Visionnage": + Debug.WriteLine("Ajout à la liste En Visionnage"); + my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Add(AnimeModel); + break; + case "Déjà Vu": + Debug.WriteLine("Ajout à la liste Déjà Vu"); + my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Add(AnimeModel); + break; + case "Pour Plus Tard": + Debug.WriteLine("Ajout à la liste Pour Plus Tard"); + my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Add(AnimeModel); + break; + case "Favoris": + Debug.WriteLine("Ajout à la liste Favoris"); + my_manager.UtilisateurActuel.ListeOeuvreFavorites.Add(AnimeModel); + break; } - Debug.WriteLine("Iciii"); - my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Add(AnimeModel); - Debug.WriteLine("Okkkkkkkkkkkk"); - // Naviguez vers la page de la fiche d'anime en passant l'objet sélectionné + foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage) + { + Debug.WriteLine("Titre de l'oeuvre : " + oeuvre.Nom); + // Faites d'autres opérations avec chaque élément de la liste + } + + my_manager.sauvegarder(); + await Navigation.PushAsync(new listPage()); } + private void SetNote(float note) { note = (int)note; // Tronquer à un entier car nous ne gérons actuellement pas les demi-étoiles diff --git a/MangaMap/Views/listPage.xaml b/MangaMap/Views/listPage.xaml index 6f22f68..adae05b 100644 --- a/MangaMap/Views/listPage.xaml +++ b/MangaMap/Views/listPage.xaml @@ -2,7 +2,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:MangaMap" x:Class="MangaMap.Views.listPage" - BackgroundColor="Black"> + BackgroundColor="Black" + x:Name="listPage"> diff --git a/MangaMap/Views/listPage.xaml.cs b/MangaMap/Views/listPage.xaml.cs index 98a7c5a..29066e2 100644 --- a/MangaMap/Views/listPage.xaml.cs +++ b/MangaMap/Views/listPage.xaml.cs @@ -11,4 +11,7 @@ public partial class listPage : ContentPage BindingContext = my_manager.UtilisateurActuel; } + + + } \ No newline at end of file