diff --git a/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs b/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs new file mode 100644 index 0000000..a547100 --- /dev/null +++ b/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs @@ -0,0 +1,68 @@ +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, List, List) 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 jeux, List admins, List 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(); + } + } + } + } +} diff --git a/Sources/GameAtlas/DataContractPersistance/DataContractPersistance.csproj b/Sources/GameAtlas/DataContractPersistance/DataContractPersistance.csproj new file mode 100644 index 0000000..6e7c50f --- /dev/null +++ b/Sources/GameAtlas/DataContractPersistance/DataContractPersistance.csproj @@ -0,0 +1,13 @@ + + + + net7.0 + enable + enable + + + + + + + diff --git a/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs b/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs new file mode 100644 index 0000000..40c4ef1 --- /dev/null +++ b/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs @@ -0,0 +1,61 @@ +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.IO; +using System.Xml.Serialization; +using System.Collections.ObjectModel; + +namespace DataContractPersistance +{ + public class DataContractXML : IPersistanceManager + { + public string FileName { get; set; } = "data.xml"; + + public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); + + public (ObservableCollection, List, List) ChargeDonnees() + { + var serializer = new DataContractSerializer(typeof(DataToPersist)); + DataToPersist? data = new DataToPersist(); + + using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) + { + data = serializer.ReadObject(s) as DataToPersist; + } + return (data!.Jeux, data.Admins, data.Utilisateurs); + } + + public void SauvegardeDonnees(ObservableCollection jeux, List admins, List users) + { + var serializer = new DataContractSerializer(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 (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) + { + using (XmlWriter writer = XmlWriter.Create(tw, settings)) + { + serializer.WriteObject(writer, data); + } + } + } + } +} diff --git a/Sources/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs b/Sources/GameAtlas/DataContractPersistance/DataToPersist.cs similarity index 54% rename from Sources/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs rename to Sources/GameAtlas/DataContractPersistance/DataToPersist.cs index 511eb76..be93e1f 100644 --- a/Sources/GameAtlas/GameAtlas/DataContractPersistance/DataToPersist.cs +++ b/Sources/GameAtlas/DataContractPersistance/DataToPersist.cs @@ -6,12 +6,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace GameAtlas.DataContractPersistance +namespace DataContractPersistance { public class DataToPersist { - public ObservableCollection jeux { get; set; } = new ObservableCollection(); - public List admins { get; set; } = new List(); - public List utilisateurs { get; set; } = new List(); + public ObservableCollection Jeux { get; set; } = new ObservableCollection(); + public List Admins { get; set; } = new List(); + public List Utilisateurs { get; set; } = new List(); } } diff --git a/Sources/GameAtlas/GameAtlas.sln b/Sources/GameAtlas/GameAtlas.sln index 6cf5783..ba41a6c 100644 --- a/Sources/GameAtlas/GameAtlas.sln +++ b/Sources/GameAtlas/GameAtlas.sln @@ -5,9 +5,13 @@ VisualStudioVersion = 17.0.31611.283 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GameAtlas", "GameAtlas\GameAtlas.csproj", "{D3C0D86A-FF1B-4C1B-AA60-537889127607}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Models", "Models\Models.csproj", "{0B50E976-EC7C-4A88-96DA-632162084160}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Models", "Models\Models.csproj", "{0B50E976-EC7C-4A88-96DA-632162084160}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{6DD3E0DA-035C-411E-ABB4-794181D25A72}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{6DD3E0DA-035C-411E-ABB4-794181D25A72}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataContractPersistance", "DataContractPersistance\DataContractPersistance.csproj", "{B8902707-9F3B-41D0-8D5C-72ABED9323C2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stub", "Stub\Stub.csproj", "{A6BAE3C5-B7EB-4090-9050-65721F861DD4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -29,6 +33,14 @@ Global {6DD3E0DA-035C-411E-ABB4-794181D25A72}.Debug|Any CPU.Build.0 = Debug|Any CPU {6DD3E0DA-035C-411E-ABB4-794181D25A72}.Release|Any CPU.ActiveCfg = Release|Any CPU {6DD3E0DA-035C-411E-ABB4-794181D25A72}.Release|Any CPU.Build.0 = Release|Any CPU + {B8902707-9F3B-41D0-8D5C-72ABED9323C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B8902707-9F3B-41D0-8D5C-72ABED9323C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8902707-9F3B-41D0-8D5C-72ABED9323C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B8902707-9F3B-41D0-8D5C-72ABED9323C2}.Release|Any CPU.Build.0 = Release|Any CPU + {A6BAE3C5-B7EB-4090-9050-65721F861DD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6BAE3C5-B7EB-4090-9050-65721F861DD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6BAE3C5-B7EB-4090-9050-65721F861DD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6BAE3C5-B7EB-4090-9050-65721F861DD4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Sources/GameAtlas/GameAtlas/App.xaml.cs b/Sources/GameAtlas/GameAtlas/App.xaml.cs index b5acf28..482eea9 100644 --- a/Sources/GameAtlas/GameAtlas/App.xaml.cs +++ b/Sources/GameAtlas/GameAtlas/App.xaml.cs @@ -1,13 +1,14 @@ using Models; +using Stub; +using DataContractPersistance; using GameAtlas.Views; -using GameAtlas.Stub; namespace GameAtlas; public partial class App : Application { - public string FileName { get; set; } = "data.xml"; + public string FileName { get; set; } = "data.json"; // data.xml public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); @@ -18,7 +19,8 @@ public partial class App : Application if (File.Exists(Path.Combine(FilePath, FileName))) { - MyManager = new Manager(new DataContractPersistance.DataContractPers()); + //MyManager = new Manager(new DataContractPersistance.DataContractXML()); + MyManager = new Manager(new DataContractPersistance.DataContractJSON()); } @@ -29,7 +31,8 @@ public partial class App : Application if (!File.Exists(Path.Combine(FilePath, FileName))) { - MyManager.Persistance = new DataContractPersistance.DataContractPers(); + //MyManager.Persistance = new DataContractPersistance.DataContractXML(); + MyManager.Persistance = new DataContractPersistance.DataContractJSON(); } diff --git a/Sources/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs b/Sources/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs deleted file mode 100644 index 77b415d..0000000 --- a/Sources/GameAtlas/GameAtlas/DataContractPersistance/DataContractPers.cs +++ /dev/null @@ -1,104 +0,0 @@ -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.IO; -using System.Xml.Serialization; -using System.Collections.ObjectModel; - -namespace GameAtlas.DataContractPersistance -{ - public class DataContractPers : IPersistanceManager - { - public string FileName { get; set; } = "data.xml"; - - public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/data"; - - public (ObservableCollection, List, List) ChargeDonnees() - { - var serializer = new DataContractSerializer(typeof(DataToPersist)); - DataToPersist data = new DataToPersist(); - - using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) - { - data = serializer.ReadObject(s) as DataToPersist; - } - return (data.jeux, data.admins, data.utilisateurs); - } - - public void SauvegardeDonnees(ObservableCollection jeux, List admins, List users) - { - var serializer = new DataContractSerializer(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 (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) - { - using (XmlWriter writer = XmlWriter.Create(tw, settings)) - { - serializer.WriteObject(writer, data); - } - } - - /*using (Stream s = File.Create(Path.Combine(FilePath, FileName))) - { - serializer.WriteObject(s, users); - }*/ - } - - public void SauvegardeUser(Utilisateur user) - { - var serializer = new DataContractSerializer(typeof(List)); - - if (!Directory.Exists(FilePath)) - { - Debug.WriteLine("Directory créé"); - Debug.WriteLine(FilePath); - Directory.CreateDirectory(FilePath); - } - - var settings = new XmlWriterSettings() { Indent = true }; - using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) - { - using (XmlWriter writer = XmlWriter.Create(tw, settings)) - { - serializer.WriteObject(writer, new List { user }); - } - } - - Debug.WriteLine("Un utilisateur a été sauvegardé !"); - } - - - /*public (List, List) ChargeDonnees2() - { - var serializer = new DataContractSerializer(typeof(List)); - - DataToPersist data; - using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) - { - data = serializer.ReadObject(s) as DataToPersist; - } - return (data.jeux, data.users); - }*/ - - - } -} diff --git a/Sources/GameAtlas/GameAtlas/GameAtlas.csproj b/Sources/GameAtlas/GameAtlas/GameAtlas.csproj index f05dd93..73bc931 100644 --- a/Sources/GameAtlas/GameAtlas/GameAtlas.csproj +++ b/Sources/GameAtlas/GameAtlas/GameAtlas.csproj @@ -135,6 +135,8 @@ + + diff --git a/Sources/GameAtlas/GameAtlas/Views/PageAccueil.xaml b/Sources/GameAtlas/GameAtlas/Views/PageAccueil.xaml index cf1d421..ca35a56 100644 --- a/Sources/GameAtlas/GameAtlas/Views/PageAccueil.xaml +++ b/Sources/GameAtlas/GameAtlas/Views/PageAccueil.xaml @@ -5,9 +5,6 @@ xmlns:views="clr-namespace:GameAtlas.Views.Composants" x:Class="GameAtlas.Views.PageAcceuil" Title="ACCUEIL"> - - - diff --git a/Sources/GameAtlas/GameAtlas/Views/PageAdmin.xaml b/Sources/GameAtlas/GameAtlas/Views/PageAdmin.xaml index 86da440..7c672f1 100644 --- a/Sources/GameAtlas/GameAtlas/Views/PageAdmin.xaml +++ b/Sources/GameAtlas/GameAtlas/Views/PageAdmin.xaml @@ -4,7 +4,7 @@ x:Class="GameAtlas.Views.PageAdmin" Title="Page Admin"> - + diff --git a/Sources/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs b/Sources/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs index 90d8d77..30aca9d 100644 --- a/Sources/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs +++ b/Sources/GameAtlas/GameAtlas/Views/PageConnexion.xaml.cs @@ -54,7 +54,8 @@ public partial class PageConnexion : ContentPage */ private async void OnInscrire_Tapped(object sender, EventArgs e) { - await Navigation.PushAsync(new PageInscription()); + await Navigation.PushModalAsync(new PageInscription()); + } /** diff --git a/Sources/GameAtlas/GameAtlas/Views/PageInscription.xaml.cs b/Sources/GameAtlas/GameAtlas/Views/PageInscription.xaml.cs index f60f8a7..2200f17 100644 --- a/Sources/GameAtlas/GameAtlas/Views/PageInscription.xaml.cs +++ b/Sources/GameAtlas/GameAtlas/Views/PageInscription.xaml.cs @@ -1,15 +1,18 @@ namespace GameAtlas.Views; using Models; -using GameAtlas.DataContractPersistance; +using DataContractPersistance; using System.Diagnostics; using System.Text.RegularExpressions; +using CommunityToolkit.Maui.Core; +using CommunityToolkit.Maui.Alerts; +using Font = Microsoft.Maui.Font; public partial class PageInscription : ContentPage { - DataContractPers PersistanceManager = new DataContractPers(); public Manager InscriptionManager => (App.Current as App).MyManager; + public PageInscription() { InitializeComponent(); @@ -45,10 +48,9 @@ public partial class PageInscription : ContentPage Utilisateur utilisateur = new Utilisateur(mail, username, password); InscriptionManager.AddUtilisateur(utilisateur); InscriptionManager.SauvegardeDonnees(); - //PersistanceManager.SauvegardeUser(utilisateur); Debug.WriteLine(InscriptionManager.Utilisateurs.Count); - //await Navigation.PushAsync(new PageAcceuil()); + await DisplayAlert("Compte crer avec succs !","Vous pouvez maintenant vous connecter.", cancel: "Ok"); await Shell.Current.GoToAsync("//page/PageAccueil"); @@ -86,4 +88,5 @@ public partial class PageInscription : ContentPage } + } \ No newline at end of file diff --git a/Sources/GameAtlas/GameAtlas/Views/PageJeu.xaml b/Sources/GameAtlas/GameAtlas/Views/PageJeu.xaml index 866cf40..f513864 100644 --- a/Sources/GameAtlas/GameAtlas/Views/PageJeu.xaml +++ b/Sources/GameAtlas/GameAtlas/Views/PageJeu.xaml @@ -4,7 +4,7 @@ x:Class="GameAtlas.Views.PageJeu" Title="PageJeu"> - + @@ -39,15 +39,7 @@