From c4d8423eff1948006482309ce42149d076011531 Mon Sep 17 00:00:00 2001 From: majean5 Date: Wed, 1 Jun 2022 17:32:29 +0200 Subject: [PATCH 1/2] =?UTF-8?q?d=C3=A9but=20DataContract=20du=20pauvre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Persistance/DataContractPersistance.cs | 46 +++++++++++++++++++++++--- WpfApp1/App.xaml.cs | 1 + WpfApp1/WpfApp1.csproj | 4 +++ 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/Persistance/DataContractPersistance.cs b/Persistance/DataContractPersistance.cs index 8b5d786..9a86246 100644 --- a/Persistance/DataContractPersistance.cs +++ b/Persistance/DataContractPersistance.cs @@ -1,7 +1,9 @@ using Modèle; using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; @@ -9,10 +11,48 @@ namespace Persistance { public class DataContractPersistance : IPersistanceManager { + public DataContractSerializer Serializer { get; set; } + = new DataContractSerializer(typeof(List)); + + string FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//Persistance"); + string FileName { get; set; } + + string Filepers => Path.Combine(FilePath, FileName); + + List requins = new List(); + + public List LoadRequins() { - throw new NotImplementedException(); + if (File.Exists(Filepers)) + { + throw new FileNotFoundException("The persisance file Persisitance does not exist"); + } + + using (Stream stream = File.OpenRead(Filepers)) + { + requins = Serializer.ReadObject(stream) as List; + } + + return requins; } + public void SaveRequins(List reqs) + { + if (!Directory.Exists(FilePath)) + { + Directory.CreateDirectory(FilePath); + } + + using (Stream stream = File.Create(Filepers)) + { + Serializer.WriteObject(stream, requins); + } + } + + + + + public List LoadRequinsAdd() { @@ -29,10 +69,6 @@ namespace Persistance throw new NotImplementedException(); } - public void SaveRequins(List reqs) - { - throw new NotImplementedException(); - } public void SaveRequinsAdd(List reqs) { diff --git a/WpfApp1/App.xaml.cs b/WpfApp1/App.xaml.cs index 9f6b386..20aa0a4 100644 --- a/WpfApp1/App.xaml.cs +++ b/WpfApp1/App.xaml.cs @@ -15,6 +15,7 @@ namespace WpfApp1 /// public partial class App : Application { + public IPersistanceManager strat = new DataContractPersistance(); public Manager LeManager { get; private set; } = new Manager(new StubLib.Stub()); public ManagerUsers LeManagerUser { get; private set; } = new ManagerUsers(new StubLib.Stub()); 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 @@ + + + + From c4eb8237320f384babac411c24a4d65db2df8b29 Mon Sep 17 00:00:00 2001 From: majean5 Date: Fri, 3 Jun 2022 11:11:46 +0200 Subject: [PATCH 2/2] validation des submits + un peu de persistance --- Persistance/DataContractPersistance.cs | 70 ++++++++++++++++++++------ StubLib/Stub.cs | 1 + WpfApp1/ValiderSubmit.xaml | 22 +++++--- WpfApp1/ValiderSubmit.xaml.cs | 10 ++-- 4 files changed, 77 insertions(+), 26 deletions(-) diff --git a/Persistance/DataContractPersistance.cs b/Persistance/DataContractPersistance.cs index 9a86246..523d935 100644 --- a/Persistance/DataContractPersistance.cs +++ b/Persistance/DataContractPersistance.cs @@ -11,27 +11,60 @@ namespace Persistance { public class DataContractPersistance : IPersistanceManager { - public DataContractSerializer Serializer { get; set; } + + // DataContractSerializer pour chaque type + public DataContractSerializer SerializerReq { get; set; } = new DataContractSerializer(typeof(List)); + public DataContractSerializer SerializerUsers { get; set; } + = new DataContractSerializer(typeof(List)); + + + + // Chemin des fichiers string FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//Persistance"); - string FileName { get; set; } - string Filepers => Path.Combine(FilePath, FileName); + + + // Noms des fichiers + string FileNameReq { get; set; } + string FileNameReqAdd { get; set; } + string FileNameReqEdit { get; set; } + string FileNameUsers { get; set; } + + + + + // 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 requinEdit = new List(); + List users = new List(); + + + // Méthodes pour les requins de l'application public List LoadRequins() { - if (File.Exists(Filepers)) + if (File.Exists(FileReq)) { throw new FileNotFoundException("The persisance file Persisitance does not exist"); } - using (Stream stream = File.OpenRead(Filepers)) + using (Stream stream = File.OpenRead(FileReq)) { - requins = Serializer.ReadObject(stream) as List; + requins = SerializerReq.ReadObject(stream) as List; } return requins; @@ -43,39 +76,45 @@ namespace Persistance Directory.CreateDirectory(FilePath); } - using (Stream stream = File.Create(Filepers)) + using (Stream stream = File.Create(FileReq)) { - Serializer.WriteObject(stream, requins); + SerializerReq.WriteObject(stream, requins); } } - - + // Méthodes pour les requins ajoutés par les Utilisateurs public List LoadRequinsAdd() { throw new NotImplementedException(); } - public List LoadRequinsEdit() + public void SaveRequinsAdd(List reqs) { throw new NotImplementedException(); } - public List LoadUsers() + + + + // Méthodes pour les requins édités par les utilisateurs + public List LoadRequinsEdit() { throw new NotImplementedException(); } - - public void SaveRequinsAdd(List reqs) + public void SaveRequinsEdit(List reqs) { throw new NotImplementedException(); } - public void SaveRequinsEdit(List reqs) + + + + // Méthodes pour les utilisateurs (Utilisateur et Manager) + public List LoadUsers() { throw new NotImplementedException(); } @@ -84,5 +123,6 @@ namespace Persistance { throw new NotImplementedException(); } + } } diff --git a/StubLib/Stub.cs b/StubLib/Stub.cs index 55ba5d1..14971c5 100644 --- a/StubLib/Stub.cs +++ b/StubLib/Stub.cs @@ -23,6 +23,7 @@ namespace StubLib requins.Add(new Requin("Banane", "Le requin banal", "C'est un requin ultra banal", "Images/White_shark.png", "Videos/Vid-Requin-Blanc.mp4", "Images/rep_Heterodontus_mexicanus.png", Conservation.LC, zone, "Il est pas aussi banal qu'il en a l'air")); requins.Add(new Requin("Req1", "Le requin pas banal", "C'est un requin pas ultra banal", "Images/White_shark.png", "Videos/Vid-dormeur-mexicain.mp4", "Images/rep_Heterodontus_mexicanus.png", Conservation.EX, zone2, "Il est vraiment pas banal")); requinsAdd.Add(new Requin("leRequinAjouté", "Le requin pas banal", "C'est un requin pas ultra banal", "Images/White_shark.png", "Videos/Vid-dormeur-mexicain.mp4", "Images/rep_Heterodontus_mexicanus.png", Conservation.EX, zone2, "Il est vraiment pas banal")); + requinsAdd.Add(new Requin("leDeuxiè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.Add(new Utilisateur("a", "salut")); utilisateurs.Add(new Expert("salut", "hey", "bob")); // Utilisateurs diff --git a/WpfApp1/ValiderSubmit.xaml b/WpfApp1/ValiderSubmit.xaml index 1aae50f..b73933e 100644 --- a/WpfApp1/ValiderSubmit.xaml +++ b/WpfApp1/ValiderSubmit.xaml @@ -9,7 +9,12 @@ - + + @@ -25,16 +30,17 @@ - + + + + + + + - + - - - - - diff --git a/WpfApp1/ValiderSubmit.xaml.cs b/WpfApp1/ValiderSubmit.xaml.cs index 9b6539d..7ed6f7f 100644 --- a/WpfApp1/ValiderSubmit.xaml.cs +++ b/WpfApp1/ValiderSubmit.xaml.cs @@ -49,11 +49,11 @@ namespace WpfApp1 { foreach (Requin req in MgrAddEdit.RequinsAdd) { - laListe.Items.Add(new UserControlRequin { requin = req, type=UCrequinType.add }); + laListeAdd.Items.Add(new UserControlRequin { requin = req, type=UCrequinType.add }); } foreach (Requin req in MgrAddEdit.RequinsEdit) { - laListe.Items.Add(new UserControlRequin { requin = req, type = UCrequinType.edit }); + laListeEdit.Items.Add(new UserControlRequin { requin = req, type = UCrequinType.edit }); } } @@ -62,6 +62,10 @@ namespace WpfApp1 //contentControl.Content = new userControlDescription { requin = req }; } - + private void addShark_Click(object sender, RoutedEventArgs e) + { + var AddSharkWindow = new AddAShark(); + AddSharkWindow.ShowDialog(); + } } }