diff --git a/src/Banquale/Banquale.sln b/src/Banquale/Banquale.sln index 24e7bb1..1404094 100644 --- a/src/Banquale/Banquale.sln +++ b/src/Banquale/Banquale.sln @@ -5,6 +5,10 @@ VisualStudioVersion = 17.0.31611.283 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Banquale", "Banquale\Banquale.csproj", "{CB24D887-5DF3-4ED9-BAFF-DEA8F43253EE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Model", "Model\Model.csproj", "{5AF1A8C4-E970-43F7-B81A-83D706C3B1AE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTest", "UnitTest\UnitTest.csproj", "{F7D852DC-AC55-4164-A78C-EB4311F9D516}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -17,6 +21,14 @@ Global {CB24D887-5DF3-4ED9-BAFF-DEA8F43253EE}.Release|Any CPU.ActiveCfg = Release|Any CPU {CB24D887-5DF3-4ED9-BAFF-DEA8F43253EE}.Release|Any CPU.Build.0 = Release|Any CPU {CB24D887-5DF3-4ED9-BAFF-DEA8F43253EE}.Release|Any CPU.Deploy.0 = Release|Any CPU + {5AF1A8C4-E970-43F7-B81A-83D706C3B1AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5AF1A8C4-E970-43F7-B81A-83D706C3B1AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5AF1A8C4-E970-43F7-B81A-83D706C3B1AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5AF1A8C4-E970-43F7-B81A-83D706C3B1AE}.Release|Any CPU.Build.0 = Release|Any CPU + {F7D852DC-AC55-4164-A78C-EB4311F9D516}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7D852DC-AC55-4164-A78C-EB4311F9D516}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7D852DC-AC55-4164-A78C-EB4311F9D516}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7D852DC-AC55-4164-A78C-EB4311F9D516}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/Banquale/Banquale/App.xaml.cs b/src/Banquale/Banquale/App.xaml.cs index 3c4fac4..5aee24c 100644 --- a/src/Banquale/Banquale/App.xaml.cs +++ b/src/Banquale/Banquale/App.xaml.cs @@ -1,4 +1,4 @@ -using Banquale.Model; +using Model; using Banquale.Stub; using Banquale.DataContractPersistance; @@ -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 fc9e2af..44d300a 100644 --- a/src/Banquale/Banquale/Banquale.csproj +++ b/src/Banquale/Banquale/Banquale.csproj @@ -53,7 +53,6 @@ - @@ -71,12 +70,13 @@ - - + + + 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 91% rename from src/Banquale/Banquale/DataContractPersistance/DataContractPers.cs rename to src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs index c31bba9..893ee04 100644 --- a/src/Banquale/Banquale/DataContractPersistance/DataContractPers.cs +++ b/src/Banquale/Banquale/DataContractPersistance/DataContractPersXML.cs @@ -1,4 +1,4 @@ -using Banquale.Model; +using Model; using System; using System.Collections.Generic; using System.Diagnostics; @@ -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/DataContractPersistance/DataToPersist.cs b/src/Banquale/Banquale/DataContractPersistance/DataToPersist.cs index 190f138..22c9843 100644 --- a/src/Banquale/Banquale/DataContractPersistance/DataToPersist.cs +++ b/src/Banquale/Banquale/DataContractPersistance/DataToPersist.cs @@ -1,5 +1,5 @@ using System; -using Banquale.Model; +using Model; namespace Banquale.DataContractPersistance { diff --git a/src/Banquale/Banquale/Model/Account.cs b/src/Banquale/Banquale/Model/Account.cs deleted file mode 100644 index fbc17d9..0000000 --- a/src/Banquale/Banquale/Model/Account.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; - -namespace Banquale.Model -{ - [DataContract] - public class Account : INotifyPropertyChanged, IEquatable - { - public event PropertyChangedEventHandler PropertyChanged; - - void OnPropertyChanged(string propertyName) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - - [DataMember] - public double Balance - { - get => balance; - set - { - if (balance == value) - return; - balance = value; - OnPropertyChanged(nameof(Balance)); - } - } - [DataMember] - private double balance; - - - [DataMember] - public string Name - { - get => name; - set - { - if (name == value) - return; - name = value; - OnPropertyChanged(nameof(Name)); - } - } - [DataMember] - private string name; - - - [DataMember] - public string IBAN - { - get => iban; - set - { - if (iban == value) - return; - iban = value; - OnPropertyChanged(nameof(IBAN)); - } - } - [DataMember] - private string iban; - - [DataMember] - public string IBANHide - { - get => ibanHide; - set - { - if (ibanHide == value) - return; - ibanHide = value; - OnPropertyChanged(nameof(IBANHide)); - } - } - [DataMember] - private string ibanHide; - - [DataMember] - public List TransactionsList { get; set; } = new List(); - - //public bool DoTransactions(string name, string IBAN, float sum) - //{ - // List transactions.add(sum); - // if() - // return true; - //} - - public Account(int balance, string name, string iban) - { - Balance = balance; - Name = name; - IBAN = iban; - IBANHide = IBANToString(); - } - - internal static void DoTransactions(Entry name, Entry iban, Entry sum) - { - Debug.WriteLine(name.Text); - Debug.WriteLine(iban.Text); - Debug.WriteLine(sum.Text); - Debug.WriteLine("Transaction successed !"); - - - } - - //public bool DoRequest(string name, string IBAN, float sum) - //{ - // List transactions.add(sum); - // if () - // return true; - //} - - //public void AskForHelp(string type, string type2, string message) - //{ - // Console.WriteLine("Help button pressed !"); - //} - - internal static Message AskForHelp(Entry subject, Editor description) - { - Debug.WriteLine(subject.Text); - Debug.WriteLine(description.Text); - Debug.WriteLine("Help button pressed !"); - //throw new NotImplementedException(); - Message message = new Message(subject.Text, description.Text); - return message; - } - - internal static void DoRequest(Entry name, Entry iBAN, Entry sum) - { - throw new NotImplementedException(); - } - - public string IBANToString() - { - char[] res = IBAN.ToCharArray(); - for (int i = 5; i< IBAN.Length - 4; i++ ) - { - if (res[i] == ' ') - continue; - res[i] = '*'; - } - return new string(res); - } - - public bool Equals(Account other) - { - if(other == null) return false; - else return other.IBAN.Equals(IBAN); - } - - public override int GetHashCode() - { - return IBAN.GetHashCode(); - } - } -} diff --git a/src/Banquale/Banquale/Model/Category.cs b/src/Banquale/Banquale/Model/Category.cs deleted file mode 100644 index ac9ea6b..0000000 --- a/src/Banquale/Banquale/Model/Category.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -namespace Banquale.Model -{ - public class Category - { - - public Category() - { - } - } -} - diff --git a/src/Banquale/Banquale/Model/Consultant.cs b/src/Banquale/Banquale/Model/Consultant.cs deleted file mode 100644 index 6b7cee7..0000000 --- a/src/Banquale/Banquale/Model/Consultant.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Runtime.Serialization; - -namespace Banquale.Model -{ - [DataContract] - public class Consultant : Person - { - [DataMember] - public List MessagesList = new List(); - - public Consultant(string name, string firstName, uint id, string password) : base(name, firstName, id, password) - { - } - } -} - diff --git a/src/Banquale/Banquale/Model/Customer.cs b/src/Banquale/Banquale/Model/Customer.cs deleted file mode 100644 index 3b8e2ac..0000000 --- a/src/Banquale/Banquale/Model/Customer.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; - - -namespace Banquale.Model -{ - [DataContract] - public class Customer : Person - { - [DataMember] - public List AccountsList { get; private set; } = new List(); - - //private uint NbAccounts { get; set; } = AccountsList.Count; - - - public Customer(string name, string firstName, string password) : base(name, firstName, password) - {} - - - - - } - -} diff --git a/src/Banquale/Banquale/Model/IPersistenceManager.cs b/src/Banquale/Banquale/Model/IPersistenceManager.cs deleted file mode 100644 index 2f67d5a..0000000 --- a/src/Banquale/Banquale/Model/IPersistenceManager.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Banquale.Model -{ - public interface IPersistenceManager - { - public (List, Consultant) DataLoad(); - - void DataSave(List cu, Consultant co); - } -} diff --git a/src/Banquale/Banquale/Model/Manager.cs b/src/Banquale/Banquale/Model/Manager.cs deleted file mode 100644 index b5578b7..0000000 --- a/src/Banquale/Banquale/Model/Manager.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System; -using System.ComponentModel; -using System.Runtime.CompilerServices; -using System.Runtime.Serialization; - -namespace Banquale.Model -{ - [DataContract] - public class Manager : INotifyPropertyChanged - { - public event PropertyChangedEventHandler PropertyChanged; - - void OnPropertyChanged([CallerMemberName] string propertyName = null) - => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - - [DataMember] - public List CustomersList { get; private set; } // devient un set - - [DataMember] - public Consultant Consultant { get; private set; } // 1 SEUL consultant - - public bool IsConsultant { get; set; } = false; - - public Customer SelectedCustomer - { - get => selectedCustomer; - set - { - if (selectedCustomer == value) - return; - selectedCustomer = value; - OnPropertyChanged(); - } - } - - private Customer selectedCustomer; - - public Account SelectedAccount - { - get => selectedAccount; - set - { - if (selectedAccount == value) - return; - selectedAccount = value; - OnPropertyChanged(); - } - } - - private Account selectedAccount; - - public Transactions SelectedTransaction - { - get => selectedTransaction; - set - { - if (selectedTransaction == value) - return; - selectedTransaction = value; - OnPropertyChanged(); - } - } - - private Transactions selectedTransaction; - - - - public IPersistenceManager Persistence { get; set; } - - public Manager(IPersistenceManager persistence) - { - CustomersList = new List(); - Persistence = persistence; - } - - public Manager() - { - CustomersList = new List(); - } - - public bool AddCustomer(Customer MyCustomer) - { - CustomersList.Add(MyCustomer); - return true; - } - - public Customer GetCustomer(int place) { - return CustomersList[place]; - } - - public void DataSave() - { - Persistence.DataSave(CustomersList, Consultant); - } - - public void DataLoad() - { - var data = Persistence.DataLoad(); - - CustomersList.AddRange(data.Item1); - - /*foreach (var j in data.Item1) - { - CustomersList.Add(j); - }*/ - - Consultant = data.Item2; - } - - } -} - diff --git a/src/Banquale/Banquale/Model/Message.cs b/src/Banquale/Banquale/Model/Message.cs deleted file mode 100644 index bab8c1c..0000000 --- a/src/Banquale/Banquale/Model/Message.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Runtime.Serialization; - -namespace Banquale.Model -{ - [DataContract] - public class Message - { - [DataMember] - public string Subject { get; private set; } - - [DataMember] - public string Description { get; private set; } - - public Message(string subject, string description) - { - Subject = subject; - Description = description; - } - - } -} - diff --git a/src/Banquale/Banquale/Model/Person.cs b/src/Banquale/Banquale/Model/Person.cs deleted file mode 100644 index a33329b..0000000 --- a/src/Banquale/Banquale/Model/Person.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; - - -namespace Banquale.Model -{ - [DataContract] - public class Person - { - [DataMember] - public string Name { get; private set; } - [DataMember] - public string FirstName { get; private set; } - [DataMember] - public uint Id { get; private set; } - [DataMember] - public string Password { get; private set; } - - public Person(string name, string firstName, string password) - { - Name = name; - FirstName = firstName; - Id = 1; - Password = password; - } - - public Person(string name, string firstName, uint id, string password) - { - Name = name; - FirstName = firstName; - Id = id; - Password = password; - } - - } - -} diff --git a/src/Banquale/Banquale/Model/Transactions.cs b/src/Banquale/Banquale/Model/Transactions.cs deleted file mode 100644 index bd8c660..0000000 --- a/src/Banquale/Banquale/Model/Transactions.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System.ComponentModel; -using System.Runtime.Serialization; - -namespace Banquale.Model -{ - [DataContract(IsReference = true)] - public class Transactions : INotifyPropertyChanged - { - - void OnPropertyChanged(string propertyName) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - - [DataMember] - public int Type - { - get => type; - set - { - if(type == value) - return; - type = value; - OnPropertyChanged(nameof(Type)); - } - } - [DataMember] - - private int type; - - [DataMember] - public Double Sum - { - get => sum; - set - { - if (sum == value) - return; - sum = value; - OnPropertyChanged(nameof(Sum)); - } - } - [DataMember] - private Double sum; - - [DataMember] - public Account InvolvedAccounts - { - get => involvedAccounts; - set - { - if (involvedAccounts == value) - return; - involvedAccounts = value; - OnPropertyChanged(nameof(InvolvedAccounts)); - } - } - [DataMember] - private Account involvedAccounts; - - [DataMember] - public string Category - { - get => category; - set - { - if (category == value) - return; - category = value; - OnPropertyChanged(nameof(Category)); - } - } - [DataMember] - private string category; - - [DataMember] - public DateTime Date - { - get => date; - set - { - if (date == value) - return; - date = value; - OnPropertyChanged(nameof(Date)); - } - } - [DataMember] - private DateTime date; - - public Transactions(int type, Double sum, Account involvedAccounts, string category, DateTime date) - { - Type = type; - Sum = sum; - InvolvedAccounts = involvedAccounts; - Category = category; - Date = date; - } - - - public event PropertyChangedEventHandler PropertyChanged; - } -} diff --git a/src/Banquale/Banquale/Stub/Stub.cs b/src/Banquale/Banquale/Stub/Stub.cs index 18c6559..3749c51 100644 --- a/src/Banquale/Banquale/Stub/Stub.cs +++ b/src/Banquale/Banquale/Stub/Stub.cs @@ -1,6 +1,6 @@ using System; using System.Diagnostics; -using Banquale.Model; +using Model; namespace Banquale.Stub { @@ -9,27 +9,27 @@ namespace Banquale.Stub public (List, Consultant) DataLoad() { - Consultant Consultant = new Consultant("Consultant", "Consultant", 0, "Consultant"); + Consultant Consultant = new Consultant("Consultant", "Consultant", "Consultant"); // toujours creer en premier le consultant Consultant.MessagesList.Add(new Message("ZUvuzveu", "ZBUBUE")); Consultant.MessagesList.Add(new Message("zcdz", "rvri")); Consultant.MessagesList.Add(new Message("vjkebor", "rbv")); Consultant.MessagesList.Add(new Message("alce", "ubec")); - Customer Customer1 = new Customer("Jacques", "Morice", "J'aimeLesFrites"); - Customer Customer2 = new Customer("Francis", "Begore", "J'aimeLes"); - Customer Customer3 = new Customer("Michel", "Boudout", "MonMdP"); + Customer Customer1 = new Customer("Jacques", "Morice", "Hello"); + 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 Account2 = new Account(9510, "Despoints", "FR76 4785 8569 6914 4152 5263 003"); - Account Account3 = new Account(3519, "Perotte", "FR76 6352 2541 4169 6958 5847 002"); + Account Account1 = new Account(999, "Tatouille", "FR7691619581629684152361004"); + Account Account2 = new Account(9510, "Despoints", "FR7647858569691441525263003"); + Account Account3 = new Account(3519, "Perotte", "FR7663522541416969585847002"); - Transactions Transactions1 = new Transactions(0, 55, Account1, "Test", new DateTime(2023, 6, 21, 15, 29, 20)); - Transactions Transactions12 = new Transactions(0, 105, Account1, "Test", new DateTime(2023, 8, 17, 18, 54, 35)); - Transactions Transactions13 = new Transactions(0, 187, Account1, "Test", new DateTime(2023, 5, 3, 8, 39, 49)); - Transactions Transactions2 = new Transactions(1, 54.99, Account2, "Test", new DateTime(2022, 8, 15)); - Transactions Transactions3 = new Transactions(0, 1000, Account3, "Test", new DateTime(2020, 9, 1, 20, 00, 00)); + Transactions Transactions1 = new Transactions(true, 55, Account1, 1, new DateTime(2023, 6, 21, 15, 29, 20)); + Transactions Transactions12 = new Transactions(true, 105, Account1, 2, new DateTime(2023, 8, 17, 18, 54, 35)); + Transactions Transactions13 = new Transactions(true, 187, Account1, 3, new DateTime(2023, 5, 3, 8, 39, 49)); + Transactions Transactions2 = new Transactions(false, 54.99, Account2, 4, new DateTime(2022, 8, 15)); + Transactions Transactions3 = new Transactions(true, 1000, Account3, 5, new DateTime(2020, 9, 1, 20, 00, 00)); Debug.WriteLine(Customer1.Name, Customer1.Password); List CustomersList = new List(); diff --git a/src/Banquale/Banquale/Test/AccountTest.cs b/src/Banquale/Banquale/Test/AccountTest.cs deleted file mode 100644 index 84036b5..0000000 --- a/src/Banquale/Banquale/Test/AccountTest.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using Banquale.Model; - -namespace Banquale.Test -{ - public class AccountTest - { - public AccountTest() - { - Account account = new Account(2000000, "Men", "How are you ?"); - } - } -} - diff --git a/src/Banquale/Banquale/Views/BalancePage.xaml b/src/Banquale/Banquale/Views/BalancePage.xaml index 2493cda..0ef8203 100644 --- a/src/Banquale/Banquale/Views/BalancePage.xaml +++ b/src/Banquale/Banquale/Views/BalancePage.xaml @@ -1,8 +1,6 @@  @@ -26,8 +24,8 @@ + Tapped="Balance_Clicked" + NumberOfTapsRequired="1" />