From d10bfacd5e471bcc7c178ca6e520d5b46f35a930 Mon Sep 17 00:00:00 2001 From: "remi.lavergne" Date: Sat, 3 Jun 2023 18:24:36 +0200 Subject: [PATCH] Gestion des comptes Administrateur (Connexion avec LINQ et Profil) --- .../DataContractPers.cs | 7 +++-- .../DataContractPersistance/DataToPersist.cs | 31 ++++++++++--------- GameAtlas/GameAtlas/Models/Admin.cs | 3 ++ .../GameAtlas/Models/IPersistanceManager.cs | 4 +-- GameAtlas/GameAtlas/Models/Manager.cs | 12 +++++-- GameAtlas/GameAtlas/Models/Utilisateur.cs | 6 +++- GameAtlas/GameAtlas/Stub/Stub.cs | 14 ++++++--- .../GameAtlas/Views/PageConnexion.xaml.cs | 5 +-- GameAtlas/GameAtlas/Views/PageProfil.xaml | 11 +++++-- 9 files changed, 61 insertions(+), 32 deletions(-) diff --git a/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs b/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs index ec61971..9cfa0bc 100644 --- a/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs +++ b/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs @@ -19,7 +19,7 @@ namespace GameAtlas.DataContractPersistance public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/data"; - public (ObservableCollection, List) ChargeDonnees() + public (ObservableCollection, List, List) ChargeDonnees() { var serializer = new DataContractSerializer(typeof(DataToPersist)); DataToPersist data = new DataToPersist(); @@ -28,10 +28,10 @@ namespace GameAtlas.DataContractPersistance { data = serializer.ReadObject(s) as DataToPersist; } - return (data.jeux, data.utilisateurs); + return (data.jeux, data.admins, data.utilisateurs); } - public void SauvegardeDonnees(ObservableCollection jeux, List users) + public void SauvegardeDonnees(ObservableCollection jeux, List admins, List users) { var serializer = new DataContractSerializer(typeof(DataToPersist)); @@ -45,6 +45,7 @@ namespace GameAtlas.DataContractPersistance DataToPersist data = new DataToPersist(); data.jeux = jeux; + data.admins = admins; data.utilisateurs = users; var settings = new XmlWriterSettings() { Indent = true }; diff --git a/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs b/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs index ae2dbb8..fbb93b2 100644 --- a/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs +++ b/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs @@ -1,16 +1,17 @@ -using GameAtlas.Models; -using System; -using System.Collections.Generic; +using GameAtlas.Models; +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace GameAtlas.DataContractPersistance -{ - public class DataToPersist - { - public ObservableCollection jeux { get; set; } = new ObservableCollection(); - public List utilisateurs { get; set; } = new List(); - } -} +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GameAtlas.DataContractPersistance +{ + public class DataToPersist + { + public ObservableCollection jeux { get; set; } = new ObservableCollection(); + public List admins { get; set; } = new List(); + public List utilisateurs { get; set; } = new List(); + } +} diff --git a/GameAtlas/GameAtlas/Models/Admin.cs b/GameAtlas/GameAtlas/Models/Admin.cs index 53538e4..7366fcc 100644 --- a/GameAtlas/GameAtlas/Models/Admin.cs +++ b/GameAtlas/GameAtlas/Models/Admin.cs @@ -1,15 +1,18 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace GameAtlas.Models { + [DataContract] public class Admin : Utilisateur { public Admin(string mail, string pseudo, string mdp) : base(mail, pseudo, mdp) { + EstAdmin = true; } public void AjouterJeu(Jeu jeu) { } diff --git a/GameAtlas/GameAtlas/Models/IPersistanceManager.cs b/GameAtlas/GameAtlas/Models/IPersistanceManager.cs index 3ce9fdf..95ec113 100644 --- a/GameAtlas/GameAtlas/Models/IPersistanceManager.cs +++ b/GameAtlas/GameAtlas/Models/IPersistanceManager.cs @@ -9,8 +9,8 @@ namespace GameAtlas.Models { public interface IPersistanceManager { - (ObservableCollection,List) ChargeDonnees(); + (ObservableCollection,List,List) ChargeDonnees(); - void SauvegardeDonnees(ObservableCollection jeux, List utilisateurs); + void SauvegardeDonnees(ObservableCollection jeux, List admins, List utilisateurs); } } \ No newline at end of file diff --git a/GameAtlas/GameAtlas/Models/Manager.cs b/GameAtlas/GameAtlas/Models/Manager.cs index 9a81af1..746f54a 100644 --- a/GameAtlas/GameAtlas/Models/Manager.cs +++ b/GameAtlas/GameAtlas/Models/Manager.cs @@ -31,6 +31,7 @@ namespace GameAtlas.Models public IPersistanceManager Persistance { get; set; } + private Utilisateur connectedUser; public Utilisateur ConnectedUser { get => connectedUser; @@ -40,7 +41,6 @@ namespace GameAtlas.Models OnPropertyChanged(); } } - private Utilisateur connectedUser; public event PropertyChangedEventHandler? PropertyChanged; @@ -50,6 +50,7 @@ namespace GameAtlas.Models public Manager(IPersistanceManager persistance) { Utilisateurs = new List(); + Admins = new List(); ListJeux = new ObservableCollection(); Persistance = persistance; ConnectedUser = null; @@ -81,11 +82,16 @@ namespace GameAtlas.Models { var donnees = Persistance.ChargeDonnees(); - foreach (var user in donnees.Item2) + foreach (var user in donnees.Item3) { AddUtilisateur(user); } + foreach (var admin in donnees.Item2) + { + AddAdmin(admin); + } + foreach (var jeu in donnees.Item1) { AddJeux(jeu); @@ -95,7 +101,7 @@ namespace GameAtlas.Models public void SauvegardeDonnees() { - Persistance.SauvegardeDonnees(ListJeux, Utilisateurs); + Persistance.SauvegardeDonnees(ListJeux, Admins, Utilisateurs); } } diff --git a/GameAtlas/GameAtlas/Models/Utilisateur.cs b/GameAtlas/GameAtlas/Models/Utilisateur.cs index b61171c..ee1fdcf 100644 --- a/GameAtlas/GameAtlas/Models/Utilisateur.cs +++ b/GameAtlas/GameAtlas/Models/Utilisateur.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; namespace GameAtlas.Models { [DataContract] + [KnownType(typeof(Admin))] public class Utilisateur { [DataMember] @@ -21,6 +22,8 @@ namespace GameAtlas.Models [DataMember] public string DateCreation { get; private set; } [DataMember] + public bool EstAdmin { get; set; } + [DataMember] public ObservableCollection ListePossedes { get; private set; } [DataMember] public ObservableCollection ListeFavoris { get; private set; } @@ -30,9 +33,10 @@ namespace GameAtlas.Models Mail = mail; Pseudo = pseudo; Mdp = mdp; - DateCreation = "Compte créer le "+DateTime.Today.ToString("d"); + DateCreation = DateTime.Today.ToString("d"); ListePossedes = new ObservableCollection(); ListeFavoris = new ObservableCollection(); + EstAdmin = false; } diff --git a/GameAtlas/GameAtlas/Stub/Stub.cs b/GameAtlas/GameAtlas/Stub/Stub.cs index c6a7b8b..b2f47f0 100644 --- a/GameAtlas/GameAtlas/Stub/Stub.cs +++ b/GameAtlas/GameAtlas/Stub/Stub.cs @@ -10,22 +10,28 @@ namespace GameAtlas.Stub { public class Stub : IPersistanceManager { - public (ObservableCollection,List) ChargeDonnees() + public (ObservableCollection,List,List) ChargeDonnees() { List ListUsers = new List(); + List ListAdmins = new List(); ObservableCollection ListJeu = new ObservableCollection(); + Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234"); + Admin admin = new Admin("admin@example.com", "admin", "Admin1234"); ListUsers.Add(userTest); - Jeu TheLastOfUs = new Jeu("The last of Us Part 1","5 Fevrier 2023","Ps5 XOne Pc","dev","ed", 5, 487,"Aventure", "cover_lastofus1.png"); + ListAdmins.Add(admin); + + Jeu TheLastOfUs = new Jeu("The Last Of Us Part I","5 Fevrier 2023","PS5 XOne PC","dev","ed", 5, 487,"Aventure", "cover_lastofus1.png"); Jeu ForzaHorizon = new Jeu("Forza Horizon 5", "12 Mars 2023", "Ps5", "dev", "ed", 4, 420, "Course", "cover_forzahorizon5.png"); Jeu Test = new Jeu("The Legend of Zelda: Tears of the Kingdom", "8 Janvier 2023", "Switch Pc", "dev", "ed", 5, 250, "Aventure", "cover_zelda.png"); ListJeu.Add(TheLastOfUs); ListJeu.Add(ForzaHorizon); ListJeu.Add(Test); - return (ListJeu,ListUsers); + + return (ListJeu,ListAdmins,ListUsers); } - public void SauvegardeDonnees(ObservableCollection jeux, List utilisateurs) + public void SauvegardeDonnees(ObservableCollection jeux, List admins, List utilisateurs) { throw new NotImplementedException(); } diff --git a/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs b/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs index 257779a..c706e70 100644 --- a/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs +++ b/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs @@ -88,7 +88,7 @@ public partial class PageConnexion : ContentPage */ public bool Verification(string username, string password) { - foreach (Utilisateur user in ConnexionManager.Utilisateurs) + foreach (Utilisateur user in ConnexionManager.Utilisateurs.Concat(ConnexionManager.Admins)) { if (user.Pseudo == username) { @@ -101,9 +101,10 @@ public partial class PageConnexion : ContentPage } } } - Debug.WriteLine("La connection a echouée (pseudo ou mot de passe invalide)"); + Debug.WriteLine("La connexion a échoué (pseudo ou mot de passe invalide)"); DisplayAlert("Erreur", "Utilisateur ou Mot de Passe invalide.", "Ok"); ConnexionManager.ConnectedUser = null; return false; } + } \ No newline at end of file diff --git a/GameAtlas/GameAtlas/Views/PageProfil.xaml b/GameAtlas/GameAtlas/Views/PageProfil.xaml index 6a29650..357f8f0 100644 --- a/GameAtlas/GameAtlas/Views/PageProfil.xaml +++ b/GameAtlas/GameAtlas/Views/PageProfil.xaml @@ -33,11 +33,18 @@ - +