diff --git a/src/Banquale/Banquale/App.xaml.cs b/src/Banquale/Banquale/App.xaml.cs
index 011c988..5aee24c 100644
--- a/src/Banquale/Banquale/App.xaml.cs
+++ b/src/Banquale/Banquale/App.xaml.cs
@@ -7,7 +7,7 @@ namespace Banquale;
public partial class App : Application
{
- public Manager MyManager { get; private set; } = new Manager(new Stub.Stub() /*DataContractPersistance.DataContractPers()*/);
+ public Manager MyManager { get; private set; } = new Manager(new Stub.Stub() /*DataContractPersistance.DataContractPersXML()*/);
@@ -15,7 +15,7 @@ public partial class App : Application
{
MyManager.DataLoad();
- MyManager.Persistence = new DataContractPersistance.DataContractPers();
+ MyManager.Persistence = new DataContractPersistance.DataContractPersXML();
MyManager.DataSave();
InitializeComponent();
diff --git a/src/Banquale/Banquale/Banquale.csproj b/src/Banquale/Banquale/Banquale.csproj
index cc45e25..44d300a 100644
--- a/src/Banquale/Banquale/Banquale.csproj
+++ b/src/Banquale/Banquale/Banquale.csproj
@@ -70,7 +70,6 @@
-
diff --git a/src/Banquale/Banquale/DataContractPersistance/DataContractPersJSON.cs b/src/Banquale/Banquale/DataContractPersistance/DataContractPersJSON.cs
new file mode 100644
index 0000000..85df3fb
--- /dev/null
+++ b/src/Banquale/Banquale/DataContractPersistance/DataContractPersJSON.cs
@@ -0,0 +1,57 @@
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using System.Threading.Tasks;
+
+
+
+namespace Banquale.DataContractPersistance
+{
+ public class DataContractPersJSON : IPersistenceManager
+ {
+
+ public string FilePath { get; set; } = FileSystem.Current.AppDataDirectory;
+ public string FileName { get; set; } = "DataSave.json";
+
+
+ public (List, Consultant) DataLoad()
+ {
+ DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist));
+
+ DataToPersist data;
+
+ using (FileStream stream2 = File.OpenRead(Path.Combine(FilePath, FileName)))
+ {
+ data = jsonSerializer.ReadObject(stream2) as DataToPersist;
+ }
+
+ return (data.customer, data.consultant);
+
+ }
+
+ public void DataSave(List cu, Consultant co)
+ {
+
+ DataToPersist data = new DataToPersist();
+ data.customer = cu;
+ data.consultant = co;
+
+ DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist));
+ using (FileStream stream = File.Create(Path.Combine(FilePath, FileName)))
+ {
+ using (var writer = JsonReaderWriterFactory.CreateJsonWriter(
+ stream,
+ System.Text.Encoding.UTF8,
+ false,
+ true))//<- this boolean says that we sant indentation
+ {
+ jsonSerializer.WriteObject(writer, data);
+ }
+ }
+ }
+ }
+}
diff --git a/src/Banquale/Banquale/DataContractPersistance/DataContractPers.cs b/src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs
similarity index 92%
rename from src/Banquale/Banquale/DataContractPersistance/DataContractPers.cs
rename to src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs
index 70485c2..893ee04 100644
--- a/src/Banquale/Banquale/DataContractPersistance/DataContractPers.cs
+++ b/src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs
@@ -8,7 +8,7 @@ using System.Xml;
namespace Banquale.DataContractPersistance
{
- public class DataContractPers : IPersistenceManager
+ public class DataContractPersXML : IPersistenceManager
{
//public string FilePath { get; set; } = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/datbase.xml";
@@ -51,7 +51,8 @@ namespace Banquale.DataContractPersistance
public void DataSave(List cu, Consultant co)
{
- var serializer = new DataContractSerializer(typeof(DataToPersist));
+ var serializer = new DataContractSerializer(typeof(DataToPersist), new DataContractSerializerSettings() { PreserveObjectReferences = true });
+ // La deuxième partie sert à faire des références, cela sert à ne pas duppliquer l'écriture de certains attributs
if (!Directory.Exists(FilePath))
{
diff --git a/src/Banquale/Banquale/Stub/Stub.cs b/src/Banquale/Banquale/Stub/Stub.cs
index a401216..3749c51 100644
--- a/src/Banquale/Banquale/Stub/Stub.cs
+++ b/src/Banquale/Banquale/Stub/Stub.cs
@@ -20,7 +20,7 @@ namespace Banquale.Stub
Customer Customer2 = new Customer("Francis", "Begore", "Halo");
Customer Customer3 = new Customer("Michel", "Boudout", "Hola");
- Account Account1 = new Account(999, "Tatouille", "FR76 9161 9581 6296 8415 2361 004");
+ Account Account1 = new Account(999, "Tatouille", "FR7691619581629684152361004");
Account Account2 = new Account(9510, "Despoints", "FR7647858569691441525263003");
Account Account3 = new Account(3519, "Perotte", "FR7663522541416969585847002");
diff --git a/src/Banquale/Banquale/Views/BalancePage.xaml b/src/Banquale/Banquale/Views/BalancePage.xaml
index 9915d12..0ef8203 100644
--- a/src/Banquale/Banquale/Views/BalancePage.xaml
+++ b/src/Banquale/Banquale/Views/BalancePage.xaml
@@ -69,12 +69,13 @@
Grid.Row="1"
HeightRequest="1"/>
-
+
diff --git a/src/Banquale/Banquale/Views/BalancePage.xaml.cs b/src/Banquale/Banquale/Views/BalancePage.xaml.cs
index a041029..33a525b 100644
--- a/src/Banquale/Banquale/Views/BalancePage.xaml.cs
+++ b/src/Banquale/Banquale/Views/BalancePage.xaml.cs
@@ -33,7 +33,7 @@ public partial class BalancePage : ContentPage
if (string.IsNullOrWhiteSpace(idLabel.Text))
{
- await DisplayAlert("Erreur", "aucune transaction présente", "OK");
+ await DisplayAlert("Erreur", "Aucune transaction présente", "OK");
return;
}
diff --git a/src/Banquale/Model/Account.cs b/src/Banquale/Model/Account.cs
index 09372d3..400ccde 100644
--- a/src/Banquale/Model/Account.cs
+++ b/src/Banquale/Model/Account.cs
@@ -16,12 +16,12 @@ namespace Model
/// Représente un compte bancaire.
///
[DataContract]
- public class Account : INotifyPropertyChanged, IEquatable
+ public class Account : INotifyPropertyChanged
{
///
/// Événement déclenché lorsqu'une propriété est modifiée.
///
- public event PropertyChangedEventHandler PropertyChanged;
+ public event PropertyChangedEventHandler? PropertyChanged;
///
/// Déclenche l'événement PropertyChanged pour une propriété donnée.
@@ -35,8 +35,8 @@ namespace Model
///
/// Obtient ou définit le solde du compte.
///
- [DataMember]
- public Double Balance
+ [DataMember(Order = 3)]
+ public double Balance
{
get => balance;
set
@@ -48,12 +48,12 @@ namespace Model
}
}
[DataMember]
- private Double balance;
+ private double balance;
///
/// Obtient ou définit le nom du titulaire du compte.
///
- [DataMember]
+ [DataMember(Order = 1)]
public string Name
{
get => name;
@@ -71,7 +71,7 @@ namespace Model
///
/// Obtient ou définit le numéro IBAN du compte.
///
- [DataMember]
+ [DataMember(Order = 2)]
public string IBAN
{
get => iban;
@@ -89,7 +89,7 @@ namespace Model
///
/// Obtient une version masquée du numéro IBAN du compte.
///
- [DataMember]
+ [DataMember(Order = 4)]
public string IBANHide
{
get => ibanHide;
@@ -107,7 +107,7 @@ namespace Model
///
/// Obtient ou définit la liste des transactions effectuées sur le compte.
///
- [DataMember]
+ [DataMember(Order = 5)]
public List TransactionsList { get; set; } = new List();
///
@@ -178,6 +178,7 @@ namespace Model
return new string(res);
}
+
///
/// Vérifie si deux comptes sont égaux en comparant leur numéro IBAN.
///
diff --git a/src/Banquale/Model/Customer.cs b/src/Banquale/Model/Customer.cs
index f2f6184..5ad9c2f 100644
--- a/src/Banquale/Model/Customer.cs
+++ b/src/Banquale/Model/Customer.cs
@@ -13,7 +13,7 @@ namespace Model
/// Représente un client.
///
[DataContract]
- public class Customer : Person
+ public class Customer : Person, IEquatable//, IComparable
{
///
/// Liste des comptes du client.
@@ -28,7 +28,18 @@ namespace Model
/// Prénom du client.
/// Mot de passe du client.
public Customer(string name, string firstName, string password) : base(name, firstName, password)
- { }
+ {}
+
+ public bool Equals(Customer? other)
+ {
+ if (other == null) return false;
+ else return other.Id.Equals(Id);
+ }
+
+ public override int GetHashCode()
+ {
+ return Id.GetHashCode();
+ }
}
}
diff --git a/src/Banquale/Model/Manager.cs b/src/Banquale/Model/Manager.cs
index 305498c..61d5862 100644
--- a/src/Banquale/Model/Manager.cs
+++ b/src/Banquale/Model/Manager.cs
@@ -15,11 +15,11 @@ namespace Model
///
[DataContract]
public class Manager : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
+ {
+ public event PropertyChangedEventHandler? PropertyChanged;
- void OnPropertyChanged([CallerMemberName] string propertyName = null)
- => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ void OnPropertyChanged([CallerMemberName] string? propertyName = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
///
/// Liste des clients gérés par le gestionnaire.
diff --git a/src/Banquale/Model/Transaction.cs b/src/Banquale/Model/Transaction.cs
index c74c7f4..c68e10a 100644
--- a/src/Banquale/Model/Transaction.cs
+++ b/src/Banquale/Model/Transaction.cs
@@ -22,13 +22,13 @@ namespace Model
///
/// Gets the unique identifier of the transaction.
///
- [DataMember]
+ [DataMember(Order = 1)]
public int Id { get; private set; }
///
/// Gets or sets the type of the transaction (debit or credit).
///
- [DataMember]
+ [DataMember(Order = 2)]
public bool Type
{
get => type;
@@ -46,7 +46,7 @@ namespace Model
///
/// Gets or sets the sum of the transaction.
///
- [DataMember]
+ [DataMember(Order = 3)]
public double Sum
{
get => sum;
@@ -64,7 +64,7 @@ namespace Model
///
/// Gets or sets the account(s) involved in the transaction.
///
- [DataMember]
+ [DataMember(Order = 4)]
public Account InvolvedAccounts
{
get => involvedAccounts;
@@ -82,7 +82,7 @@ namespace Model
///
/// Gets or sets the category of the transaction.
///
- [DataMember]
+ [DataMember(Order = 5)]
public string Category
{
get => category;
@@ -95,12 +95,12 @@ namespace Model
}
}
[DataMember]
- private string category;
+ private string? category;
///
/// Gets or sets the date of the transaction.
///
- [DataMember]
+ [DataMember(Order = 6)]
public DateTime Date
{
get => date;
@@ -131,5 +131,11 @@ namespace Model
InvolvedAccounts = involvedAccounts;
Date = date;
}
+
+ public void ChangeCategory(string newCateg)
+ {
+ Category = newCateg;
+ }
+
}
}