using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Npgsql; using Model; using System.IO; using System.Diagnostics; using System.Windows; using System.Threading; namespace LinqToPgSQL { public class PersLinqToPgSQL : IPersistanceManager { private static string Host = "90.114.135.116"; private static string User = "postgres"; private static string DBname = "conseco"; private static string Password = "lulu"; private static string Port = "5432"; string connString = String.Format( "Server={0};Username={1};Database={2};Port={3};Password={4};SSLMode=Prefer", Host, User, DBname, Port, Password); public PersLinqToPgSQL() { } public IEnumerable LoadInscrit() { List ListeInscrits = new List(); var conn = new NpgsqlConnection(connString); Console.Out.WriteLine("Ouverture de la connection"); try { conn.Open(); } catch { conn.Close(); MessageBox.Show("Problème de connection à la base de données. L'application se fermera après fermeture de la fenêtre"); Environment.Exit(0); } NpgsqlDataReader dbReader = new NpgsqlCommand("SELECT * FROM Inscrit", conn).ExecuteReader(); while (dbReader.Read()) { ListeInscrits.Add(new Inscrit(dbReader.GetString(0), dbReader.GetString(1), dbReader.GetString(2), dbReader.GetString(3), dbReader.GetString(4))); } dbReader.Close(); return ListeInscrits; } public IEnumerable LoadBanque() { List ListeBanques = new List(); var conn = new NpgsqlConnection(connString); Console.Out.WriteLine("Ouverture de la connection"); try { conn.Open(); } catch { conn.Close(); MessageBox.Show("Problème de connection à la base de donnée. Aprés fermeture, l'application se fermera automatiquement"); Environment.Exit(-1); } NpgsqlDataReader dbReader = new NpgsqlCommand("SELECT * FROM Banque", conn).ExecuteReader(); while (dbReader.Read()) { ListeBanques.Add(new Banque(dbReader.GetString(0), dbReader.GetString(1), dbReader.GetString(2))); } dbReader.Close(); return ListeBanques; } /*Charge le compte d'un inscrit*/ public IEnumerable LoadCompte(Inscrit i) { List ListeCompte = new List(); var conn = new NpgsqlConnection(connString); Console.Out.WriteLine("Ouverture de la connection"); try { conn.Open(); } catch { conn.Close(); MessageBox.Show("Problème de connection à la base de données. Aprés fermeture, l'application se fermera automatiquement."); Environment.Exit(-1); } string requete = "Select * FROM Compte c, InscrBanque ib, Inscrit i WHERE c.idInscrit = ib.idInscrit AND c.idInscritBanque = ib.id AND i.id = (@p1)"; NpgsqlDataReader dbReader = new NpgsqlCommand("Select * FROM Compte c, InscrBanque ib, Inscrit i WHERE c.idInscrit = ib.idInscrit AND c.idInscritBanque = ib.id AND i.id = (@p1) ", conn).ExecuteReader(); using (var command1 = new NpgsqlCommand(requete, conn)) { command1.Parameters.AddWithValue("p", i.Id); /*await command1.ExecuteNonQueryAsync();*/ } while (dbReader.Read()) { ListeCompte.Add(new Compte(dbReader.GetString(0), dbReader.GetInt64(1))); } dbReader.Close(); return ListeCompte; } /*Suppression d'un inscrit dans la base de données*/ public async void SupprimerInscritBdd(Inscrit i) { var conn = new NpgsqlConnection(connString); Console.Out.WriteLine("Ouverture de la connection"); try { conn.Open(); } catch { conn.Close(); MessageBox.Show("Problème de connection à la base de données. Aprés fermeture, l'application se fermera automatiquement."); Environment.Exit(-1); } string requete = $"DELETE FROM INSCRIT WHERE id=(@p)"; using (var command1 = new NpgsqlCommand(requete, conn)) { command1.Parameters.AddWithValue("p", i.Id); await command1.ExecuteNonQueryAsync(); } SupprimerToutesBanquesBdd(i); /* SupprimerCompteBdd(i); SupprimerEcheancierBdd(i); SupprimerPlanificationBdd(i); */ } /* Suppression de toutes les banques d'un inscrit*/ public async void SupprimerToutesBanquesBdd(Inscrit i) { var conn = new NpgsqlConnection(connString); Console.Out.WriteLine("Ouverture de la connection"); try { conn.Open(); } catch { conn.Close(); MessageBox.Show("Problème de connection ave la base de données. Aprés fermeture de la fenêtre, l'application se fermera automatiquement"); Environment.Exit(-1); } string requete = $"DELETE * FROM BANQUE b, INSCRBANQUE ib WHERE b.nom=ib.nomBanque AND ib.idInscrit=(@id)"; using (var command1 = new NpgsqlCommand(requete, conn)) { command1.Parameters.AddWithValue("id", i.Id.ToString()); await command1.ExecuteNonQueryAsync(); } } /*Suppression d'une banque d'un inscrit*/ public async void SupprimerBanqueBdd(Inscrit i, Banque b) { var conn = new NpgsqlConnection(connString); Console.Out.WriteLine("Ouverture de la connection"); try { conn.Open(); } catch { conn.Close(); MessageBox.Show("Problème de connection avec la base de données. Aprés fermeture de la fenêtre, l'application se fermera automatiquement"); Environment.Exit(-1); } await using var cmd = new NpgsqlCommand("DELETE FROM InscrBanque WHERE nombanque=(@b) AND idinscrit=(@i)", conn) { Parameters = { new("b", b.Nom), new("i", i.Id) } }; await cmd.ExecuteNonQueryAsync(); // attente des autres supression } } }