public int GetVisitMembres(Membres m)
        {
            int?IdIp = GetIdIp(m);

            if (IdIp != null)
            {
                int visits = 0;

                IDbCommand command = new SqlCommand("SELECT Id FROM Visites WHERE IdIP = @IdIP", (SqlConnection)ConnectionUtilisateurs.Instance);
                command.Parameters.Add(new SqlParameter("@IdIP", SqlDbType.Int)
                {
                    Value = IdIp
                });
                ConnectionUtilisateurs.Instance.Open();
                SqlDataReader reader = (SqlDataReader)command.ExecuteReader();
                while (reader.Read())
                {
                    visits++;
                }
                reader.Close();
                command.Dispose();
                ConnectionUtilisateurs.Instance.Close();
                return(visits);
            }
            else
            {
                return(0);
            }
        }
 private int?GetIdIp(Membres m)
 {
     try
     {
         int        IdIp;
         IDbCommand command = new SqlCommand("SELECT Id FROM IP WHERE IdMembre = @IdMembre", (SqlConnection)ConnectionUtilisateurs.Instance);
         command.Parameters.Add(new SqlParameter("@IdMembre", SqlDbType.Int)
         {
             Value = m.IdMembre
         });
         ConnectionUtilisateurs.Instance.Open();
         SqlDataReader reader = (SqlDataReader)command.ExecuteReader();
         reader.Read();
         IdIp = reader.GetInt32(0);
         reader.Close();
         command.Dispose();
         ConnectionUtilisateurs.Instance.Close();
         return(IdIp);
     }
     catch
     {
         ConnectionUtilisateurs.Instance.Close();
         return(null);
     }
 }
        public List <Membres> GetAllMembres()
        {
            List <Membres> membres = new List <Membres>();
            IDbCommand     command = new SqlCommand("SELECT * FROM Membres", (SqlConnection)ConnectionUtilisateurs.Instance);

            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            while (reader.Read())
            {
                Membres m = new Membres
                {
                    IdMembre        = reader.GetInt32(0),
                    Pseudo          = reader.GetString(1),
                    Avatar          = reader.GetString(6),
                    Mail            = reader.GetString(2),
                    Statut          = reader.GetString(5),
                    DateInscription = reader.GetDateTime(7)
                };

                membres.Add(m);
            }
            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            return(membres);
        }
        public Membres GetMembreByPseudo(string pseudo)
        {
            IDbCommand command = new SqlCommand("SELECT * FROM Membres WHERE Pseudo = @Pseudo", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Pseudo", SqlDbType.VarChar)
            {
                Value = pseudo
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            reader.Read();
            Membres m = new Membres
            {
                IdMembre        = reader.GetInt32(0),
                Pseudo          = pseudo,
                DateInscription = reader.GetDateTime(7),
                Mail            = reader.GetString(2),
                NoUnique        = reader.GetString(4),
                Statut          = reader.GetString(5),
                Avatar          = reader.GetString(6)
            };

            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            return(m);
        }
        public Membres GetMembreByNo(Membres m)
        {
            IDbCommand command = new SqlCommand("SELECT Id, Pseudo, Mail, Statut FROM Membres WHERE NumeroUnique = @NumeroUnique", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@NumeroUnique", SqlDbType.VarChar)
            {
                Value = m.NoUnique
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            if (!reader.Read())
            {
                reader.Close();
                command.Dispose();
                ConnectionUtilisateurs.Instance.Close();
                return(null);
            }

            else
            {
                m = new Membres {
                    IdMembre = reader.GetInt32(0), Pseudo = reader.GetString(1), Statut = reader.GetString(3), Mail = reader.GetString(2)
                };
                reader.Close();
                command.Dispose();

                if (m.Statut == "Inactif")
                {
                    command = new SqlCommand("UPDATE Membres SET Statut = @Statut WHERE Id = @Id", (SqlConnection)ConnectionUtilisateurs.Instance);
                    command.Parameters.Add(new SqlParameter("@Statut", SqlDbType.VarChar)
                    {
                        Value = "Membre"
                    });
                    command.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int)
                    {
                        Value = m.IdMembre
                    });
                    command.ExecuteNonQuery();
                }

                command.Dispose();
                ConnectionUtilisateurs.Instance.Close();
                return(m);
            }
        }
        public void UpdatePassword(Membres m)
        {
            IDbCommand command = new SqlCommand("UPDATE Membres SET Password = @Password WHERE NumeroUnique = @NumeroUnique", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@NumeroUnique", SqlDbType.VarChar)
            {
                Value = m.NoUnique
            });
            command.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar)
            {
                Value = m.Password
            });
            ConnectionUtilisateurs.Instance.Open();
            command.ExecuteNonQuery();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
        }
        public void UpdateAvatar(Membres m)
        {
            IDbCommand command = new SqlCommand("UPDATE Membres SET Avatar = @Avatar WHERE Id = @Id", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Avatar", SqlDbType.VarChar)
            {
                Value = m.Avatar
            });
            command.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int)
            {
                Value = m.IdMembre
            });
            ConnectionUtilisateurs.Instance.Open();
            command.ExecuteNonQuery();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
        }
        public Membres ComparePassword(string mail, string HashPassword)
        {
            IDbCommand command = new SqlCommand("SELECT Password FROM Membres WHERE Mail = @Mail", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Mail", SqlDbType.VarChar)
            {
                Value = mail
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            reader.Read();
            string PassWord = (string)reader.GetValue(0);

            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            if (PassWord == HashPassword)
            {
                command = new SqlCommand("SELECT Id, Pseudo, Avatar, Statut, NumeroUnique FROM Membres WHERE Mail = @Mail", (SqlConnection)ConnectionUtilisateurs.Instance);
                command.Parameters.Add(new SqlParameter("@Mail", SqlDbType.VarChar)
                {
                    Value = mail
                });
                ConnectionUtilisateurs.Instance.Open();
                reader = (SqlDataReader)command.ExecuteReader();
                reader.Read();

                Membres m = new Membres {
                    IdMembre = reader.GetInt32(0), Pseudo = reader.GetString(1), Avatar = reader.GetString(2), Statut = reader.GetString(3), NoUnique = reader.GetString(4), Mail = mail
                };
                reader.Close();
                command.Dispose();
                ConnectionUtilisateurs.Instance.Close();
                return(m);
            }
            else
            {
                Membres m = new Membres {
                    Mail = mail
                };
                return(m);
            }
        }
        public string VerifStatut(Membres m)
        {
            IDbCommand command = new SqlCommand("SELECT Statut FROM Membres WHERE Mail = @Mail", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Mail", SqlDbType.VarChar)
            {
                Value = m.Mail
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            reader.Read();
            string statut = reader.GetString(0);

            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            return(statut);
        }
        public string GetNoUniqueMembre(Membres m)
        {
            IDbCommand command = new SqlCommand("SELECT NumeroUnique FROM Membres WHERE Mail = @Mail", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Mail", SqlDbType.VarChar)
            {
                Value = m.Mail
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            reader.Read();
            string NoUnique = (string)reader.GetValue(0);

            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            return(NoUnique);
        }
        public void RegisterMembre(Membres m)
        {
            IDbCommand command = new SqlCommand("INSERT INTO Membres (Pseudo, Mail, Password, NumeroUnique, DateInscription) OUTPUT INSERTED.ID VALUES (@Pseudo, @Mail, @Password, @NumeroUnique, @DateInscription)", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Pseudo", SqlDbType.VarChar)
            {
                Value = m.Pseudo
            });
            command.Parameters.Add(new SqlParameter("@Mail", SqlDbType.VarChar)
            {
                Value = m.Mail
            });
            command.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar)
            {
                Value = m.Password
            });
            command.Parameters.Add(new SqlParameter("@NumeroUnique", SqlDbType.VarChar)
            {
                Value = m.NoUnique
            });
            command.Parameters.Add(new SqlParameter("@DateInscription", SqlDbType.DateTime)
            {
                Value = m.DateInscription
            });

            ConnectionUtilisateurs.Instance.Open();
            int Id = (int)command.ExecuteScalar();

            command.Dispose();
            command = new SqlCommand("UPDATE IP SET IdMembre = @IdMembre WHERE IP = @IP", (SqlConnection)ConnectionUtilisateurs.Instance);
            command.Parameters.Add(new SqlParameter("@IdMembre", SqlDbType.Int)
            {
                Value = Id
            });
            command.Parameters.Add(new SqlParameter("@IP", SqlDbType.VarChar)
            {
                Value = m.Ip
            });
            command.ExecuteNonQuery();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
        }
        public bool MailExist(Membres m)
        {
            bool       Exist   = false;
            IDbCommand command = new SqlCommand("SELECT * FROM Membres WHERE Mail = @Mail", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Mail", SqlDbType.VarChar)
            {
                Value = m.Mail
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            if (reader.Read())
            {
                Exist = true;
            }
            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            return(Exist);
        }
        public Membres GetMembreById(int id)
        {
            IDbCommand command = new SqlCommand("SELECT * FROM Membres WHERE Id = @Id", (SqlConnection)ConnectionUtilisateurs.Instance);

            command.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int)
            {
                Value = id
            });
            ConnectionUtilisateurs.Instance.Open();
            SqlDataReader reader = (SqlDataReader)command.ExecuteReader();

            reader.Read();
            Membres m = new Membres {
                Pseudo = reader.GetString(1), IdMembre = reader.GetInt32(0), Avatar = reader.GetString(6)
            };

            reader.Close();
            command.Dispose();
            ConnectionUtilisateurs.Instance.Close();
            return(m);
        }