You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.4 KiB
69 lines
2.4 KiB
using Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Runtime.Serialization;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Xml;
|
|
using System.Runtime.Serialization.Json;
|
|
using System.IO;
|
|
using System.Xml.Serialization;
|
|
using System.Collections.ObjectModel;
|
|
using System.Text.Json;
|
|
|
|
namespace DataContractPersistance
|
|
{
|
|
public class DataContractJSON : IPersistanceManager
|
|
{
|
|
public string FileName { get; set; } = "data.json";
|
|
|
|
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
|
|
|
|
public (ObservableCollection<Jeu>, List<Admin>, List<Utilisateur>) ChargeDonnees()
|
|
{
|
|
DataContractJsonSerializer JsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist));
|
|
DataToPersist? data = new DataToPersist();
|
|
|
|
using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName)))
|
|
{
|
|
data = JsonSerializer.ReadObject(s) as DataToPersist;
|
|
}
|
|
return (data!.Jeux, data.Admins, data.Utilisateurs);
|
|
}
|
|
|
|
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> users)
|
|
{
|
|
DataContractJsonSerializer JsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist));
|
|
|
|
if(!Directory.Exists(FilePath))
|
|
{
|
|
Debug.WriteLine("Directory créé");
|
|
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
|
|
Debug.WriteLine(FilePath);
|
|
Directory.CreateDirectory(FilePath);
|
|
}
|
|
|
|
DataToPersist data = new DataToPersist();
|
|
data.Jeux = jeux;
|
|
data.Admins = admins;
|
|
data.Utilisateurs = users;
|
|
|
|
var settings = new XmlWriterSettings() { Indent = true };
|
|
using (FileStream stream = File.Create(Path.Combine(FilePath, FileName)))
|
|
{
|
|
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(
|
|
stream,
|
|
Encoding.UTF8,
|
|
false,
|
|
true)) // Indentation
|
|
{
|
|
JsonSerializer.WriteObject(writer, data);
|
|
writer.Flush();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|