From 8c03023b198c2f73c8e0612ef13442324d2c5557 Mon Sep 17 00:00:00 2001 From: V J Date: Mon, 5 Jun 2023 15:37:59 +0200 Subject: [PATCH] note globale --- MangaMap/Model/Utilisateur.cs | 10 +- MangaMap/Stub/Stub.cs | 82 ++++++------- MangaMap/Views/Composants/ListOeuvre.xaml | 12 +- MangaMap/Views/Composants/ListOeuvre.xaml.cs | 3 +- MangaMap/Views/FicheAnime.xaml.cs | 115 ++++++++++++++++--- MangaMap/Views/ficheAnime.xaml | 13 ++- MangaMap/Views/loginPage.xaml.cs | 1 + 7 files changed, 159 insertions(+), 77 deletions(-) diff --git a/MangaMap/Model/Utilisateur.cs b/MangaMap/Model/Utilisateur.cs index 60dc889..03f6aa9 100644 --- a/MangaMap/Model/Utilisateur.cs +++ b/MangaMap/Model/Utilisateur.cs @@ -26,9 +26,7 @@ namespace MangaMap.Model [DataMember] public ObservableCollection ListeOeuvreFavorites { get; set; } [DataMember] - public Dictionary notesOeuvres { get; set; } - [DataMember] - public Dictionary episodesVus { get; set; } + public Dictionary> notesNombres { get; set; } public Utilisateur(string email, string pseudo, string mdp, string nom, string prenom, int age) { @@ -43,8 +41,7 @@ namespace MangaMap.Model ListeOeuvreDejaVu = new ObservableCollection(); ListeOeuvrePourPlusTard = new ObservableCollection(); ListeOeuvreFavorites = new ObservableCollection(); - notesOeuvres = new Dictionary(); - episodesVus = new Dictionary(); + notesNombres = new Dictionary>(); } public Utilisateur() { @@ -52,8 +49,7 @@ namespace MangaMap.Model ListeOeuvreDejaVu = new ObservableCollection(); ListeOeuvrePourPlusTard = new ObservableCollection(); ListeOeuvreFavorites = new ObservableCollection(); - notesOeuvres = new Dictionary(); - episodesVus = new Dictionary(); + notesNombres = new Dictionary>(); } public void SupprimerUtilisateur() diff --git a/MangaMap/Stub/Stub.cs b/MangaMap/Stub/Stub.cs index a83dada..2c5765c 100644 --- a/MangaMap/Stub/Stub.cs +++ b/MangaMap/Stub/Stub.cs @@ -1,43 +1,43 @@ -using MangaMap.Model; -using System; -using System.Collections.Generic; +using MangaMap.Model; +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MangaMap.Stub -{ - public class Stub : IPersistanceManager - - //Cette classe sert à faire charger un jeu de données qui n'est pas celui enregistrer dans le fichier sur l'ordinateur. - //Il permet de faire des transistion entre différent moyen de persister. - { - public (ObservableCollection, List) chargeDonne() - { - ObservableCollection l1 = new ObservableCollection(); - List l2 = new List(); - - Utilisateur u1 = new Utilisateur("t", "Pseudo1", "t", "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(); - genres.Add("Action"); - genres.Add("Future"); - Oeuvre o1 = new Oeuvre("Evangelion", genres, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"); - Oeuvre o2 = new Oeuvre("[Oshi No Ko]", genres, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"); - - l1.Add(o1); l1.Add(o2); - l2.Add(u1); l2.Add(u2); l2.Add(u3); - - //u1.ListeOeuvreEnVisionnage.Add(o1); - - return (l1, l2); - } - - public void sauvegarder(ObservableCollection o, List u) - { - throw new NotImplementedException(); - } - } +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MangaMap.Stub +{ + public class Stub : IPersistanceManager + + //Cette classe sert à faire charger un jeu de données qui n'est pas celui enregistrer dans le fichier sur l'ordinateur. + //Il permet de faire des transistion entre différent moyen de persister. + { + public (ObservableCollection, List) chargeDonne() + { + ObservableCollection l1 = new ObservableCollection(); + List l2 = new List(); + + Utilisateur u1 = new Utilisateur("t", "Pseudo1", "t", "Jean", "Baptiste", 12); + Utilisateur u2 = new Utilisateur("s", "Pseudo2", "s", "Baptiste", "Jean", 12); + Utilisateur u3 = new Utilisateur("v", "Pseudo3", "v", "David", "Marc", 12); + List genres = new List(); + genres.Add("Action"); + genres.Add("Future"); + Oeuvre o1 = new Oeuvre("Evangelion", genres, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"); + Oeuvre o2 = new Oeuvre("[Oshi No Ko]", genres, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"); + + l1.Add(o1); l1.Add(o2); + l2.Add(u1); l2.Add(u2); l2.Add(u3); + + //u1.ListeOeuvreEnVisionnage.Add(o1); + + return (l1, l2); + } + + public void sauvegarder(ObservableCollection o, List u) + { + throw new NotImplementedException(); + } + } } \ No newline at end of file diff --git a/MangaMap/Views/Composants/ListOeuvre.xaml b/MangaMap/Views/Composants/ListOeuvre.xaml index e89e86e..8dc9940 100644 --- a/MangaMap/Views/Composants/ListOeuvre.xaml +++ b/MangaMap/Views/Composants/ListOeuvre.xaml @@ -28,14 +28,14 @@ - + @@ -67,14 +67,14 @@ - + @@ -106,7 +106,7 @@ - + @@ -145,7 +145,7 @@ - + diff --git a/MangaMap/Views/Composants/ListOeuvre.xaml.cs b/MangaMap/Views/Composants/ListOeuvre.xaml.cs index bbfe072..b7d133f 100644 --- a/MangaMap/Views/Composants/ListOeuvre.xaml.cs +++ b/MangaMap/Views/Composants/ListOeuvre.xaml.cs @@ -1,5 +1,6 @@ namespace MangaMap.Views.Composants; using MangaMap.Model; +using System.Xml; public partial class ListOeuvre : ContentView { @@ -8,7 +9,7 @@ public partial class ListOeuvre : ContentView public ListOeuvre() { InitializeComponent(); - BindingContext = my_manager; + BindingContext = this; } private async void AnimeImageClickedList(object sender, EventArgs e) diff --git a/MangaMap/Views/FicheAnime.xaml.cs b/MangaMap/Views/FicheAnime.xaml.cs index 75f907f..597e85c 100644 --- a/MangaMap/Views/FicheAnime.xaml.cs +++ b/MangaMap/Views/FicheAnime.xaml.cs @@ -30,9 +30,9 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged BindingContext = this; - SetNote(); + SetNote(); } - + public async void AjouterListe(object sender, EventArgs e) { if (my_manager.UtilisateurActuel.Email == null) @@ -41,6 +41,40 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged return; } + // Si la série est déjà dans la liste il faut bloquer l'ajout. + foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage) + { + if (oeuvre.Nom == AnimeModel.Nom) + { + await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En visionnage'.", "OK"); + return; + } + } + foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreDejaVu) + { + if (oeuvre.Nom == AnimeModel.Nom) + { + await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Déjà vu'.", "OK"); + return; + } + } + foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvreFavorites) + { + if (oeuvre.Nom == AnimeModel.Nom) + { + await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'En favoris'.", "OK"); + return; + } + } + foreach (Oeuvre oeuvre in my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard) + { + if (oeuvre.Nom == AnimeModel.Nom) + { + await DisplayAlert("Erreur", "Avez déjà cette série dans une la liste 'Pour plus tard'.", "OK"); + return; + } + } + string selectedOption = await DisplayActionSheet("Ajouter à quelle liste ?", "Annuler", null, "En Visionnage", "Déjà Vu", "Pour Plus Tard", "Favoris"); if (selectedOption == "Annuler" || selectedOption == null) @@ -69,27 +103,35 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged break; } - ////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()); } + public async void SupprimerListe(object sender, EventArgs e) + { + if (my_manager.UtilisateurActuel.ListeOeuvreEnVisionnage.Remove(AnimeModel) || + my_manager.UtilisateurActuel.ListeOeuvreDejaVu.Remove(AnimeModel) || + my_manager.UtilisateurActuel.ListeOeuvreFavorites.Remove(AnimeModel) || + my_manager.UtilisateurActuel.ListeOeuvrePourPlusTard.Remove(AnimeModel)) + my_manager.sauvegarder(); + + else + { + await DisplayAlert("Erreur", "Avez n'avez pas cette série dans une liste.", "OK"); + return; + } + } private void SetNote() { stars.Children.Clear(); - bool test = my_manager.UtilisateurActuel.notesOeuvres.ContainsKey(AnimeModel.Nom); - int x; + bool test = my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom); + List x; for (int i = 0; i < 5; i++) { - if (my_manager.UtilisateurActuel.notesOeuvres.TryGetValue(AnimeModel.Nom,out x) && i x = new List(); + int somme = 0; + int compteur = 0; if (int.TryParse(idAutomation, out int id)) { - if (my_manager.UtilisateurActuel.notesOeuvres.ContainsKey(AnimeModel.Nom)) - my_manager.UtilisateurActuel.notesOeuvres.Remove(AnimeModel.Nom); + if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom)) + { + my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x); + x[0] = id + 1; + my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x); + } + else + { + x.Add(id + 1); + x.Add(0); + my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x); + } - my_manager.UtilisateurActuel.notesOeuvres.Add(AnimeModel.Nom, id+1); - my_manager.sauvegarder(); SetNote(); + + foreach (Utilisateur u in my_manager.Utilisateurs) + { + if(u.notesNombres.TryGetValue(AnimeModel.Nom, out x) && x[0] != 0) + { + compteur = compteur + 1; + somme = somme + x[0]; + } + } + + AnimeModel.Note = somme / compteur; + my_manager.sauvegarder(); } } @@ -175,11 +240,23 @@ public partial class ficheAnime : ContentPage, INotifyPropertyChanged return; } + List x = new List(); int nb = Convert.ToInt32(nombreEP.Text); - if (my_manager.UtilisateurActuel.episodesVus.ContainsKey(AnimeModel.Nom)) - my_manager.UtilisateurActuel.episodesVus.Remove(AnimeModel.Nom); - - my_manager.UtilisateurActuel.episodesVus.Add(AnimeModel.Nom, nb); + if (my_manager.UtilisateurActuel.notesNombres.ContainsKey(AnimeModel.Nom)) + { + my_manager.UtilisateurActuel.notesNombres.Remove(AnimeModel.Nom, out x); + x[1] = nb; + my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x); + return; + } + else + { + x.Add(0); + x.Add(nb); + my_manager.UtilisateurActuel.notesNombres.Add(AnimeModel.Nom, x); + } + + my_manager.sauvegarder(); } } \ No newline at end of file diff --git a/MangaMap/Views/ficheAnime.xaml b/MangaMap/Views/ficheAnime.xaml index 638029a..95649bb 100644 --- a/MangaMap/Views/ficheAnime.xaml +++ b/MangaMap/Views/ficheAnime.xaml @@ -36,13 +36,20 @@ BackgroundColor="{StaticResource Primary}" Clicked="AjouterListe"/> - +