diff --git a/MangaMap/Model/Admin.cs b/MangaMap/Model/Admin.cs index 23a1969..a78ef54 100644 --- a/MangaMap/Model/Admin.cs +++ b/MangaMap/Model/Admin.cs @@ -7,8 +7,17 @@ using System.Threading.Tasks; namespace MangaMap.Model { + /// + /// Représente un administrateur dans le système de gestion de listes d'anime. + /// public class Admin : Personne { + /// + /// Initialise une nouvelle instance de la classe Admin avec les informations spécifiées. + /// + /// Le mot de passe de l'administrateur. + /// L'adresse e-mail de l'administrateur. + /// Le pseudo de l'administrateur. public Admin(string motDePasse, string email, string pseudo) { MotDePasse = motDePasse; @@ -16,8 +25,14 @@ namespace MangaMap.Model Pseudo = pseudo; } + /// + /// Méthode permettant d'ajouter un anime. + /// public void ajouterAnime() { } + /// + /// Méthode permettant de supprimer un anime. + /// public void supprimerAnime() { } } } diff --git a/MangaMap/Model/Manager.cs b/MangaMap/Model/Manager.cs index 8a8eb07..095f99c 100644 --- a/MangaMap/Model/Manager.cs +++ b/MangaMap/Model/Manager.cs @@ -10,18 +10,33 @@ using MangaMap.Stub; namespace MangaMap.Model { + /// + /// Classe responsable de la gestion globale de l'application de gestion de listes d'anime. + /// public class Manager : System.ComponentModel.INotifyPropertyChanged { - - + /// + /// Obtient ou définit le gestionnaire de persistance utilisé pour charger et sauvegarder les données. + /// public IPersistanceManager Persistance { get; set; } + + /// + /// Obtient la liste des administrateurs de l'application. + /// public List Admins { get; private set; } + + /// + /// Obtient la liste des utilisateurs de l'application. + /// public List Utilisateurs { get; private set; } private ObservableCollection oeuvres; - public ObservableCollection Oeuvres - { + /// + /// Obtient ou définit la collection observable des oeuvres de l'application. + /// + public ObservableCollection Oeuvres + { get { return oeuvres; @@ -32,15 +47,28 @@ namespace MangaMap.Model OnPropertyChanged(); } } + public event PropertyChangedEventHandler? PropertyChanged; void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + /// + /// Obtient ou définit l'utilisateur actuellement connecté à l'application. + /// public Utilisateur UtilisateurActuel { get; set; } + + /// + /// Obtient ou définit une valeur indiquant si l'utilisateur actuel est un administrateur. + /// public bool isAdmin { get; set; } - public Manager(IPersistanceManager Pers) { + /// + /// Initialise une nouvelle instance de la classe Manager avec un gestionnaire de persistance spécifié. + /// + /// Le gestionnaire de persistance à utiliser. + public Manager(IPersistanceManager Pers) + { Admins = new List(); Utilisateurs = new List(); Oeuvres = new ObservableCollection(); @@ -50,6 +78,9 @@ namespace MangaMap.Model Persistance = Pers; } + /// + /// Initialise une nouvelle instance par défaut de la classe Manager. + /// public Manager() { Admins = new List(); @@ -74,6 +105,9 @@ namespace MangaMap.Model return utilisateurActuel; // Renvoyez l'utilisateur actuel }*/ + /// + /// Charge les données de l'application à partir du gestionnaire de persistance. + /// public void charger() { var donne = Persistance.chargeDonne(); @@ -84,11 +118,12 @@ namespace MangaMap.Model Utilisateurs.AddRange(donne.Item2); } - - + /// + /// Sauvegarde les données de l'application en utilisant le gestionnaire de persistance. + /// public void sauvegarder() { Persistance.sauvegarder(Oeuvres, Utilisateurs); } } -} \ No newline at end of file +} diff --git a/MangaMap/Model/Oeuvre.cs b/MangaMap/Model/Oeuvre.cs index e8823e1..877adc6 100644 --- a/MangaMap/Model/Oeuvre.cs +++ b/MangaMap/Model/Oeuvre.cs @@ -10,6 +10,9 @@ using System.Runtime.CompilerServices; namespace MangaMap.Model { + /// + /// Représente une oeuvre dans le système de gestion de listes d'anime. + /// [DataContract] public class Oeuvre : INotifyPropertyChanged { @@ -18,17 +21,36 @@ namespace MangaMap.Model void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + /// + /// Obtient ou définit le nom de l'oeuvre. + /// [DataMember] public string Nom { get; private set; } + + /// + /// Obtient ou définit les genres de l'oeuvre. + /// [DataMember] public List Genre { get; private set; } + + /// + /// Obtient ou définit le type de l'oeuvre. + /// [DataMember] public string Type { get; private set; } + + /// + /// Obtient ou définit la description de l'oeuvre. + /// [DataMember] public string Description { get; private set; } + /// + /// Obtient ou définit la note de l'oeuvre. + /// [DataMember] - public int Note { + public int Note + { get => note; set { @@ -40,11 +62,28 @@ namespace MangaMap.Model } private int note; + /// + /// Obtient ou définit le nombre d'épisodes de l'oeuvre. + /// [DataMember] public int NbEpisodes { get; private set; } + + /// + /// Obtient ou définit l'affiche de l'oeuvre. + /// [DataMember] public string Affiche { get; private set; } + /// + /// Initialise une nouvelle instance de la classe Oeuvre avec les informations spécifiées. + /// + /// Le nom de l'oeuvre. + /// Les genres de l'oeuvre. + /// Le type de l'oeuvre. + /// La description de l'oeuvre. + /// La note de l'oeuvre. + /// Le nombre d'épisodes de l'oeuvre. + /// L'affiche de l'oeuvre. public Oeuvre(string nom, List genre, string type, string description, int note, int nbEpisode, string affiche) { Nom = nom; @@ -56,6 +95,14 @@ namespace MangaMap.Model Affiche = affiche; } + /// + /// Initialise une nouvelle instance de la classe Oeuvre avec les informations spécifiées. + /// + /// Le nom de l'oeuvre. + /// Le type de l'oeuvre. + /// La description de l'oeuvre. + /// Le nombre d'épisodes de l'oeuvre. + /// L'affiche de l'oeuvre. public Oeuvre(string nom, string type, string description, int nbEpisode, string affiche) { Nom = nom; @@ -65,9 +112,13 @@ namespace MangaMap.Model Affiche = affiche; } + /// + /// Méthode permettant d'ajouter un certain nombre d'épisodes à l'oeuvre. + /// + /// Le nombre d'épisodes à ajouter. public void AjouterEpisode(int nb) { NbEpisodes = NbEpisodes + nb; } } -} \ No newline at end of file +} diff --git a/MangaMap/Model/Personne.cs b/MangaMap/Model/Personne.cs index 26c388f..43b00d0 100644 --- a/MangaMap/Model/Personne.cs +++ b/MangaMap/Model/Personne.cs @@ -7,16 +7,35 @@ using System.Threading.Tasks; namespace MangaMap.Model { + /// + /// Représente une personne dans le système de gestion de listes d'anime. + /// [DataContract] public class Personne { + /// + /// Obtient ou définit le mot de passe de la personne. + /// [DataMember] - public string MotDePasse { get; set; } + public string MotDePasse { get; set; } + + /// + /// Obtient ou définit l'adresse e-mail de la personne. + /// [DataMember] - public string Email { get; set; } + public string Email { get; set; } + + /// + /// Obtient ou définit le pseudo de la personne. + /// [DataMember] - public string Pseudo { get; set; } + public string Pseudo { get; set; } + /// + /// Modifie le mot de passe de la personne en vérifiant une confirmation. + /// + /// Le nouveau mot de passe. + /// True si la modification a réussi, False sinon. public bool MofifierMotDePasse(string MotDePasse) { string test = ""; @@ -31,6 +50,11 @@ namespace MangaMap.Model return false; } + /// + /// Modifie l'adresse e-mail de la personne en vérifiant une confirmation. + /// + /// La nouvelle adresse e-mail. + /// True si la modification a réussi, False sinon. public bool MofifierEmail(string Email) { string test = ""; @@ -45,6 +69,11 @@ namespace MangaMap.Model return false; } + /// + /// Modifie le pseudo de la personne en vérifiant une confirmation. + /// + /// Le nouveau pseudo. + /// True si la modification a réussi, False sinon. public bool MofifierPseudo(string Pseudo) { string test = ""; diff --git a/MangaMap/Model/Utilisateur.cs b/MangaMap/Model/Utilisateur.cs index 03f6aa9..bc70eff 100644 --- a/MangaMap/Model/Utilisateur.cs +++ b/MangaMap/Model/Utilisateur.cs @@ -8,26 +8,69 @@ using System.Threading.Tasks; namespace MangaMap.Model { + /// + /// Représente un utilisateur de l'application de gestion de listes d'anime. + /// [DataContract] public class Utilisateur : Personne { + /// + /// Obtient ou définit le nom de l'utilisateur. + /// [DataMember] public string nom { get; private set; } - [DataMember] + + /// + /// Obtient ou définit le prénom de l'utilisateur. + /// + [DataMember] public string prenom { get; private set; } - [DataMember] + + /// + /// Obtient ou définit l'âge de l'utilisateur. + /// + [DataMember] public int age { get; private set; } - [DataMember] + + /// + /// Obtient ou définit la liste des oeuvres en visionnage de l'utilisateur. + /// + [DataMember] public ObservableCollection ListeOeuvreEnVisionnage { get; set; } - [DataMember] + + /// + /// Obtient ou définit la liste des oeuvres déjà vues par l'utilisateur. + /// + [DataMember] public ObservableCollection ListeOeuvreDejaVu { get; set; } + + /// + /// Obtient ou définit la liste des oeuvres à voir ultérieurement par l'utilisateur. + /// [DataMember] public ObservableCollection ListeOeuvrePourPlusTard { get; set; } + + /// + /// Obtient ou définit la liste des oeuvres favorites de l'utilisateur. + /// [DataMember] public ObservableCollection ListeOeuvreFavorites { get; set; } + + /// + /// Obtient ou définit le dictionnaire des notes et nombres associés par l'utilisateur. + /// [DataMember] - public Dictionary> notesNombres { get; set; } + public Dictionary> notesNombres { get; set; } + /// + /// Initialise une nouvelle instance de la classe Utilisateur avec les paramètres spécifiés. + /// + /// L'adresse email de l'utilisateur. + /// Le pseudo de l'utilisateur. + /// Le mot de passe de l'utilisateur. + /// Le nom de l'utilisateur. + /// Le prénom de l'utilisateur. + /// L'âge de l'utilisateur. public Utilisateur(string email, string pseudo, string mdp, string nom, string prenom, int age) { Email = email; @@ -44,7 +87,11 @@ namespace MangaMap.Model notesNombres = new Dictionary>(); } - public Utilisateur() { + /// + /// Initialise une nouvelle instance par défaut de la classe Utilisateur. + /// + public Utilisateur() + { ListeOeuvreEnVisionnage = new ObservableCollection(); ListeOeuvreDejaVu = new ObservableCollection(); ListeOeuvrePourPlusTard = new ObservableCollection(); @@ -52,6 +99,9 @@ namespace MangaMap.Model notesNombres = new Dictionary>(); } + /// + /// Supprime l'utilisateur en réinitialisant les propriétés nom, prénom et âge. + /// public void SupprimerUtilisateur() { this.nom = null; @@ -59,4 +109,4 @@ namespace MangaMap.Model this.age = 0; } } -} \ No newline at end of file +} diff --git a/MangaMap/Stub/DataContract.cs b/MangaMap/Stub/DataContract.cs index 8a2dffb..1f3ba71 100644 --- a/MangaMap/Stub/DataContract.cs +++ b/MangaMap/Stub/DataContract.cs @@ -9,14 +9,27 @@ using System.Text; using System.Threading.Tasks; using System.Xml; - namespace MangaMap.Stub { + /// + /// Implémentation de l'interface IPersistanceManager utilisant la sérialisation avec DataContract. + /// public class DataContract : IPersistanceManager { + /// + /// Obtient ou définit le nom du fichier de sauvegarde. + /// public string FileName { get; set; } = "SauvegardeDonnees.xml"; + + /// + /// Obtient ou définit le chemin du fichier de sauvegarde. + /// public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); + /// + /// Charge les données sauvegardées à partir du fichier xml. + /// + /// Un tuple contenant la liste des oeuvres et la liste des utilisateurs. public (ObservableCollection, List) chargeDonne() { var serializer = new DataContractSerializer(typeof(DataToPersist)); @@ -37,6 +50,11 @@ namespace MangaMap.Stub return (data.Oeuvres, data.Utilisateurs); } + /// + /// Sauvegarde les données dans le fichier xml. + /// + /// La liste des oeuvres à sauvegarder. + /// La liste des utilisateurs à sauvegarder. public void sauvegarder(ObservableCollection o, List u) { var serializer = new DataContractSerializer(typeof(DataToPersist)); @@ -47,11 +65,6 @@ namespace MangaMap.Stub Directory.CreateDirectory(FilePath); } - /*using (Stream s = File.Create(Path.Combine(FilePath, FileName))) - { - serializer.WriteObject(s, o); //Version d'enregistrement des données sans indentation. - }*/ - DataToPersist data = new DataToPersist(); data.Oeuvres = o; data.Utilisateurs = u; @@ -61,10 +74,9 @@ namespace MangaMap.Stub { using (XmlWriter w = XmlWriter.Create(tw, settings)) { - serializer.WriteObject(w, data); //Version d'enregistrement des données avec indentation. + serializer.WriteObject(w, data); // Version d'enregistrement des données avec indentation. } } } } - -} \ No newline at end of file +} diff --git a/MangaMap/Stub/IPersistanceManager.cs b/MangaMap/Stub/IPersistanceManager.cs index af0689d..8ce3354 100644 --- a/MangaMap/Stub/IPersistanceManager.cs +++ b/MangaMap/Stub/IPersistanceManager.cs @@ -1,17 +1,17 @@ -using System; -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using MangaMap.Model; - -namespace MangaMap.Stub -{ - public interface IPersistanceManager - { - (ObservableCollection, List) chargeDonne(); - - void sauvegarder(ObservableCollection o, List u); - } -} +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MangaMap.Model; + +namespace MangaMap.Stub +{ + public interface IPersistanceManager + { + (ObservableCollection, List) chargeDonne(); + + void sauvegarder(ObservableCollection o, List u); + } +}