From a922fe3154352baf2194a6dd44f6d316e3a76c46 Mon Sep 17 00:00:00 2001 From: vidufour1 Date: Fri, 2 Jun 2023 08:47:19 +0200 Subject: [PATCH] =?UTF-8?q?syst=C3=A8me=20de=20sauvegarde=20et=20recup=20f?= =?UTF-8?q?onctionnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataContractPers.cs | 41 ++++++++++++++++++- MusiLib/MusiLib/Model/IPersistanceManager.cs | 4 +- MusiLib/MusiLib/Model/Manager.cs | 9 +++- MusiLib/MusiLib/Stub/Stub.cs | 7 +++- MusiLib/MusiLib/Views/Favoris.xaml.cs | 5 ++- MusiLib/MusiLib/Views/PartitionView.xaml.cs | 9 ++-- 6 files changed, 65 insertions(+), 10 deletions(-) diff --git a/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs b/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs index 075f93c..94d632f 100644 --- a/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs +++ b/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs @@ -71,7 +71,7 @@ namespace MusiLib.DataContractPersistance } } - public void sauvegardeFavori(Partition fav) + public void sauvegardeFavoriAdd(Partition fav) { var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist)); @@ -105,5 +105,44 @@ namespace MusiLib.DataContractPersistance Debug.WriteLine("Nouveau favori sauvegardé !"); } + public void sauvegardeFavoriRemove(Partition fav) + { + var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist)); + + if (!Directory.Exists(FilePath)) + { + Debug.WriteLine("Directory créé à l'instant"); + Debug.WriteLine(Directory.GetDirectoryRoot(FilePath)); + Debug.WriteLine(FilePath); + Directory.CreateDirectory(FilePath); + } + + List favoris = new List(); + using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, FileNameFU))) + { + DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist; + if (data != null && data.favoris != null) + { + favoris = data.favoris; + } + } + + favoris.RemoveAll(f => f.Nom == fav.Nom); + + using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU))) + { + DataToPersist data = new DataToPersist(); + data.favoris = favoris; + foreach(var f in favoris) + { + Console.WriteLine(f.Nom); + } + favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data); + } + + Debug.WriteLine("Favori supprimé de la sauvegarde !"); + } + + } } \ No newline at end of file diff --git a/MusiLib/MusiLib/Model/IPersistanceManager.cs b/MusiLib/MusiLib/Model/IPersistanceManager.cs index 6e400ca..c7bfa63 100644 --- a/MusiLib/MusiLib/Model/IPersistanceManager.cs +++ b/MusiLib/MusiLib/Model/IPersistanceManager.cs @@ -12,6 +12,8 @@ namespace MusiLib.Model void sauvegardeDonnees(List p, List u, List f); - void sauvegardeFavori(Partition fav); + void sauvegardeFavoriAdd(Partition fav); + + void sauvegardeFavoriRemove(Partition fav); } } diff --git a/MusiLib/MusiLib/Model/Manager.cs b/MusiLib/MusiLib/Model/Manager.cs index 3d41170..1a7772f 100644 --- a/MusiLib/MusiLib/Model/Manager.cs +++ b/MusiLib/MusiLib/Model/Manager.cs @@ -53,9 +53,14 @@ namespace MusiLib.Model Persistance.sauvegardeDonnees(partitions, utilisateurs, favoris); } - public void sauvegardeFavori(Partition fav) + public void sauvegardeFavoriAdd(Partition fav) { - Persistance.sauvegardeFavori(fav); + Persistance.sauvegardeFavoriAdd(fav); + } + + public void sauvegardeFavoriRemove(Partition fav) + { + Persistance.sauvegardeFavoriRemove(fav); } } diff --git a/MusiLib/MusiLib/Stub/Stub.cs b/MusiLib/MusiLib/Stub/Stub.cs index 8bc4f2b..1d47375 100644 --- a/MusiLib/MusiLib/Stub/Stub.cs +++ b/MusiLib/MusiLib/Stub/Stub.cs @@ -50,7 +50,12 @@ namespace MusiLib.Stub } - public void sauvegardeFavori(Partition fav) + public void sauvegardeFavoriAdd(Partition fav) + { + + } + + public void sauvegardeFavoriRemove(Partition fav) { } diff --git a/MusiLib/MusiLib/Views/Favoris.xaml.cs b/MusiLib/MusiLib/Views/Favoris.xaml.cs index 6acc823..3671eb7 100644 --- a/MusiLib/MusiLib/Views/Favoris.xaml.cs +++ b/MusiLib/MusiLib/Views/Favoris.xaml.cs @@ -62,7 +62,10 @@ public partial class Favoris : ContentPage, IAllowClick foreach (Partition favoris in partitionsFiltrees) { - int indicePartition = MyManager.partitions.IndexOf(favoris); + /*int indicePartition = MyManager.partitions.IndexOf(favoris);*/ + + string nomFavori = favoris.Nom; + int indicePartition = MyManager.partitions.FindIndex(partition => partition.Nom == nomFavori); ImageButton imageButton = new ImageButton { diff --git a/MusiLib/MusiLib/Views/PartitionView.xaml.cs b/MusiLib/MusiLib/Views/PartitionView.xaml.cs index eda95a4..d356da6 100644 --- a/MusiLib/MusiLib/Views/PartitionView.xaml.cs +++ b/MusiLib/MusiLib/Views/PartitionView.xaml.cs @@ -85,7 +85,7 @@ public partial class PartitionView : ContentPage private void InitializeButton() { - if (MyManager.favoris.Contains(MyManager.partitions[IdTab])) + if (MyManager.favoris.Any(favori => favori.Nom == MyManager.partitions[IdTab].Nom)) { favoriButton.Source = "etoile.png"; } @@ -99,15 +99,16 @@ public partial class PartitionView : ContentPage { ImageButton button = (ImageButton)sender; - if (!MyManager.favoris.Contains(MyManager.partitions[IdTab])) + if (!MyManager.favoris.Any(favori => favori.Nom == MyManager.partitions[IdTab].Nom)) { MyManager.favoris.Add(MyManager.partitions[IdTab]); - MyManager.sauvegardeFavori(MyManager.partitions[IdTab]); + MyManager.sauvegardeFavoriAdd(MyManager.partitions[IdTab]); button.Source = "etoile.png"; } else { - MyManager.favoris.Remove(MyManager.partitions[IdTab]); + MyManager.favoris.RemoveAll(f => f.Nom == MyManager.partitions[IdTab].Nom); + MyManager.sauvegardeFavoriRemove(MyManager.partitions[IdTab]); button.Source = "etoile_vide.png"; } }