diff --git a/src/Banquale/Banquale/DataContractPersistance/DataContractPersJSON.cs b/src/Banquale/Banquale/DataContractPersistance/DataContractPersJSON.cs new file mode 100644 index 0000000..85df3fb --- /dev/null +++ b/src/Banquale/Banquale/DataContractPersistance/DataContractPersJSON.cs @@ -0,0 +1,57 @@ +using Model; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Threading.Tasks; + + + +namespace Banquale.DataContractPersistance +{ + public class DataContractPersJSON : IPersistenceManager + { + + public string FilePath { get; set; } = FileSystem.Current.AppDataDirectory; + public string FileName { get; set; } = "DataSave.json"; + + + public (List, Consultant) DataLoad() + { + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist)); + + DataToPersist data; + + using (FileStream stream2 = File.OpenRead(Path.Combine(FilePath, FileName))) + { + data = jsonSerializer.ReadObject(stream2) as DataToPersist; + } + + return (data.customer, data.consultant); + + } + + public void DataSave(List cu, Consultant co) + { + + DataToPersist data = new DataToPersist(); + data.customer = cu; + data.consultant = co; + + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist)); + using (FileStream stream = File.Create(Path.Combine(FilePath, FileName))) + { + using (var writer = JsonReaderWriterFactory.CreateJsonWriter( + stream, + System.Text.Encoding.UTF8, + false, + true))//<- this boolean says that we sant indentation + { + jsonSerializer.WriteObject(writer, data); + } + } + } + } +} diff --git a/src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs b/src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs new file mode 100644 index 0000000..893ee04 --- /dev/null +++ b/src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs @@ -0,0 +1,107 @@ +using Model; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.Serialization; +using System.Xml; + + +namespace Banquale.DataContractPersistance +{ + public class DataContractPersXML : IPersistenceManager + { + //public string FilePath { get; set; } = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/datbase.xml"; + + public string FilePath { get; set; } = FileSystem.Current.AppDataDirectory; + public string FileName { get; set; } = "DataSave.xml"; + + public (List, Consultant) DataLoad() + { + var serializer = new DataContractSerializer(typeof(DataToPersist)); + + DataToPersist data; + + if (File.Exists(Path.Combine(FilePath, FileName))) // Vérifiez si le fichier existe + { + using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) + { + data = serializer.ReadObject(s) as DataToPersist; + } + } + else + { + data = new DataToPersist(); // Si le fichier n'existe pas, créez une nouvelle liste + } + + // List CustomersList; + //Consultant Consultant; + + //using (Stream s = File.OpenRead(Path.Combine(FilePath, FileNameCustomer))) + //{ + // CustomersList = serializer.ReadObject(s) as List; + // } + + // using (Stream s = File.OpenRead(Path.Combine(FilePath, FileNameConsultant))) + // { + // Consultant = serializer2.ReadObject(s) as Consultant; + // } + + return (data.customer, data.consultant); + } + + public void DataSave(List cu, Consultant co) + { + var serializer = new DataContractSerializer(typeof(DataToPersist), new DataContractSerializerSettings() { PreserveObjectReferences = true }); + // La deuxième partie sert à faire des références, cela sert à ne pas duppliquer l'écriture de certains attributs + + if (!Directory.Exists(FilePath)) + { + Debug.WriteLine("Directory doesn't exist."); + Directory.CreateDirectory(FilePath); + } + + + DataToPersist data = new DataToPersist(); + data.customer = cu; + data.consultant = co; + + var settings = new XmlWriterSettings() { Indent = true }; + using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) + { + using (XmlWriter w = XmlWriter.Create(tw, settings)) + { + serializer.WriteObject(w, data); + } + } + + + // var serializer = new DataContractSerializer(typeof(List)); + // var serializer2 = new DataContractSerializer(typeof(Consultant)); + + // if (!Directory.Exists(FilePath)) + //{ + // Debug.WriteLine("Directory created"); + // Debug.WriteLine(FilePath); + // Directory.CreateDirectory(FilePath); + //} + + //var settings = new XmlWriterSettings() { Indent = true }; + // using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileNameCustomer))) + //{ + // using (XmlWriter writer = XmlWriter.Create(tw, settings)) + // { + // serializer.WriteObject(writer, cu); + // } + //} + + // using (TextWriter tw2 = File.CreateText(Path.Combine(FilePath, FileNameConsultant))) + // { + // using (XmlWriter writer2 = XmlWriter.Create(tw2, settings)) + // { + // serializer.WriteObject(writer2, co); + // } + // } + } + } +} +