using Modèle; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace Persistance { public class DataContractPersistance : IPersistanceManager { // 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"); // Noms des fichiers string FileNameReq { get; set; } = "ficReq"; string FileNameReqAdd { get; set; } = "ficReqAdd"; string FileNameReqEdit { get; set; } = "ficReqEdit"; string FileNameUsers { get; set; } = "ficUsers"; // 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(); // Méthodes pour les requins de l'application public List LoadRequins() { if (!File.Exists(FileReq)) { throw new FileNotFoundException("The persisance ficReq does not exist"); } using (Stream stream = File.OpenRead(FileReq)) { requins = SerializerReq.ReadObject(stream) as List; } return requins; } public void SaveRequins(List reqs) { if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } using (Stream stream = File.Create(FileReq)) { SerializerReq.WriteObject(stream, requins); } } // 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) { if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } using (Stream stream = File.Create(FileReqAdd)) { SerializerReq.WriteObject(stream, requinsAdd); } } // Méthodes pour les requins édités par les utilisateurs public List LoadRequinsEdit() { if (!File.Exists(FileReqEdit)) { throw new FileNotFoundException("The persisance file ficReqEdit does not exist"); } using (Stream stream = File.OpenRead(FileReqEdit)) { requinsEdit = SerializerReq.ReadObject(stream) as List; } return requinsEdit; } public void SaveRequinsEdit(List reqs) { if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } using (Stream stream = File.Create(FileReqEdit)) { SerializerReq.WriteObject(stream, 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) { if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } using (Stream stream = File.Create(FileUsers)) { SerializerUsers.WriteObject(stream, users); } } } }