From acb675e96a631983de0d3ee67ee5513e75dbd0d3 Mon Sep 17 00:00:00 2001 From: hulivet1 Date: Thu, 22 Dec 2022 15:26:22 +0100 Subject: [PATCH] Nouvelle IDataPersistance pas finie psk malade :( --- Sources/Data/PersAPI.cs | 148 +++++++++++++++++++ Sources/Data/PersSQL.cs | 199 ++++++++++++++++++++++++++ Sources/Data/{Stub.cs => PersStub.cs} | 4 +- Sources/Modele/IPersistanceManager.cs | 66 ++++++--- 4 files changed, 399 insertions(+), 18 deletions(-) create mode 100644 Sources/Data/PersAPI.cs create mode 100644 Sources/Data/PersSQL.cs rename Sources/Data/{Stub.cs => PersStub.cs} (98%) diff --git a/Sources/Data/PersAPI.cs b/Sources/Data/PersAPI.cs new file mode 100644 index 0000000..472a16a --- /dev/null +++ b/Sources/Data/PersAPI.cs @@ -0,0 +1,148 @@ +using Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Data +{ + public class PersAPI : IPersistanceManager + { + // /!\ Toutes les méthodes ici permettent d'uniquement manipuler une stratégie de persistance + // /!\ et ne doit en aucun cas manipuler la mémoire ! + + //actions sur les inscrits + public bool AjouterInscrit(Inscrit inscrit) + { + return ClientAPI.PostAddInscritAsync(inscrit.Nom, inscrit.Prenom, inscrit.Mail, inscrit.Mdp).GetAwaiter().GetResult(); + } + public bool SupprimerInscrit(Inscrit inscrit) + { + throw new NotImplementedException(); + } + public bool ModifierMdpInscrit(string mail, string nouveauMdp) + { + return ClientAPI.PutPasswordInscritAsync(mail,nouveauMdp).GetAwaiter().GetResult(); + } + public Inscrit RecupererInscrit(string mail) + { + List inscrits = ClientAPI.GetInscritAsync(mail).GetAwaiter().GetResult(); + if(inscrits.Count >= 1) + { + throw new ArgumentException("Cet email contient plusieurs utilisateurs pour la même adresse"); + } + return inscrits.FirstOrDefault(); + } + public bool EmailDisponible(string mail) + { + throw new NotImplementedException(); + } + + + //actions sur les banques + public bool AjouterBanque(Banque banque) + { + throw new NotImplementedException(); + } + public bool SupprimerBanque(Banque banque) + { + throw new NotImplementedException(); + } + public bool ModifierBanque(Banque banque) + { + throw new NotImplementedException(); + } + public IList RecupererBanques(Inscrit inscrit) + { + throw new NotImplementedException(); + } + public IList RecupererBanquesDisponible() + { + throw new NotImplementedException(); + } + + + //actions sur les comptes + public bool AjouterCompte(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerCompte(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierCompte(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererCompte(Banque banque) + { + throw new NotImplementedException(); + } + + + //actions sur les Opérations + public bool AjouterOperation(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerOperation(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierOperation(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererOperation(Compte compte) + { + throw new NotImplementedException(); + } + + + //actions sur les Planifications + public bool AjouterPlanification(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerPlanification(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierPlanification(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererPlanification(Compte compte) + { + throw new NotImplementedException(); + } + + + //actions sur les Echéances + public bool AjouterEcheance(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerEcheance(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierEcheance(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererEcheance(Compte compte) + { + throw new NotImplementedException(); + } + + + //actions utilitaire + public bool TestConnexion() + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Sources/Data/PersSQL.cs b/Sources/Data/PersSQL.cs new file mode 100644 index 0000000..ea90d3b --- /dev/null +++ b/Sources/Data/PersSQL.cs @@ -0,0 +1,199 @@ +using Microsoft.Maui.ApplicationModel.Communication; +using Microsoft.Maui.Graphics; +using Model; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Data +{ + public class PersSQL : IPersistanceManager + { + Hash hash = new Hash(); + private static string connexionBaseDeDonnees = String.Format("Server=2.3.8.130; Username=postgres; Database=conseco; Port=5432; Password=lulu; SSLMode=Prefer"); + private static NpgsqlConnection dbAcces = new NpgsqlConnection(connexionBaseDeDonnees); + + // /!\ Toutes les méthodes ici permettent d'uniquement manipuler une stratégie de persistance + // /!\ et ne doit en aucun cas manipuler la mémoire ! + + //actions sur les inscrits + public bool AjouterInscrit(Inscrit inscrit) + { + string mdpHash = hash.CreateHashCode(inscrit.Mdp); + dbAcces.Open(); + using var cmd = new NpgsqlCommand($"INSERT INTO Inscrit (nom,prenom,mail,mdp) VALUES ((@name), (@surname), (@mail), (@password))", dbAcces) + { + Parameters = + { + new NpgsqlParameter("name", inscrit.Nom), + new NpgsqlParameter("surname", inscrit.Prenom), + new NpgsqlParameter("mail", inscrit.Mail), + new NpgsqlParameter("password", mdpHash), + } + }; + cmd.ExecuteNonQueryAsync(); + dbAcces.Close(); + return true; + } + public bool SupprimerInscrit(Inscrit inscrit) + { + dbAcces.Open(); + using var cmd = new NpgsqlCommand($"DELETE FROM INSCRIT WHERE mail=(@mail)", dbAcces) + { + Parameters = + { + new NpgsqlParameter("mail", inscrit.Mail) + } + }; + cmd.ExecuteNonQueryAsync(); + dbAcces.Close(); + return true; + } + public bool ModifierMdpInscrit(string mail, string nouveauMdp) + { + dbAcces.Open(); + using var cmd = new NpgsqlCommand($"UPDATE Inscrit SET mdp = (@mdp) WHERE mail = (@mail)", dbAcces) + { + Parameters = + { + new NpgsqlParameter("mail", mail), + new NpgsqlParameter("mdp", nouveauMdp) + } + }; + cmd.ExecuteNonQueryAsync(); + dbAcces.Close(); + return true; + + } + public Inscrit RecupererInscrit(string mail) + { + IList inscrits = new List(); + dbAcces.Open(); + NpgsqlDataReader dbReader = new NpgsqlCommand("SELECT * FROM Inscrit WHERE mail = (@mail)", dbAcces).ExecuteReader(); + while (dbReader.Read()) + { + + inscrits.Add(new Inscrit(dbReader.GetInt32(0), dbReader.GetString(1), dbReader.GetString(3), dbReader.GetString(2), dbReader.GetString(4))); + + } + dbReader.Close(); + dbAcces.Close(); + + return inscrits.FirstOrDefault(); + + } + public bool EmailDisponible(string mail) + { + throw new NotImplementedException(); + } + + + //actions sur les banques + public bool AjouterBanque(Banque banque) + { + throw new NotImplementedException(); + } + public bool SupprimerBanque(Banque banque) + { + throw new NotImplementedException(); + } + public bool ModifierBanque(Banque banque) + { + throw new NotImplementedException(); + } + public IList RecupererBanques(Inscrit inscrit) + { + throw new NotImplementedException(); + } + public IList RecupererBanquesDisponible() + { + throw new NotImplementedException(); + } + + + //actions sur les comptes + public bool AjouterCompte(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerCompte(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierCompte(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererCompte(Banque banque) + { + throw new NotImplementedException(); + } + + + //actions sur les Opérations + public bool AjouterOperation(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerOperation(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierOperation(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererOperation(Compte compte) + { + throw new NotImplementedException(); + } + + + //actions sur les Planifications + public bool AjouterPlanification(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerPlanification(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierPlanification(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererPlanification(Compte compte) + { + throw new NotImplementedException(); + } + + + //actions sur les Echéances + public bool AjouterEcheance(Compte compte) + { + throw new NotImplementedException(); + } + public bool SupprimerEcheance(Compte compte) + { + throw new NotImplementedException(); + } + public bool ModifierEcheance(Compte compte) + { + throw new NotImplementedException(); + } + public IList RecupererEcheance(Compte compte) + { + throw new NotImplementedException(); + } + + + //actions utilitaire + public bool TestConnexion() + { + throw new NotImplementedException(); + } + } +} diff --git a/Sources/Data/Stub.cs b/Sources/Data/PersStub.cs similarity index 98% rename from Sources/Data/Stub.cs rename to Sources/Data/PersStub.cs index f77505f..62b0c8c 100644 --- a/Sources/Data/Stub.cs +++ b/Sources/Data/PersStub.cs @@ -2,11 +2,11 @@ namespace Data { - public class Stub : IPersistanceManager + public class PersStub : IPersistanceManager { private List lesInscrits = new List(); - public Stub() + public PersStub() { lesInscrits.Add(new Inscrit( 1, diff --git a/Sources/Modele/IPersistanceManager.cs b/Sources/Modele/IPersistanceManager.cs index 1585cc6..126038a 100644 --- a/Sources/Modele/IPersistanceManager.cs +++ b/Sources/Modele/IPersistanceManager.cs @@ -8,21 +8,55 @@ namespace Model { public interface IPersistanceManager { - string GetId(string mail); - void SupprimerInscritBdd(Inscrit inscrit); - void SupprimerBanqueBdd(Inscrit inscrit, Banque banque); - void SupprimerToutesBanquesBdd(Inscrit inscrit); - void CreateInscrit(Inscrit inscrit); - string LastInscrit(); - bool ExistEmail(string mail); - void ChangePasswordBdd(string mail, string newMdp); - string RecupMdpBdd(string mail); - int CalculTotalSoldeComtpe(Inscrit user); - List LoadBanqueId(int id); - public bool TestConnexionAsDatabase(); - public List ImportBanques(); - public Inscrit GetInscrit(string mail); - - public IList GetCompteFromOFX(string ofx); + // /!\ Toutes les méthodes ici permettent d'uniquement manipuler une stratégie de persistance + // /!\ et ne doit en aucun cas manipuler la mémoire ! + + //actions sur les inscrits + bool AjouterInscrit(Inscrit inscrit); + bool SupprimerInscrit(Inscrit inscrit); + bool ModifierMdpInscrit(string mail, string nouveauMdp); + Inscrit RecupererInscrit(string mail); + bool EmailDisponible(string mail); + + + //actions sur les banques + bool AjouterBanque(Banque banque); + bool SupprimerBanque(Banque banque); + bool ModifierBanque(Banque banque); + IList RecupererBanques(Inscrit inscrit); + IList RecupererBanquesDisponible(); + + + //actions sur les comptes + bool AjouterCompte(Compte compte); + bool SupprimerCompte(Compte compte); + bool ModifierCompte(Compte compte); + IList RecupererCompte(Banque banque); + + + //actions sur les Opérations + bool AjouterOperation(Compte compte); + bool SupprimerOperation(Compte compte); + bool ModifierOperation(Compte compte); + IList RecupererOperation(Compte compte); + + + //actions sur les Planifications + bool AjouterPlanification(Compte compte); + bool SupprimerPlanification(Compte compte); + bool ModifierPlanification(Compte compte); + IList RecupererPlanification(Compte compte); + + + //actions sur les Echéances + bool AjouterEcheance(Compte compte); + bool SupprimerEcheance(Compte compte); + bool ModifierEcheance(Compte compte); + IList RecupererEcheance(Compte compte); + + + //actions utilitaire + bool TestConnexion(); + } }