using CoreLibrary.Joueurs; using System.Runtime.Serialization.Json; using System.Text; using System.Text.Json; namespace CoreLibrary.Persistance { public class Persistance : IPersistance { private readonly string joueursFilePath = "joueurs.json"; private readonly string partiesFilePath = "parties.json"; private readonly string ancienRepertoire = Directory.GetCurrentDirectory(); public bool EstEnregistre { get; private set; } public List ChargerJoueurs() { if (!File.Exists(joueursFilePath)) { return new List(); } DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); List joueurs; using (FileStream s = File.OpenRead(joueursFilePath)) { joueurs = jsonSerializer.ReadObject(s) as List; } return joueurs; } public List ChargerParties() { if (!File.Exists(partiesFilePath)) { return new List(); } DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); List parties; using (FileStream s = File.OpenRead(partiesFilePath)) { parties = jsonSerializer.ReadObject(s) as List; } return parties; } public void EnregistrerJoueurs(List joueurs) { DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); using (FileStream s = File.Create(Path.Combine(joueursFilePath, "../.."))) { using (var writer = JsonReaderWriterFactory.CreateJsonWriter( s, Encoding.UTF8, false, true)) { jsonSerializer.WriteObject(writer, joueurs); } } EstEnregistre = true; Directory.SetCurrentDirectory(ancienRepertoire); } public void EnregistrerParties(List parties) { DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(List)); using (FileStream s = File.Create(Path.Combine(partiesFilePath, "../.."))) { using (var writer = JsonReaderWriterFactory.CreateJsonWriter( s, Encoding.UTF8, false, true)) { jsonSerializer.WriteObject(writer, parties); } } EstEnregistre = true; Directory.SetCurrentDirectory(ancienRepertoire); } } }