using Modèle; using Persistance; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Business { /// /// Class Manager qui gère les Experts et les Utilisateurs /// public class ManagerUsers { /// /// List d'Utilisateur, la liste des utilisateurs de l'application /// public List Utilisateurs { get; private set; } /// /// List d'Expert, la liste des experts de l'application /// public List Experts { get; private set; } /// /// L'utilisateur ou l'expert actuellement connecté /// public Personne SelectedUser { get; set; } /// /// DéPENDANCE /// public IPersistanceManager Pers { get; set; } /// /// constructeur avec INJECTION DE LA DéPENDANCE /// public ManagerUsers(IPersistanceManager pers) { Utilisateurs = new List(); Experts = new List(); Pers = pers; } /// /// Méthode LoadUsers de la classe ManagerUser qui permet de charger les liste d'Utilisateurs et d'Experts grâce à l'IPersistanceManager /// public void LoadUsers() { var data = Pers.LoadUsers(); Utilisateurs.Clear(); foreach (var u in data.users) { Utilisateurs.Add(u); } Experts.Clear(); foreach (var e in data.experts) { Experts.Add(e); } } /// /// Méthode SaveUsers de la classe ManagerUser qui permet de sauvegarder les listes d'Utilisateurs et d'Experts grâce à l'IPersistanceManager /// public void SaveUsers() { Pers.SaveUsers(Utilisateurs, Experts); } /// /// Méthode AjouterUtilisateur de la classe ManagerUser qui permet d'ajouter un Utilisateur dans la liste d'Utilisateurs /// /// Utilisateur qui va être ajouté dans la liste /// Booléen : true si il a été ajouté, false sinon public bool AjouterUtilisateur(Utilisateur user) { if (Utilisateurs.Contains(user)) { return false; } Utilisateurs.Add(user); return true; } /// /// Méthode SupprmierUtilisateur de la classe ManagerUser qui permet de supprimer un Utilisateur de la liste des Utilisateurs /// /// Utilisateur qui va être supprimé dans la liste /// Booléen : true si il a été supprimé, false sinon public bool SupprimerUtilisateur(Utilisateur user) { if (!Utilisateurs.Contains(user)) { return false; } Utilisateurs.Remove(user); return true; } /// /// Méthode AjouterExpert de la classe ManagerUser qui permet d'ajouter un Expert dans la liste d'Experts /// /// Expert qui va être ajouté dans la liste /// Booléen : true si il a été ajouté, false sinon public bool AjouterExpert(Expert expert) { if (Experts.Contains(expert)) { return false; } Experts.Add(expert); return true; } /// /// Méthode SupprmierExpertr de la classe ManagerUser qui permet de supprimer un Expert de la liste des Experts /// /// Expert qui va être supprimé dans la liste /// Booléen : true si il a été supprimé, false sinon public bool SupprimerExpert(Expert expert) { if (!Experts.Contains(expert)) { return false; } Experts.Remove(expert); return true; } /// /// Méthode GetPersonne de la classe ManagerUser qui permet de récupérer une personne dans la liste de personne (Expert et Utilisateur) /// /// Personne que l'on cherche dans dans la liste /// Personne trouvée public Personne GetPersonne(Personne pers) { return Utilisateurs.SingleOrDefault(r => r.Equals(pers)); } /// /// Méthode ModifieUtilisateur de la classe ManagerUser qui permet de modifier un ancien Utilisateur de la liste des Utilisateurs à partir d'un nouveau /// /// Utilisateur l'ancien Utilisateur dans la liste des utilisateurs /// Utilisateur le nouvel requin /// Booléen : true si il a été modifié, false sinon public bool ModifieUtilisateur(Utilisateur oldU, Utilisateur newU) { if (!oldU.Equals(newU)) { return false; } Utilisateurs.Remove(oldU); Utilisateurs.Add(newU); return true; } /// /// Méthode ModifieExpert de la classe ManagerUser qui permet de modifier un ancien Expert de la liste des Experts à partir d'un nouveau /// /// Expert l'ancien Expert dans la liste des experts /// Expert le nouveau Expert /// Booléen : true si il a été modifié, false sinon public bool ModifieExpert(Expert oldE, Expert newE) { if (!oldE.Equals(newE)) { return false; } Experts.Remove(oldE); Experts.Add(newE); return true; } } }