diff --git a/Sources/Data/LoadOperation.cs b/Sources/Data/LoadOperation.cs index cd95fa0..a47c7b9 100644 --- a/Sources/Data/LoadOperation.cs +++ b/Sources/Data/LoadOperation.cs @@ -12,7 +12,7 @@ using static System.Net.Mime.MediaTypeNames; namespace Data { - public class LoadOperation + public static class LoadOperation { public static IList LoadOperationsFromOFX(string ofx) { @@ -112,7 +112,7 @@ namespace Data } - public static string[] CutRow(string row) + private static string[] CutRow(string row) { string[] cutRow; if (row == null) throw new ArgumentNullException(); diff --git a/Sources/Data/PersAPI.cs b/Sources/Data/PersAPI.cs index baad602..b7858a8 100644 --- a/Sources/Data/PersAPI.cs +++ b/Sources/Data/PersAPI.cs @@ -13,121 +13,127 @@ namespace Data // /!\ et ne doit en aucun cas manipuler la mémoire ! //actions sur les inscrits - public bool AjouterInscrit(Inscrit inscrit) + public async Task AjouterInscrit(Inscrit inscrit) { - return ClientAPI.PostAddInscritAsync(inscrit.Nom, inscrit.Prenom, inscrit.Mail, inscrit.Mdp).GetAwaiter().GetResult(); + return await ClientAPI.PostAddInscritAsync(inscrit.Nom, inscrit.Prenom, inscrit.Mail, inscrit.Mdp); + } - public bool SupprimerInscrit(Inscrit inscrit) + public async Task SupprimerInscrit(Inscrit inscrit) { - return ClientAPI.DeleteInscritAsync(inscrit.Mail).GetAwaiter().GetResult(); + return await ClientAPI.DeleteInscritAsync(inscrit.Mail); } - public bool ModifierMdpInscrit(string mail, string nouveauMdp) + public async Task ModifierMdpInscrit(string mail, string nouveauMdp) { - return ClientAPI.PutPasswordInscritAsync(mail,nouveauMdp).GetAwaiter().GetResult(); + return await ClientAPI.PutPasswordInscritAsync(mail, nouveauMdp); } - public Inscrit RecupererInscrit(string mail) + public async Task RecupererInscrit(string mail) { - List inscrits = ClientAPI.GetInscritAsync(mail).GetAwaiter().GetResult(); - if(inscrits.Count >= 1) + List inscrits = await ClientAPI.GetInscritAsync(mail); + if (inscrits.Count == 1) { - throw new ArgumentException("Cet email contient plusieurs utilisateurs pour la même adresse"); + return inscrits.First(); } - return inscrits.FirstOrDefault(); + throw new ArgumentException("Cet email a un problème"); + } - public bool EmailDisponible(string mail) + public async Task EmailDisponible(string mail) { - List inscrits = ClientAPI.GetInscritAsync(mail).GetAwaiter().GetResult(); + List inscrits = await ClientAPI.GetInscritAsync(mail); if (inscrits.Count >= 1) { - return false; + return true; } - return true; + return false; } //actions sur les banques - public bool AjouterBanque(Banque banque, Inscrit inscrit) + public async Task AjouterBanque(Banque banque, Inscrit inscrit) { - return ClientAPI.PostAddBanqueInscritAsync(banque.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult(); + return await ClientAPI.PostAddBanqueInscritAsync(banque.Nom, inscrit.Id.ToString()); } - public bool SupprimerBanque(Banque banque, Inscrit inscrit) + public async Task SupprimerBanque(Banque banque, Inscrit inscrit) { - return ClientAPI.DeleteBanqueInscritAsync(banque.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult(); + return await ClientAPI.DeleteBanqueInscritAsync(banque.Nom, inscrit.Id.ToString()); } - public IList RecupererBanques(Inscrit inscrit) + public async Task> RecupererBanques(Inscrit inscrit) { - return ClientAPI.GetBanqueAsync(inscrit.Id.ToString()).GetAwaiter().GetResult(); + return await ClientAPI.GetBanqueAsync(inscrit.Id.ToString()); } - public IList RecupererBanquesDisponible() + public async Task> RecupererBanquesDisponible() { - return ClientAPI.GetBanquesAsync().GetAwaiter().GetResult(); + return await ClientAPI.GetBanquesAsync(); } //actions sur les comptes - public bool AjouterCompte(Compte compte, Inscrit inscrit) + public async Task AjouterCompte(Compte compte, Inscrit inscrit) { - return ClientAPI.PostAddCompteInscritAsync(compte.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult(); + return await ClientAPI.PostAddCompteInscritAsync(compte.Nom, inscrit.Id.ToString()); } - public bool SupprimerCompte(Compte compte, Inscrit inscrit) + public async Task SupprimerCompte(Compte compte, Inscrit inscrit) { - return ClientAPI.DeleteCompteInscritAsync(compte.Nom, inscrit.Id.ToString()).GetAwaiter().GetResult(); + return await ClientAPI.DeleteCompteInscritAsync(compte.Nom, inscrit.Id.ToString()); } - public IList RecupererCompte(Banque banque, Inscrit inscrit) + public async Task> RecupererCompte(Banque banque, Inscrit inscrit) { - return ClientAPI.GetCompteAsync(inscrit.Id.ToString()).GetAwaiter().GetResult(); + return await ClientAPI.GetCompteAsync(inscrit.Id.ToString()); } //actions sur les Opérations - public bool AjouterOperation(Compte compte, Operation operation) + public async Task AjouterOperation(Compte compte, Operation operation) { - return ClientAPI.PostAddOperationInscritAsync(compte,operation).GetAwaiter().GetResult(); + return await ClientAPI.PostAddOperationInscritAsync(compte, operation); } - public bool SupprimerOperation(Compte compte, Operation operation) + public async Task SupprimerOperation(Compte compte, Operation operation) { - return ClientAPI.DeleteOperationInscritAsync(compte.Identifiant, operation.IntituleOperation).GetAwaiter().GetResult(); + return await ClientAPI.DeleteOperationInscritAsync(compte.Identifiant, operation.IntituleOperation); } - public IList RecupererOperation(Compte compte) + public async Task> RecupererOperation(Compte compte) { - return ClientAPI.GetOperationAsync(compte.Identifiant).GetAwaiter().GetResult(); + return await ClientAPI.GetOperationAsync(compte.Identifiant); } //actions sur les Planifications - public bool AjouterPlanification(Compte compte, Planification planification) + public async Task AjouterPlanification(Compte compte, Planification planification) { - return ClientAPI.PostAddPlanificationInscritAsync(compte, planification).GetAwaiter().GetResult(); + return await ClientAPI.PostAddPlanificationInscritAsync(compte, planification); } - public bool SupprimerPlanification(Compte compte, Planification planification) + public async Task SupprimerPlanification(Compte compte, Planification planification) { - return ClientAPI.DeletePlanificationInscritAsync(compte.Identifiant, planification.IntituleOperation).GetAwaiter().GetResult(); + return await ClientAPI.DeletePlanificationInscritAsync(compte.Identifiant, planification.IntituleOperation); } - public IList RecupererPlanification(Compte compte) + public async Task> RecupererPlanification(Compte compte) { - return ClientAPI.GetPlanificationAsync(compte.Identifiant).GetAwaiter().GetResult(); + return await ClientAPI.GetPlanificationAsync(compte.Identifiant); } - //actions sur les Echéances - public bool AjouterEcheance(Compte compte, Echeance echeance) + public async Task AjouterEcheance(Compte compte, Echeance echeance) { - return ClientAPI.PostAddEcheanceInscritAsync(compte, echeance).GetAwaiter().GetResult(); + return await ClientAPI.PostAddEcheanceInscritAsync(compte, echeance); } - public bool SupprimerEcheance(Compte compte, Echeance echeance) + public async Task SupprimerEcheance(Compte compte, Echeance echeance) { - return ClientAPI.DeleteEcheanceInscritAsync(compte.Identifiant, echeance.IntituleOperation).GetAwaiter().GetResult(); + return await ClientAPI.DeleteEcheanceInscritAsync(compte.Identifiant, echeance.IntituleOperation); } - public IList RecupererEcheance(Compte compte) + public async Task> RecupererEcheance(Compte compte) { - return ClientAPI.GetEcheanceAsync(compte.Identifiant).GetAwaiter().GetResult(); + return await ClientAPI.GetEcheanceAsync(compte.Identifiant); } //actions utilitaire - public bool TestConnexion() + public async Task TestConnexion() + { + return await ClientAPI.GetStateApi(); + } + + public IList GetDataFromOFX(string path) { - return ClientAPI.GetStateApi().GetAwaiter().GetResult(); + return LoadOperation.LoadOperationsFromOFX(path); } } } \ No newline at end of file diff --git a/Sources/Data/PersLinqToPgSQL.cs b/Sources/Data/PersLinqToPgSQL.cs index 52a82a9..3790c61 100644 --- a/Sources/Data/PersLinqToPgSQL.cs +++ b/Sources/Data/PersLinqToPgSQL.cs @@ -19,7 +19,6 @@ namespace LinqToPgSQL { public class PersLinqToPgSQL /*: IPersistanceManager*/ { - private Hash hash = new Hash(); private static string connexionBDD = String.Format("Server=2.3.8.130; Username=postgres; Database=conseco; Port=5432; Password=lulu; SSLMode=Prefer"); private static NpgsqlConnection dbAccess = new NpgsqlConnection(connexionBDD); @@ -100,8 +99,7 @@ namespace LinqToPgSQL public async void ChangePasswordBdd(string mail, string newMdp) { - Hash hash = new Hash(); - string hashedMdp = hash.CreateHashCode(newMdp); + string hashedMdp = Hash.CreateHashCode(newMdp); var conn = new NpgsqlConnection(connexionBDD); Console.Out.WriteLine("Ouverture de la connection"); try @@ -151,7 +149,7 @@ namespace LinqToPgSQL public async void CreateInscrit(Inscrit inscrit) { - string mdpHash = hash.CreateHashCode(inscrit.Mdp); + string mdpHash = Hash.CreateHashCode(inscrit.Mdp); Console.WriteLine("AAAAAA"+mdpHash.Length); var conn = new NpgsqlConnection(connexionBDD); conn.Open(); diff --git a/Sources/Data/PersStub.cs b/Sources/Data/PersStub.cs index 57a6162..f4b5cde 100644 --- a/Sources/Data/PersStub.cs +++ b/Sources/Data/PersStub.cs @@ -2,9 +2,9 @@ namespace Data { - public class PersStub /*: IPersistanceManager*/ + public class PersStub : IPersistanceManager { - private List lesInscrits = new List(); + /*private List lesInscrits = new List(); public PersStub() { @@ -63,10 +63,7 @@ namespace Data public void CreateInscrit(Inscrit inscrit){ lesInscrits.Add(inscrit); } - /*public string LastInscrit() - { - return lesInscrits[lesInscrits.Count - 1].Id; - }*/ + public bool ExistEmail(string mail) { foreach(Inscrit i in lesInscrits) @@ -90,12 +87,11 @@ namespace Data } public string RecupMdpBdd(string mail) { - Hash hash = new Hash(); foreach(Inscrit i in lesInscrits) { if(i.Mail == mail) { - return hash.CreateHashCode(i.Mdp); + return Hash.CreateHashCode(i.Mdp); } } return "inexistant"; @@ -157,6 +153,120 @@ namespace Data public List LoadBanqueId(int id) + { + throw new NotImplementedException(); + }*/ + public Task AjouterBanque(Banque banque, Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task AjouterCompte(Compte compte, Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task AjouterEcheance(Compte compte, Echeance echeance) + { + throw new NotImplementedException(); + } + + public Task AjouterInscrit(Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task AjouterOperation(Compte compte, Operation operation) + { + throw new NotImplementedException(); + } + + public Task AjouterPlanification(Compte compte, Planification planification) + { + throw new NotImplementedException(); + } + + public Task EmailDisponible(string mail) + { + throw new NotImplementedException(); + } + + public IList GetDataFromOFX(string path) + { + throw new NotImplementedException(); + } + + public Task ModifierMdpInscrit(string mail, string nouveauMdp) + { + throw new NotImplementedException(); + } + + public Task> RecupererBanques(Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task> RecupererBanquesDisponible() + { + throw new NotImplementedException(); + } + + public Task> RecupererCompte(Banque banque, Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task> RecupererEcheance(Compte compte) + { + throw new NotImplementedException(); + } + + public Task RecupererInscrit(string mail) + { + throw new NotImplementedException(); + } + + public Task> RecupererOperation(Compte compte) + { + throw new NotImplementedException(); + } + + public Task> RecupererPlanification(Compte compte) + { + throw new NotImplementedException(); + } + + public Task SupprimerBanque(Banque banque, Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task SupprimerCompte(Compte compte, Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task SupprimerEcheance(Compte compte, Echeance echeance) + { + throw new NotImplementedException(); + } + + public Task SupprimerInscrit(Inscrit inscrit) + { + throw new NotImplementedException(); + } + + public Task SupprimerOperation(Compte compte, Operation operation) + { + throw new NotImplementedException(); + } + + public Task SupprimerPlanification(Compte compte, Planification planification) + { + throw new NotImplementedException(); + } + + public Task TestConnexion() { throw new NotImplementedException(); } @@ -164,4 +274,3 @@ namespace Data } - diff --git a/Sources/Data/tables.sql b/Sources/Data/tables.sql index 215b992..7ea8a68 100644 --- a/Sources/Data/tables.sql +++ b/Sources/Data/tables.sql @@ -21,7 +21,7 @@ CREATE TABLE Inscrit nom varchar(40), prenom varchar(40), mail varchar(40) UNIQUE, - mdp varchar(40) + mdp varchar(200) ); CREATE TABLE DeviseInscrit diff --git a/Sources/IHM/IHM.csproj b/Sources/IHM/IHM.csproj index b512e9e..1b1eaf1 100644 --- a/Sources/IHM/IHM.csproj +++ b/Sources/IHM/IHM.csproj @@ -169,4 +169,6 @@ + + diff --git a/Sources/IHM/Mobile/AjoutBanques.xaml b/Sources/IHM/Mobile/AjoutBanques.xaml index 6109712..24616e5 100644 --- a/Sources/IHM/Mobile/AjoutBanques.xaml +++ b/Sources/IHM/Mobile/AjoutBanques.xaml @@ -66,7 +66,8 @@ + BackgroundColor="{StaticResource Primary}" + Clicked="AddBanque_Clicked"/> diff --git a/Sources/IHM/Mobile/AjoutBanques.xaml.cs b/Sources/IHM/Mobile/AjoutBanques.xaml.cs index 50011ff..8b70e66 100644 --- a/Sources/IHM/Mobile/AjoutBanques.xaml.cs +++ b/Sources/IHM/Mobile/AjoutBanques.xaml.cs @@ -11,7 +11,7 @@ public partial class AjoutBanques : ContentPage { InitializeComponent(); BindingContext = Mgr; - //Mgr.importBanques(); + Mgr.LoadBanques(); if (OperatingSystem.IsIOS()) { boutonRetour.IsVisible = true; @@ -29,12 +29,16 @@ public partial class AjoutBanques : ContentPage { if (result.FileName.EndsWith("ofx", StringComparison.OrdinalIgnoreCase)) { - //IList lesComptes = Mgr.getCompteFromOFX(result.FullPath); - /*Debug.WriteLine(lesComptes.Count); + IList lesComptes = Mgr.Pers.GetDataFromOFX(result.FullPath); + Debug.WriteLine(lesComptes.Count); foreach(Compte compte in lesComptes) { - Mgr.User.LesBanques.First().AjouterCompte(compte); - }*/ + if(Mgr.User.LesBanques.Count != 0) + { + Mgr.User.LesBanques.First().AjouterCompte(compte); + } + + } } } @@ -54,5 +58,21 @@ public partial class AjoutBanques : ContentPage { await Navigation.PopModalAsync(); } + + private async void AddBanque_Clicked(object sender, EventArgs e) + { + ImageButton imageButton = (ImageButton)sender; + Grid grid = (Grid)imageButton.Parent; + foreach(IView iw in grid.Children) + { + if (iw.GetType() == typeof(Label)) + { + await Mgr.Pers.AjouterBanque((Banque)(iw as Label).BindingContext, Mgr.User); + } + } + + Mgr.User.LesBanques = await Mgr.Pers.RecupererBanques(Mgr.User); + await Navigation.PopModalAsync(); + } } diff --git a/Sources/IHM/Mobile/ChangePassword.xaml.cs b/Sources/IHM/Mobile/ChangePassword.xaml.cs index 73dfd20..6c682f8 100644 --- a/Sources/IHM/Mobile/ChangePassword.xaml.cs +++ b/Sources/IHM/Mobile/ChangePassword.xaml.cs @@ -25,7 +25,7 @@ public partial class ChangePassword : ContentPage } else { - //Mgr.changePasswordBdd(MailUser, EntryNewMdp.Text); + Mgr.Pers.ModifierMdpInscrit(MailUser, EntryNewMdp.Text); AffichError("mdp changé", "mot de passe bien changé", "ok"); NavigateTo("../.."); } diff --git a/Sources/IHM/Mobile/Dashboard.xaml.cs b/Sources/IHM/Mobile/Dashboard.xaml.cs index 6be0d67..a5c526e 100644 --- a/Sources/IHM/Mobile/Dashboard.xaml.cs +++ b/Sources/IHM/Mobile/Dashboard.xaml.cs @@ -1,4 +1,5 @@ using Model; +using System.Diagnostics; namespace IHM.Mobile; @@ -17,10 +18,10 @@ public partial class DashBoard : ContentPage } - /* if (!Mgr.testConnexionAsDatabase()) + /*if (!Mgr.Pers.TestConnexion()) { loadPage(new ErrorPage()); - + Debug.WriteLine("cc"); }*/ } diff --git a/Sources/IHM/Mobile/ErrorPage.xaml.cs b/Sources/IHM/Mobile/ErrorPage.xaml.cs index 7809cb6..2ef2a98 100644 --- a/Sources/IHM/Mobile/ErrorPage.xaml.cs +++ b/Sources/IHM/Mobile/ErrorPage.xaml.cs @@ -20,12 +20,12 @@ public partial class ErrorPage : ContentPage return true; } - public void conIsActive() + public async void conIsActive() { - /*while (!Mgr.testConnexionAsDatabase()) + while (!await Mgr.Pers.TestConnexion()) { Thread.Sleep(TIME_TEST_DB); - }*/ + } ConnexionValide(); return; diff --git a/Sources/IHM/Mobile/ForgetPassword.xaml.cs b/Sources/IHM/Mobile/ForgetPassword.xaml.cs index 69c7b15..833f916 100644 --- a/Sources/IHM/Mobile/ForgetPassword.xaml.cs +++ b/Sources/IHM/Mobile/ForgetPassword.xaml.cs @@ -14,13 +14,14 @@ public partial class ForgetPassword : ContentPage { InitializeComponent(); } - public void SearchEmail(object sender, EventArgs e) + public async void SearchEmail(object sender, EventArgs e) { if (EntryMail.Text == null) { AffichError("Email inconnue", "Aucun compte existant portant cette adresse mail", "OK"); } - /*if (Mgr.existEmail(EntryMail.Text)){ + if (await Mgr.Pers.EmailDisponible(EntryMail.Text)) + { Random generator = new Random(); code = generator.Next(0, 1000000).ToString("D6"); Email.CreateMail(EntryMail.Text, code); @@ -31,7 +32,7 @@ public partial class ForgetPassword : ContentPage else { AffichError("Mail inexistant", "Aucun compte possédant cette adresse email trouvé", "OK"); - }*/ + } } private async void AffichError(string s, string s1, string s2) { diff --git a/Sources/IHM/Mobile/GestionBanques.xaml.cs b/Sources/IHM/Mobile/GestionBanques.xaml.cs index 04681a8..6d1001a 100644 --- a/Sources/IHM/Mobile/GestionBanques.xaml.cs +++ b/Sources/IHM/Mobile/GestionBanques.xaml.cs @@ -11,7 +11,7 @@ public partial class GestionBanques : ContentPage { InitializeComponent(); BindingContext= Mgr; - //Mgr.LoadBanques(); + Mgr.LoadBanques(); if (OperatingSystem.IsIOS()) { boutonRetour.IsVisible = true; diff --git a/Sources/IHM/Mobile/Inscription.xaml.cs b/Sources/IHM/Mobile/Inscription.xaml.cs index 3a5ddc5..576bda0 100644 --- a/Sources/IHM/Mobile/Inscription.xaml.cs +++ b/Sources/IHM/Mobile/Inscription.xaml.cs @@ -11,7 +11,7 @@ public partial class Inscription : ContentPage { InitializeComponent(); } - public void InscriptionOnClicked(object sender, EventArgs e) + public async void InscriptionOnClicked(object sender, EventArgs e) { if (EntryNewName.Text == null || EntryNewMail.Text == null || EntryConfirmationPassword.Text == null || EntryNewPassword.Text == null || EntryNewSurname.Text == null) @@ -20,8 +20,8 @@ public partial class Inscription : ContentPage } else { - /*if(EntryNewPassword.Text.Equals(EntryConfirmationPassword.Text)) { - if (Mgr.existEmail(EntryNewMail.Text)) + if(EntryNewPassword.Text.Equals(EntryConfirmationPassword.Text)) { + if (await Mgr.Pers.EmailDisponible(EntryNewMail.Text)) { AffichError("Mail existant", "un compte porte déjà cette adresse mail, veuillez en changer", "OK"); } @@ -43,15 +43,16 @@ public partial class Inscription : ContentPage else { AffichError("Mot de passe de confirmation invalide", "Veuillez mettre deux mots de passe identiques", "OK"); - }*/ + } } } private void ValideCode(object sender, EventArgs e) { if (EntryCodeRecept.Text == code) { - //Inscrit inscrit = new Inscrit(Mgr.lastInscrit() + 1, EntryNewName.Text, EntryNewMail.Text, EntryNewSurname.Text, EntryNewPassword.Text); - //Mgr.createInscrit(inscrit); + string hashedPassword = Hash.CreateHashCode(EntryNewPassword.Text); + Inscrit inscrit = new Inscrit(1, EntryNewName.Text, EntryNewMail.Text, EntryNewSurname.Text, hashedPassword); + Mgr.Pers.AjouterInscrit(inscrit); AffichError("compte créé", "Compte bien créé", "OK"); NavigateTo(".."); } diff --git a/Sources/IHM/Mobile/MainPage.xaml b/Sources/IHM/Mobile/MainPage.xaml index a245547..e5f143e 100644 --- a/Sources/IHM/Mobile/MainPage.xaml +++ b/Sources/IHM/Mobile/MainPage.xaml @@ -18,7 +18,7 @@ - + - + - +