/// <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()); }
/// <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); }
/// <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); }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }
/// <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); }