pull/9/head
Clement LESME 2 years ago
parent 18aba0fa22
commit 0a101baf64

@ -6,7 +6,8 @@ namespace CanYouBuildIt;
public partial class App : Application public partial class App : Application
{ {
public Manager manager { get; private set; } = new Manager(new DataContractPersistance.DataContractPers()); public Manager manager { get; private set; } = new Manager(new Stub());
//public Manager manager { get; private set; } = new Manager(new DataContractPersistance.DataContractPers());
public App() public App()
{ {
manager.chargeDonne(); manager.chargeDonne();

@ -4,16 +4,19 @@
<lu xmlns:d2p1="http://schemas.datacontract.org/2004/07/CanYouBuildIt.Model"> <lu xmlns:d2p1="http://schemas.datacontract.org/2004/07/CanYouBuildIt.Model">
<d2p1:Utilisateur> <d2p1:Utilisateur>
<d2p1:listBuild i:nil="true" /> <d2p1:listBuild i:nil="true" />
<d2p1:listFav xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
<d2p1:password>1234</d2p1:password> <d2p1:password>1234</d2p1:password>
<d2p1:username>Clément</d2p1:username> <d2p1:username>Clément</d2p1:username>
</d2p1:Utilisateur> </d2p1:Utilisateur>
<d2p1:Utilisateur> <d2p1:Utilisateur>
<d2p1:listBuild i:nil="true" /> <d2p1:listBuild i:nil="true" />
<d2p1:listFav xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
<d2p1:password>vivien</d2p1:password> <d2p1:password>vivien</d2p1:password>
<d2p1:username>Vivien</d2p1:username> <d2p1:username>Vivien</d2p1:username>
</d2p1:Utilisateur> </d2p1:Utilisateur>
<d2p1:Utilisateur> <d2p1:Utilisateur>
<d2p1:listBuild i:nil="true" /> <d2p1:listBuild i:nil="true" />
<d2p1:listFav xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
<d2p1:password>0000</d2p1:password> <d2p1:password>0000</d2p1:password>
<d2p1:username>Kevin</d2p1:username> <d2p1:username>Kevin</d2p1:username>
</d2p1:Utilisateur> </d2p1:Utilisateur>

@ -19,40 +19,43 @@ namespace CanYouBuildIt.DataContractPersistance
public DataContractPers() public DataContractPers()
{ } { }
public (List<Utilisateur>,List<Composant>) chargeDonnee() public DataToPersist chargeDonnee()
{ //replacer liste par datatopersiste {
var serializer = new DataContractSerializer(typeof(DataToPersist)); //-- Chemin de sauvegarde --//
string appDirectory = AppContext.BaseDirectory; string appDirectory = AppContext.BaseDirectory;
int sousDossier = 53; int sousDossier = 53;
FilePath = appDirectory.Substring(0, appDirectory.Length - sousDossier); FilePath = appDirectory.Substring(0, appDirectory.Length - sousDossier);
Directory.SetCurrentDirectory(FilePath); Directory.SetCurrentDirectory(FilePath);
FilePath = Path.Combine(FilePath, "Data"); FilePath = Path.Combine(FilePath, "Data");
DataToPersist data = new DataToPersist();
var serializer = new DataContractSerializer(typeof(DataToPersist));
DataToPersist data = new DataToPersist();
//-- Read fichier--//
using (Stream stream = File.OpenRead(Path.Combine(FilePath, FileName))) using (Stream stream = File.OpenRead(Path.Combine(FilePath, FileName)))
{ {
data = serializer.ReadObject(stream) as DataToPersist; data = serializer.ReadObject(stream) as DataToPersist;
} }
return (data.lu,data.lc); // return entre parentèses data.type1, data.type2 return data;
} }
public void sauvegardeDonnee(List<Utilisateur> lu, List<Composant> lc) public void sauvegardeDonnee(DataToPersist data)
{ {
//-- Chemin de sauvegarde --//
string appDirectory = AppContext.BaseDirectory; string appDirectory = AppContext.BaseDirectory;
int sousDossier = 53; int sousDossier = 53;
FilePath = appDirectory.Substring(0, appDirectory.Length - sousDossier); FilePath = appDirectory.Substring(0, appDirectory.Length - sousDossier);
Directory.SetCurrentDirectory(FilePath); Directory.SetCurrentDirectory(FilePath);
FilePath = Path.Combine(FilePath, "Data"); FilePath = Path.Combine(FilePath, "Data");
//-- Vérifie si le fichier et dossier existe déjà --//
var serializer = new DataContractSerializer (typeof(DataToPersist)); var serializer = new DataContractSerializer (typeof(DataToPersist));
if (!Directory.Exists(FilePath)) if (!Directory.Exists(FilePath))
{ {
Directory.CreateDirectory(FilePath); Directory.CreateDirectory(FilePath);
} }
DataToPersist data = new DataToPersist(); //-- Write fichier --//
data.lu = lu;
data.lc = lc;
var settings = new XmlWriterSettings() { Indent = true }; var settings = new XmlWriterSettings() { Indent = true };
using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName)))
{ {

@ -1,4 +1,5 @@
using System; using CanYouBuildIt.DataContractPersistance;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -8,8 +9,8 @@ namespace CanYouBuildIt.Model
{ {
public interface IPersistanceManager public interface IPersistanceManager
{ {
public (List<Utilisateur>,List<Composant>) chargeDonnee(); public DataToPersist chargeDonnee();
public void sauvegardeDonnee(List<Utilisateur> lu,List<Composant> lc); public void sauvegardeDonnee(DataToPersist data);
} }
} }

@ -1,4 +1,5 @@
using System; using CanYouBuildIt.DataContractPersistance;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.Serialization; using System.Runtime.Serialization;
@ -22,19 +23,23 @@ namespace CanYouBuildIt.Model
public Manager(IPersistanceManager pers) public Manager(IPersistanceManager pers)
{ {
listUtil = new List<Utilisateur>(); listUtil = new List<Utilisateur>();
listComp = new List<Composant>();
Persi = pers; Persi = pers;
} }
public void chargeDonne() public void chargeDonne()
{ {
var donnee = Persi.chargeDonnee(); DataToPersist donnee = Persi.chargeDonnee();
listUtil.AddRange(donnee.Item1); listUtil.AddRange(donnee.lu);
//listComp.AddRange(donnee.Item2); listComp.AddRange(donnee.lc);
} }
public void sauvegardeDonnee() public void sauvegardeDonnee()
{ {
Persi.sauvegardeDonnee(listUtil,listComp); DataToPersist data = new DataToPersist();
data.lu.AddRange(listUtil);
data.lc.AddRange(listComp);
Persi.sauvegardeDonnee(data);
} }
public void ajouterUtilisateur(Utilisateur utilisateur) public void ajouterUtilisateur(Utilisateur utilisateur)

@ -1,5 +1,7 @@
using System; using CanYouBuildIt.DataContractPersistance;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -9,7 +11,7 @@ namespace CanYouBuildIt.Model
public class Stub : IPersistanceManager public class Stub : IPersistanceManager
{ {
public Stub() { } public Stub() { }
public (List<Utilisateur>,List<Composant>) chargeDonnee() public DataToPersist chargeDonnee()
{ {
List<Utilisateur> lu = new List<Utilisateur>(); List<Utilisateur> lu = new List<Utilisateur>();
List<Composant> lc = new List<Composant>(); List<Composant> lc = new List<Composant>();
@ -26,10 +28,15 @@ namespace CanYouBuildIt.Model
lc.Add(c1); lc.Add(c1);
lc.Add(c2); lc.Add(c2);
return (lu,lc); DataToPersist data = new DataToPersist();
data.lu.AddRange(lu);
data.lc.AddRange(lc);
return data;
} }
public void sauvegardeDonnee(List<Utilisateur> lu,List<Composant> lc) public void sauvegardeDonnee(DataToPersist data)
{ } { }
} }
} }

@ -16,13 +16,16 @@ namespace CanYouBuildIt.Model
public string password { get; private set; } public string password { get; private set; }
[DataMember] [DataMember]
public List<Build> listBuild; public List<Build> listBuild;
[DataMember]
public List<int> listFav;
public Utilisateur(string name, string pass, List<Build> listbuild = null) public Utilisateur(string name, string pass, List<Build> listbuild = null, List<int> listfav = null)
{ {
username = name; username = name;
password = pass; password = pass;
listBuild = listbuild; listBuild = listbuild;
listFav = listfav;
} }
} }
} }

@ -8,9 +8,34 @@
<VerticalStackLayout> <VerticalStackLayout>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Source="logoapp.png" <Image Source="logoapp.png"
Grid.Row="0" Grid.Column="1"
MaximumHeightRequest="150"/> MaximumHeightRequest="150"/>
<Button BackgroundColor="DimGrey"
Clicked="NavLogin"
Grid.Row="0" Grid.Column="2"
HorizontalOptions="End"
Margin="0,0,75,0"
MaximumHeightRequest="50"
Text="Login"
TextColor="Snow"
x:Name="Log"/>
</Grid>
<Grid Margin="0,50,0,0"> <Grid Margin="0,50,0,0">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition /> <RowDefinition />
@ -84,20 +109,9 @@
Clicked="NavFav" Clicked="NavFav"
Grid.Row="0" Grid.Column="5" Grid.Row="0" Grid.Column="5"
HorizontalOptions="Center" HorizontalOptions="Center"
Text="Favoris"
TextColor="Snow" TextColor="Snow"
x:Name="Fav" x:Name="Fav"/>
Text="Favoris"/>
<ListView Grid.Row="1" Grid.Column="4"
ItemsSource="{Binding listUtil}"
x:Name="utilView">
<ListView.ItemTemplate>
<DataTemplate>
<Label Text="{Binding listUtil.username}"
TextColor="Black"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Label Text="{Binding listUtil[0].username}"/> <Label Text="{Binding listUtil[0].username}"/>
@ -119,13 +133,13 @@
</Grid> </Grid>
<Label Text="WARNING ! Vous devez vous connecter pour acceder au favoris." <Label BackgroundColor="Red"
IsVisible="false"
x:Name="aConnecter"
BackgroundColor="Red"
FontAttributes="Bold" FontAttributes="Bold"
Margin="0,-125"
HorizontalOptions="Center" HorizontalOptions="Center"
WidthRequest="500"/> IsVisible="false"
Margin="0,-125"
Text="WARNING ! Vous devez vous connecter pour acceder au favoris."
WidthRequest="500"
x:Name="aConnecter"/>
</VerticalStackLayout> </VerticalStackLayout>
</ContentPage> </ContentPage>

@ -34,7 +34,7 @@ public partial class Acceuil : ContentPage
private async void NavFav(object sender, EventArgs e) private async void NavFav(object sender, EventArgs e)
{ {
if (connecte) if (connecte)
await Navigation.PushAsync(new Favoris()); await Navigation.PushAsync(new Favoris(user));
else else
{ {
aConnecter.IsVisible = true; aConnecter.IsVisible = true;

@ -5,14 +5,15 @@ namespace CanYouBuildIt.Views;
public partial class Favoris : ContentPage public partial class Favoris : ContentPage
{ {
public Favoris() int user;
public Favoris(int iduser)
{ {
InitializeComponent(); InitializeComponent();
user = iduser;
} }
private async void BackHome(object sender, EventArgs e) private async void BackHome(object sender, EventArgs e)
{ {
await Navigation.PopAsync(); await Navigation.PopAsync();
} }
} }
Loading…
Cancel
Save