示例#1
0
        /// <summary>
        /// Tente de connecter un utilisateur et, le cas échant, créer un objet User
        /// </summary>
        /// <param name="mail">Identifiant</param>
        /// <param name="mdp">Mot de passe</param>
        public static User connectUser(string mail, string mdp)
        {
            // Hashage du mot de passe
            string mdpHash = Utils.SHA256Hash(mdp);

            // Création de la commande
            MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();

            command.CommandText = "SELECT * FROM profil WHERE MAIL = @mail AND MDP = @mdp";
            command.Parameters.AddWithValue("@mail", mail);
            command.Parameters.AddWithValue("@mdp", mdpHash);

            // Overture de la connexion et execution de la commande SQL
            RemoteDataBase.GetDatabaseConnection().Open();
            MySqlDataReader rdr = command.ExecuteReader();

            // On vérifie si l'authentification a réussi
            if (rdr.Read())
            {
                if ((string)rdr["NOM"] != null && (string)rdr["PRENOM"] != null)
                {
                    User user = new User(rdr["ID_PROFIL"].ToString(), (string)rdr["NOM"], (string)rdr["PRENOM"],
                                         (string)rdr["MAIL"], DateTime.Parse(rdr["DATENAIS"].ToString()), (string)rdr["DESCRIPTIION"],
                                         (string)rdr["MDP"]);

                    TempData.writeUserTempFile(user);
                    return(user);
                }
            }
            RemoteDataBase.GetDatabaseConnection().Close();

            return(new User());
        }
示例#2
0
        /// <summary>
        /// Permet d'enregistrer un nouveau projet sur la base de données
        /// </summary>
        /// <param name="nom">Nom du projet</param>
        /// <param name="description">Description du projet</param>
        /// <param name="date_creation">Date de création du projet</param>
        /// <param name="etat">Etat su projet (facultatif)</param>
        /// <param name="deadline">Date limite du projet (facultatif)</param>
        /// <param name="pourcentage">Pourcentage d'avancement du projet (facultatif)</param>
        /// <returns><code>true</code> si l'ajout a réussi, <code>false</code> sinon</returns>
        public static bool createProject(string nom, string description, DateTime date_creation, string etat = null, DateTime deadline = new DateTime(), string pourcentage = null)
        {
            if (!string.IsNullOrEmpty(nom) && !string.IsNullOrEmpty(description))
            {
                // Création de la commande
                MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();
                command.CommandText = "INSERT INTO projet (ID_PROJET, NOM, DESCRIPTION, DATECREA, ETAT, DEADLINE, POURCENTAGE) VALUES (@id, @nom, @desc, @datecrea, @etat, @deadline, @pourcentage)";
                command.Parameters.AddWithValue("@id", getMaxIndex());
                command.Parameters.AddWithValue("@nom", nom);
                command.Parameters.AddWithValue("@desc", description);
                command.Parameters.AddWithValue("@datecrea", date_creation.ToString("s"));
                command.Parameters.AddWithValue("@etat", etat);
                command.Parameters.AddWithValue("@deadline", deadline.ToString("s"));
                command.Parameters.AddWithValue("@pourcentage", pourcentage);

                // Overture de la connexion et execution de la commande SQL
                RemoteDataBase.GetDatabaseConnection().Open();
                int lineAffected = command.ExecuteNonQuery();

                RemoteDataBase.GetDatabaseConnection().Close();

                // Vérification du bon fonctionnement de la modification
                if (lineAffected == 1)
                {
                    return(true);
                }
            }

            return(false);
        }
示例#3
0
        /// <summary>
        /// Permet d'obtenir un objet "Projet" depuis son ID
        /// </summary>
        /// <param name="id">ID du projet à récupérer</param>
        /// <returns>Retourne un objet Project si la récupération a fonctionné, null sinon</returns>
        public static Project getProjectFromID(string id)
        {
            // Création de la commande
            MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();

            command.CommandText = "SELECT * FROM projet WHERE ID_PROJET = @id";
            command.Parameters.AddWithValue("@id", id);

            // Overture de la connexion et execution de la commande SQL
            RemoteDataBase.GetDatabaseConnection().Open();
            MySqlDataReader rdr = command.ExecuteReader();

            // On vérifie qu'un projet a été retourné
            if (rdr.Read())
            {
                if ((string)rdr["NOM"] != null)
                {
                    Project project = new Project((string)rdr["ID"], (string)rdr["NOM"], (string)rdr["DESCRIPTION"], DateTime.Parse(rdr["DATECREA"].ToString()), rdr["ETAT"].ToString(), DateTime.Parse(rdr["DEADLINE"].ToString()), rdr["POURCENTAGE"].ToString());

                    return(project);
                }
            }
            RemoteDataBase.GetDatabaseConnection().Close();

            return(null);
        }
示例#4
0
        /// <summary>
        /// Permet de déterminer si le mail est déjà utilisé
        /// </summary>
        /// <param name="mail">Mail à vérifier</param>
        /// <returns><code>true</code> si le mail est déjà utilisé, <code>false</code> sinon</returns>
        public static bool isMailUsed(string mail)
        {
            if (!string.IsNullOrWhiteSpace(mail))
            {
                // Création de la commande
                MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();
                command.CommandText = "SELECT COUNT(*) FROM profil WHERE MAIL = @mail";
                command.Parameters.AddWithValue("@mail", mail);
                command.CommandType = CommandType.Text;

                // Overture de la connexion et execution de la commande SQL
                RemoteDataBase.GetDatabaseConnection().Open();
                string lineAffected = command.ExecuteScalar().ToString();

                RemoteDataBase.GetDatabaseConnection().Close();


                if (int.Parse(lineAffected) >= 1)
                {
                    return(true);
                }
            }

            return(false);
        }
示例#5
0
        /// <summary>
        /// Fonction permettant d'ajouter un nouvel utilisateur à la base de données
        /// </summary>
        /// <param name="nom">Nom</param>
        /// <param name="prenom">Prénom</param>
        /// <param name="mail">Mail</param>
        /// <param name="datenais">Date de naissance</param>
        /// <param name="desc">Description / Infos</param>
        /// <param name="mdp">Mot de passe (hashé)</param>
        /// <returns><code>true</code> si l'ajout a réussi, <code>false</code> sinon</returns>
        public static bool createUser(string nom, string prenom, string mail, DateTime datenais, string desc, string mdp)
        {
            if (!string.IsNullOrWhiteSpace(nom) && !string.IsNullOrWhiteSpace(prenom) && !string.IsNullOrWhiteSpace(mail) && !string.IsNullOrWhiteSpace(desc) && !string.IsNullOrWhiteSpace(mdp))
            {
                // Création de la commande
                MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();
                command.CommandText = "INSERT INTO profil (ID_PROFIL, NOM, PRENOM, MAIL, DATENAIS, DESCRIPTIION, MDP) VALUES (@id, @nom, @prenom, @mail, @datenais, @desc, @mdp)";
                command.Parameters.AddWithValue("@id", getMaxIndex() + 1);
                command.Parameters.AddWithValue("@nom", nom);
                command.Parameters.AddWithValue("@prenom", prenom);
                command.Parameters.AddWithValue("@mail", mail);
                command.Parameters.AddWithValue("@datenais", datenais.ToString("s"));
                command.Parameters.AddWithValue("@desc", desc);
                command.Parameters.AddWithValue("@mdp", mdp);

                // Overture de la connexion et execution de la commande SQL
                RemoteDataBase.GetDatabaseConnection().Open();
                int lineAffected = command.ExecuteNonQuery();

                RemoteDataBase.GetDatabaseConnection().Close();

                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Met en place tout les éléments nécessaires à la connexion à la base de données
        /// </summary>
        /// <param name="settings">Objet contenant les paramètres de connexion à la base de données</param>
        public static void startConnection(DatabaseSettings settings)
        {
            // Mise en place de la connexion à la base de données
            dbSettings = settings;
            dbSettings.ReadConfiguration();
            connectionString = string.Format("server={0};user={1};pwd={2};", settings.GetDatabaseServer(), settings.GetUser(), settings.GetPassword());
            dbConnection     = new MySqlConnection(connectionString);

            // 0n vérifie l'existance de la base de données
            if (RemoteDataBase.DBExists(dbConnection, settings.GetDatabaseName()))
            {
                // Mise à jour de l'objet de connexion
                connectionString = string.Format("server={0};user={1};pwd={2};database={3}", settings.GetDatabaseServer(), settings.GetUser(), settings.GetPassword(), settings.GetDatabaseName());
                dbConnection     = new MySqlConnection(connectionString);
            }
        }
示例#7
0
        /// <summary>
        /// Fonction permettant de mettre à jour les informations de l'utilisateur sur la base données et dans l'objet courant
        /// </summary>
        /// <param name="nom">Nom</param>
        /// <param name="prenom">Prénom</param>
        /// <param name="mail">Mail</param>
        /// <param name="datenais">Date de naissance</param>
        /// <param name="desc">Description / Infos</param>
        /// <param name="mdp">Mot de passe (hashé en SHA2 256)</param>
        /// <returns><code>true</code> si la modification a réussi, <code>false</code> sinon</returns>
        public bool updateUserInformations(string nom, string prenom, string mail, DateTime datenais, string desc, string mdp)
        {
            if (!string.IsNullOrWhiteSpace(nom) && !string.IsNullOrWhiteSpace(prenom) && !string.IsNullOrWhiteSpace(mail) && !string.IsNullOrWhiteSpace(desc) && !string.IsNullOrWhiteSpace(mdp))
            {
                // Création de la commande
                MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();
                command.CommandText = "UPDATE profil SET NOM = @nom, PRENOM = @prenom, MAIL = @mail, DATENAIS = @datenais, DESCRIPTIION = @desc, MDP = @mdp WHERE ID_PROFIL = @id";
                command.Parameters.AddWithValue("@id", this.ID_PROFIL);
                command.Parameters.AddWithValue("@nom", nom);
                command.Parameters.AddWithValue("@prenom", prenom);
                command.Parameters.AddWithValue("@mail", mail);
                command.Parameters.AddWithValue("@datenais", datenais.ToString("s"));
                command.Parameters.AddWithValue("@desc", desc);
                command.Parameters.AddWithValue("@mdp", mdp);

                // Overture de la connexion et execution de la commande SQL
                RemoteDataBase.GetDatabaseConnection().Open();
                int lineAffected = command.ExecuteNonQuery();

                RemoteDataBase.GetDatabaseConnection().Close();

                // Vérification du bon fonctionnement de la modification
                if (lineAffected == 1)
                {
                    User us = connectUser(mail, mdp);
                    if (us.ID_PROFIL != null)
                    {
                        this.NOM         = nom;
                        this.PRENOM      = prenom;
                        this.MAIL        = mail;
                        this.DATENAIS    = datenais;
                        this.DESCRIPTION = desc;
                        this.MDP         = mdp;

                        return(true);
                    }
                }
            }

            return(false);
        }
示例#8
0
        /// <summary>
        /// Permet d'obtenir l'ID le plus élevé déjà utilisé
        /// </summary>
        /// <returns></returns>
        public static int getMaxIndex()
        {
            // Création de la commande
            MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();

            command.CommandText = "SELECT MAX(ID_PROJET) as nb FROM projet";
            command.CommandType = CommandType.Text;

            // Overture de la connexion et execution de la commande SQL
            RemoteDataBase.GetDatabaseConnection().Open();
            string id = command.ExecuteScalar().ToString();

            // On vérifie si l'authentification a réussi
            if (!string.IsNullOrEmpty(id))
            {
                RemoteDataBase.GetDatabaseConnection().Close();
                return(int.Parse(id));
            }

            RemoteDataBase.GetDatabaseConnection().Close();
            return(0);
        }
示例#9
0
        /// <summary>
        /// Permet de mettre à jour les informations du projet sur la base de données et dans l'objet courant
        /// </summary>
        /// <param name="nom">Nom du projet</param>
        /// <param name="description">Description du projet</param>
        /// <param name="date_creation">Date de création du projet</param>
        /// <param name="etat">Etat su projet (facultatif)</param>
        /// <param name="deadline">Date limite du projet (facultatif)</param>
        /// <param name="pourcentage">Pourcentage d'avancement du projet (facultatif)</param>
        /// <returns><code>true</code> si la mise à jour a réussi, <code>false</code> sinon</returns>
        public bool updateProjectInformations(string nom, string description, DateTime date_creation, string etat = null, DateTime deadline = new DateTime(), string pourcentage = null)
        {
            if (!string.IsNullOrEmpty(nom) && !string.IsNullOrEmpty(description))
            {
                // Création de la commande
                MySqlCommand command = RemoteDataBase.GetDatabaseConnection().CreateCommand();
                command.CommandText = "UPDATE projet SET NOM = @nom, DESCRIPTION = @desc, DATECREA = @datecrea, ETAT = @etat, DEADLINE = @deadline, POURCENTAGE = @pourcentage WHERE ID_PROJET = @id";
                command.Parameters.AddWithValue("@id", this.ID_PROJET);
                command.Parameters.AddWithValue("@nom", nom);
                command.Parameters.AddWithValue("@desc", description);
                command.Parameters.AddWithValue("@datecrea", date_creation.ToString("s"));
                command.Parameters.AddWithValue("@etat", etat);
                command.Parameters.AddWithValue("@deadline", deadline.ToString("s"));
                command.Parameters.AddWithValue("@pourcentage", pourcentage);

                // Ouverture de la connexion et execution de la commande SQL
                RemoteDataBase.GetDatabaseConnection().Open();
                int lineAffected = command.ExecuteNonQuery();

                RemoteDataBase.GetDatabaseConnection().Close();

                // Vérification du bon fonctionnement de la modification
                if (lineAffected == 1)
                {
                    this.NOM         = nom;
                    this.DESCRIPTION = description;
                    this.DATECREA    = date_creation;
                    this.ETAT        = etat;
                    this.DEADLINE    = deadline;
                    this.POURCENTAGE = pourcentage;

                    return(true);
                }
            }

            return(false);
        }