diff --git a/Business/Manager.cs b/Business/Manager.cs index 78db1cd..09c27b0 100644 --- a/Business/Manager.cs +++ b/Business/Manager.cs @@ -36,25 +36,29 @@ namespace Business } public void LoadRequins() { + + var data = Pers.LoadRequins(); + Requins.Clear(); - foreach (Requin req in Pers.LoadRequins()) + foreach(var r in data.reqs) { - Requins.Add(req); + Requins.Add(r); } - RequinsEdit.Clear(); - foreach (Requin req in Pers.LoadRequinsEdit()) + RequinsAdd.Clear(); + foreach(var rA in data.reqsAdd) { - RequinsEdit.Add(req); + RequinsAdd.Add(rA); } - RequinsAdd.Clear(); - foreach (Requin req in Pers.LoadRequinsAdd()) + RequinsEdit.Clear(); + foreach(var rE in data.reqsEdit) { - RequinsAdd.Add(req); + RequinsEdit.Add(rE); } + SelectedRequin = null; } - public void SaveRequins() + public void SaveRequins() { List req = new List(); req.AddRange(Requins); @@ -62,10 +66,8 @@ namespace Business edit.AddRange(RequinsEdit); List add = new List(); add.AddRange(RequinsAdd); - Pers.SaveRequins(req); - Pers.SaveRequins(edit); - Pers.SaveRequins(add); + Pers.SaveRequins(req, add, edit); } public bool AjouterRequin(Requin req) diff --git a/Business/ManagerUsers.cs b/Business/ManagerUsers.cs index 08fa2c3..c813c2e 100644 --- a/Business/ManagerUsers.cs +++ b/Business/ManagerUsers.cs @@ -11,7 +11,8 @@ namespace Business { public class ManagerUsers { - public List Utilisateurs { get; private set; } + public List Utilisateurs { get; private set; } + public List Experts { get; private set; } public Personne SelectedUser { get; set; } /// @@ -26,22 +27,38 @@ namespace Business public ManagerUsers(IPersistanceManager pers) { - Utilisateurs = new List(); + Utilisateurs = new List(); + Experts = new List(); Pers = pers; } + public void LoadUsers() { + + var data = Pers.LoadUsers(); + Utilisateurs.Clear(); - Utilisateurs.AddRange(Pers.LoadUsers()); + foreach (var u in data.users) + { + Utilisateurs.Add(u); + } + Experts.Clear(); + foreach (var e in data.experts) + { + Experts.Add(e); + } + SelectedUser = null; } + public void SaveUsers() { - Pers.SaveUsers(Utilisateurs); + Pers.SaveUsers(Utilisateurs, Experts); } - public bool AjouterUtilisateur(Personne user) + + public bool AjouterUtilisateur(Utilisateur user) { if (Utilisateurs.Contains(user)) { @@ -52,7 +69,7 @@ namespace Business return true; } - public bool SupprimerUtilisateur(Personne user) + public bool SupprimerUtilisateur(Utilisateur user) { if (!Utilisateurs.Contains(user)) { @@ -67,7 +84,7 @@ namespace Business return Utilisateurs.SingleOrDefault(r => r.Equals(user)); } - public bool ModifieUtilisateur(Personne oldU, Personne newU) + public bool ModifieUtilisateur(Utilisateur oldU, Utilisateur newU) { if (!oldU.Equals(newU)) { diff --git a/Modèle/Conservation.cs b/Modèle/Conservation.cs index 66405ca..2abd3bf 100644 --- a/Modèle/Conservation.cs +++ b/Modèle/Conservation.cs @@ -10,15 +10,23 @@ namespace Modèle [DataContract] public enum Conservation { - [DataMember] + [EnumMember] EX, + [EnumMember] EW, + [EnumMember] CR, + [EnumMember] EN, + [EnumMember] VU, + [EnumMember] NT, + [EnumMember] LC, + [EnumMember] DD, + [EnumMember] NE } diff --git a/Modèle/Zone.cs b/Modèle/Zone.cs index 7a73460..16c2f09 100644 --- a/Modèle/Zone.cs +++ b/Modèle/Zone.cs @@ -10,10 +10,13 @@ namespace Modèle [DataContract] public enum Zone { - [DataMember] + [EnumMember] ATLANTIQUE, + [EnumMember] ARCTIQUE, + [EnumMember] PACIFIQUE, + [EnumMember] INDIEN } } diff --git a/Persistance/DataContractPersistance.cs b/Persistance/DataContractPersistance.cs index 8523f36..3ed9df7 100644 --- a/Persistance/DataContractPersistance.cs +++ b/Persistance/DataContractPersistance.cs @@ -7,17 +7,18 @@ using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; +using System.Xml; namespace Persistance { public class DataContractPersistance : IPersistanceManager { - // DataContractSerializer pour chaque type + // Serializers pour requins et utlisateurs/experts public DataContractSerializer SerializerReq { get; set; } - = new DataContractSerializer(typeof(List)); + = new DataContractSerializer(typeof(DataToPersistReq)); public DataContractSerializer SerializerUsers { get; set; } - = new DataContractSerializer(typeof(List)); + = new DataContractSerializer(typeof(DataToPersistUsers)); @@ -28,11 +29,7 @@ namespace Persistance // Noms des fichiers string FileNameReq { get; set; } - = "ficReq"; - string FileNameReqAdd { get; set; } - = "ficReqAdd"; - string FileNameReqEdit { get; set; } - = "ficReqEdit"; + = "ficReqs"; string FileNameUsers { get; set; } = "ficUsers"; @@ -40,138 +37,96 @@ namespace Persistance // Fichiers complets string FileReq => Path.Combine(FilePath, FileNameReq); - string FileReqAdd => Path.Combine(FilePath, FileNameReqAdd); - string FileReqEdit => Path.Combine(FilePath, FileNameReqEdit); string FileUsers => Path.Combine(FilePath, FileNameUsers); - // Listes des requins et utilisateurs - List requins = new List(); - List requinsAdd = new List(); - List requinsEdit = new List(); - List users = new List(); + // Settings + public XmlWriterSettings settings { get; set; } + = new XmlWriterSettings() { Indent = true }; - // Méthodes pour les requins de l'application - public List LoadRequins() + // Méthodes pour les utilisateurs et experts + public (List, List) LoadUsers() { - if (!File.Exists(FileReq)) + if (!File.Exists(FileUsers)) { - throw new FileNotFoundException("The persisance ficReq does not exist"); + throw new FileNotFoundException("The persistance file does not exist"); } - using (Stream stream = File.OpenRead(FileReq)) - { - requins = SerializerReq.ReadObject(stream) as List; - } + DataToPersistUsers data; - return requins; - } - public void SaveRequins(List reqs) - { - if (!Directory.Exists(FilePath)) + using (Stream stream = File.OpenRead(FileUsers)) { - Directory.CreateDirectory(FilePath); + data = SerializerUsers.ReadObject(stream) as DataToPersistUsers; } - using (Stream stream = File.Create(FileReq)) - { - SerializerReq.WriteObject(stream, requins); - } + return (data.Users, data.Experts); } - // Méthodes pour les requins ajoutés par les Utilisateurs - public List LoadRequinsAdd() - { - if (!File.Exists(FileReqAdd)) - { - throw new FileNotFoundException("The persisance file ficReqAdd does not exist"); - } - - using (Stream stream = File.OpenRead(FileReqAdd)) - { - requinsAdd = SerializerReq.ReadObject(stream) as List; - } - - return requinsAdd; - } - - public void SaveRequinsAdd(List reqs) + public void SaveUsers(List users, List experts) { if (!Directory.Exists(FilePath)) { - Directory.CreateDirectory(FilePath); + Directory.CreateDirectory(FileUsers); } - using (Stream stream = File.Create(FileReqAdd)) + DataToPersistUsers data = new DataToPersistUsers(); + data.Users.AddRange(users); + data.Experts.AddRange(experts); + + using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileNameUsers))) { - SerializerReq.WriteObject(stream, requinsAdd); + using (XmlWriter writer = XmlWriter.Create(tw, settings)) + { + SerializerUsers.WriteObject(writer, data); + } } } - // Méthodes pour les requins édités par les utilisateurs - public List LoadRequinsEdit() + // Méthodes pour tous les requins + public (List, List, List) LoadRequins() { - if (!File.Exists(FileReqEdit)) - { - throw new FileNotFoundException("The persisance file ficReqEdit does not exist"); - } - - using (Stream stream = File.OpenRead(FileReqEdit)) + if (!File.Exists(FileReq)) { - requinsEdit = SerializerReq.ReadObject(stream) as List; + throw new FileNotFoundException("The persistance file does not exist"); } - return requinsEdit; - } + DataToPersistReq data; - public void SaveRequinsEdit(List reqs) - { - if (!Directory.Exists(FilePath)) + using (Stream stream = File.OpenRead(FileReq)) { - Directory.CreateDirectory(FilePath); + data = SerializerReq.ReadObject(stream) as DataToPersistReq; } - using (Stream stream = File.Create(FileReqEdit)) - { - SerializerReq.WriteObject(stream, requinsEdit); - } + return (data.Requins, data.RequinsAdd, data.RequinsEdit); } - // Méthodes pour les utilisateurs (Utilisateur et Manager) - public List LoadUsers() - { - if (!File.Exists(FileUsers)) - { - throw new FileNotFoundException("The persisance file ficUsers does not exist"); - } - - using (Stream stream = File.OpenRead(FileUsers)) - { - users = SerializerUsers.ReadObject(stream) as List; - } - - return users; - } - - public void SaveUsers(List pers) + public void SaveRequins(List reqs, List reqsAdd, List reqsEdit) { if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } - using (Stream stream = File.Create(FileUsers)) + DataToPersistReq data = new DataToPersistReq(); + data.Requins.AddRange(reqs); + data.RequinsAdd.AddRange(reqsAdd); + data.RequinsEdit.AddRange(reqsEdit); + + using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileReq))) { - SerializerUsers.WriteObject(stream, users); + using (XmlWriter writer = XmlWriter.Create(tw, settings)) + { + SerializerReq.WriteObject(writer, data); + } } } diff --git a/Persistance/DataToPersistReq.cs b/Persistance/DataToPersistReq.cs new file mode 100644 index 0000000..24e27cd --- /dev/null +++ b/Persistance/DataToPersistReq.cs @@ -0,0 +1,21 @@ +using Modèle; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace Persistance +{ + [DataContract] + class DataToPersistReq + { + [DataMember] + public List Requins { get; set; } = new List(); + [DataMember] + public List RequinsAdd { get; set; } = new List(); + [DataMember] + public List RequinsEdit { get; set; } = new List(); + } +} diff --git a/Persistance/DataToPersistUsers.cs b/Persistance/DataToPersistUsers.cs new file mode 100644 index 0000000..146ee02 --- /dev/null +++ b/Persistance/DataToPersistUsers.cs @@ -0,0 +1,19 @@ +using Modèle; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace Persistance +{ + [DataContract] + class DataToPersistUsers + { + [DataMember] + public List Users { get; set; } = new List(); + [DataMember] + public List Experts { get; set; } = new List(); + } +} diff --git a/Persistance/IPersistanceManager.cs b/Persistance/IPersistanceManager.cs index 83de037..02c0f44 100644 --- a/Persistance/IPersistanceManager.cs +++ b/Persistance/IPersistanceManager.cs @@ -10,6 +10,7 @@ namespace Persistance { public interface IPersistanceManager { + /* List LoadRequins(); void SaveRequins(List reqs); @@ -18,8 +19,22 @@ namespace Persistance List LoadRequinsAdd(); void SaveRequinsAdd(List reqs); - List LoadUsers(); - void SaveUsers(List pers); + List LoadUsers(); + List LoadExperts(); + void SaveUsers(List users); + void SaveExperts(List experts); + + + (List reqs, List reqsAdd, List reqsEdit, List users, List experts) Load(); + void Save(List reqs, List reqsAdd, List reqsEdit, List users, List experts); + + */ + + + (List reqs, List reqsAdd, List reqsEdit) LoadRequins(); + void SaveRequins(List reqs, List reqsAdd, List reqsEdit); + (List users, List experts) LoadUsers(); + void SaveUsers(List users, List experts); } } \ No newline at end of file diff --git a/StubLib/Stub.cs b/StubLib/Stub.cs index bdce730..92a50ef 100644 --- a/StubLib/Stub.cs +++ b/StubLib/Stub.cs @@ -13,7 +13,8 @@ namespace StubLib private List requinsEdit = new List(); private List requinsAdd = new List(); - private List utilisateurs = new List(); + private List utilisateurs = new List(); + private List expert = new List(); public Stub() { @@ -30,48 +31,31 @@ namespace StubLib requinsAdd.Add(new Requin("leQuatrièmeRequinAjouté", "Le requin vraiemnt pas banal", "C'est un requin vraiment pas ultra banal", "Images/White_shark.png", "Videos/Vid-dormeur-mexicain.mp4", "Images/rep_Heterodontus_mexicanus.png", Conservation.EX, zone2, "Il est vraiment vraiment pas banal")); // Utilisateurs utilisateurs.Add(new Utilisateur("a", "salut")); - utilisateurs.Add(new Expert("salut", "hey", "bob")); + expert.Add(new Expert("salut", "hey", "bob")); } - public List LoadRequins() + public (List reqs, List reqsAdd, List reqsEdit) LoadRequins() { - return new List(requins); + return (new List(requins), new List(requinsAdd), new List(requinsEdit)); } - public void SaveRequins(List reqs) + public void SaveRequins(List reqs, List reqsAdd, List reqsEdit) { requins = reqs; + requinsAdd = reqsAdd; + requinsEdit = reqsEdit; } - public List LoadRequinsAdd() + public (List users, List experts) LoadUsers() { - return new List(requinsAdd); + return (new List(utilisateurs), new List(expert)); } - public void SaveRequinsAdd(List reqs) - { - requins = reqs; - } - - public List LoadRequinsEdit() - { - return new List(requinsEdit); - } - - public void SaveRequinsEdit(List reqs) - { - requinsEdit = reqs; - } - - public List LoadUsers() - { - return new List(utilisateurs); - } - - public void SaveUsers(List users) + public void SaveUsers(List users, List experts) { utilisateurs = users; + expert = experts; } } } diff --git a/WpfApp1/App.xaml b/WpfApp1/App.xaml index e700dec..0c062d3 100644 --- a/WpfApp1/App.xaml +++ b/WpfApp1/App.xaml @@ -2,8 +2,7 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp1" - StartupUri="MainWindow.xaml" - Activated="Application_Activated"> + StartupUri="MainWindow.xaml"> diff --git a/WpfApp1/App.xaml.cs b/WpfApp1/App.xaml.cs index aedfbdc..c080c54 100644 --- a/WpfApp1/App.xaml.cs +++ b/WpfApp1/App.xaml.cs @@ -17,23 +17,28 @@ namespace WpfApp1 { public static IPersistanceManager strat { get; private set; } = new DataContractPersistance(); - public Manager LeManager { get; private set; } = new Manager(new StubLib.Stub()); - public ManagerUsers LeManagerUsers { get; private set; } = new ManagerUsers(new StubLib.Stub()); + public static IPersistanceManager stubtruc { get; set; } + = new StubLib.Stub(); + public Manager LeManager { get; private set; } = new Manager(strat); + public ManagerUsers LeManagerUsers { get; private set; } = new ManagerUsers(strat); - public void Temp() + public App() { - var mw = MainWindow as MainWindow; + var dataReq = strat.LoadRequins(); + var dataUsers = strat.LoadUsers(); + var users = dataUsers.users; + var experts = dataUsers.experts; + var requins = dataReq.reqs; + var requinsAdd = dataReq.reqsAdd; + var requinsEdit = dataReq.reqsEdit; + + strat.SaveRequins(requins, requinsAdd, requinsEdit); + strat.SaveUsers(users, experts); } - private void Application_Activated(object sender, EventArgs e) + public void Temp() { - LeManager.LoadRequins(); - LeManager.Pers = new DataContractPersistance(); - LeManager.SaveRequins(); - - LeManagerUsers.LoadUsers(); - LeManagerUsers.Pers = new DataContractPersistance(); - LeManagerUsers.SaveUsers(); + var mw = MainWindow as MainWindow; } } diff --git a/WpfApp1/Persistance/ficReq b/WpfApp1/Persistance/ficReq deleted file mode 100644 index 9203cf3..0000000 --- a/WpfApp1/Persistance/ficReq +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/WpfApp1/Persistance/ficReqAdd b/WpfApp1/Persistance/ficReqAdd deleted file mode 100644 index 9203cf3..0000000 --- a/WpfApp1/Persistance/ficReqAdd +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/WpfApp1/Persistance/ficReqEdit b/WpfApp1/Persistance/ficReqEdit deleted file mode 100644 index 9203cf3..0000000 --- a/WpfApp1/Persistance/ficReqEdit +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/WpfApp1/Persistance/ficReqs b/WpfApp1/Persistance/ficReqs new file mode 100644 index 0000000..b6bd986 --- /dev/null +++ b/WpfApp1/Persistance/ficReqs @@ -0,0 +1,113 @@ + + + + + wow il est trop bo + (C'est pas un vrai requin) + mon requin adoré + trop cool ce requin + Images/Dormeur-Mexicain.png + Images/rep_Heterodontus_mexicanus.png + + ATLANTIQUE + + EW + Videos/Vid-dormeur-mexicain.mp4 + + + C'est un requin ultra banal + Il est pas aussi banal qu'il en a l'air + Banane + Le requin banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + ATLANTIQUE + + LC + Videos/Vid-Requin-Blanc.mp4 + + + C'est un requin pas ultra banal + Il est vraiment pas banal + Req1 + Le requin pas banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + PACIFIQUE + + EX + Videos/Vid-dormeur-mexicain.mp4 + + + + + C'est un requin pas ultra banal + Il est vraiment pas banal + leRequinAjouté + Le requin pas banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + PACIFIQUE + + EX + Videos/Vid-dormeur-mexicain.mp4 + + + C'est un requin vraiment pas ultra banal + Il est vraiment vraiment pas banal + leDeuxièmeRequinAjouté + Le requin vraiemnt pas banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + PACIFIQUE + + EX + Videos/Vid-dormeur-mexicain.mp4 + + + C'est un requin pas ultra banal + Il est vraiment pas banal + leTroisièmeRequinAjouté + Le requin pas banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + PACIFIQUE + + EX + Videos/Vid-dormeur-mexicain.mp4 + + + C'est un requin vraiment pas ultra banal + Il est vraiment vraiment pas banal + leQuatrièmeRequinAjouté + Le requin vraiemnt pas banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + PACIFIQUE + + EX + Videos/Vid-dormeur-mexicain.mp4 + + + + + C'est un requin ultra banal + En fait il est giga banal + Banane + Le requin banal + Images/White_shark.png + Images/rep_Heterodontus_mexicanus.png + + ATLANTIQUE + + EW + Videos/Vid-Requin-Blanc.mp4 + + + \ No newline at end of file diff --git a/WpfApp1/Persistance/ficUsers b/WpfApp1/Persistance/ficUsers index 40e34f9..f9c3281 100644 --- a/WpfApp1/Persistance/ficUsers +++ b/WpfApp1/Persistance/ficUsers @@ -1 +1,18 @@ - \ No newline at end of file + + + + + salut + hey + 2022-06-09T14:59:29.3884138+02:00 + bob + + + + + a + salut + 0 + + + \ No newline at end of file diff --git a/WpfApp1/SeConnecter.xaml.cs b/WpfApp1/SeConnecter.xaml.cs index 5fa0f3b..62cd3c6 100644 --- a/WpfApp1/SeConnecter.xaml.cs +++ b/WpfApp1/SeConnecter.xaml.cs @@ -61,6 +61,15 @@ namespace WpfApp1 return; } } + foreach(Personne p in Mgr.Experts) + { + if (p.Email==email && p.MotDePasse == password) + { + Mgr.SelectedUser = p; + Close(); + return; + } + } MessageBox.Show("L'Email ou le mot de passe est incorrect"); } } diff --git a/WpfApp1/UCRequinValSubmit.xaml.cs b/WpfApp1/UCRequinValSubmit.xaml.cs index 66e56d2..b2799aa 100644 --- a/WpfApp1/UCRequinValSubmit.xaml.cs +++ b/WpfApp1/UCRequinValSubmit.xaml.cs @@ -60,7 +60,7 @@ namespace WpfApp1 private void exit_Click(object sender, RoutedEventArgs e) { - + } private void valider_Click(object sender, RoutedEventArgs e) diff --git a/WpfApp1/WpfApp1.csproj b/WpfApp1/WpfApp1.csproj index b09de9f..45d9a05 100644 --- a/WpfApp1/WpfApp1.csproj +++ b/WpfApp1/WpfApp1.csproj @@ -131,4 +131,8 @@ + + + + diff --git a/WpfApp1/userControlAcceuil.xaml.cs b/WpfApp1/userControlAcceuil.xaml.cs index 8f80bf0..9a9c443 100644 --- a/WpfApp1/userControlAcceuil.xaml.cs +++ b/WpfApp1/userControlAcceuil.xaml.cs @@ -38,10 +38,10 @@ namespace WpfApp1 } private void add_Click(object sender, RoutedEventArgs e) - { + {/* var addSharkWindow = new AddAShark(); addSharkWindow.ShowDialog(); - /* + */ if (MgrUser.SelectedUser == null) { MessageBox.Show("Vous avez besoin d'être connecté pour accéder à cette fonctionnalité"); @@ -58,7 +58,7 @@ namespace WpfApp1 var validerSumbit = new ValiderSubmit(); validerSumbit.ShowDialog(); } - */ + }