diff options
| author | Debulois <quentin@debulois.fr> | 2022-03-13 12:42:37 +0100 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-03-13 12:42:37 +0100 |
| commit | 473e6eb56ca1211be05d2b5fd814710f2ff78d38 (patch) | |
| tree | 4544b6c5c2ecaa3198d3583520f3199d7c056ed4 /Database | |
| parent | 497ce42637ebaad0c388d309d6b5bbf91db2dfa4 (diff) | |
Mise ç jour de pas mal de chose et ajout de la possibilité de pouvoir ajouter/supprimer des catégories d'emploi
Diffstat (limited to 'Database')
| -rw-r--r-- | Database/dbmain.php | 10 | ||||
| -rw-r--r-- | Database/meth_dbadmin.php | 108 | ||||
| -rw-r--r-- | Database/meth_dbmission.php | 59 | ||||
| -rw-r--r-- | Database/meth_dbsearch.php | 38 | ||||
| -rw-r--r-- | Database/meth_dbuser.php | 89 |
5 files changed, 207 insertions, 97 deletions
diff --git a/Database/dbmain.php b/Database/dbmain.php index 532bb7c..262c55a 100644 --- a/Database/dbmain.php +++ b/Database/dbmain.php @@ -12,6 +12,8 @@ // final: ne peut etre ré-écris (overload) class DbMain { + // Pour gérer si "en production" + private $debug = True; // Salt pour chiffrement private $salt = "cTKXHBoN3oxymlhNem2h"; // Configuration du serveur MYSQL / MARIADB @@ -19,10 +21,9 @@ class DbMain { private $host = "127.0.0.1"; private $user = "root"; private $pass = ""; - private $debug = True; - // Déclaration des tables private $database = "alphajob"; + // Déclaration des tables // Timestamp auto si non renseigné // UserAccount, infos du compte nécessaire à la connection private $createTableUserAccount = "CREATE TABLE IF NOT EXISTS `alphajob`.`userAccount` ( @@ -65,8 +66,9 @@ class DbMain { // Liste des categories d'emploie possible private $createTableJobCategory = "CREATE TABLE IF NOT EXISTS `alphajob`.`jobCategory` ( - `jobCategoryId` INT UNSIGNED NOT NULL, - `categoryName` VARCHAR(128) NOT NULL, + `jobCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `jobCategoryNameEn` VARCHAR(128) NOT NULL, + `jobCategoryNameFr` VARCHAR(128) NOT NULL, PRIMARY KEY (`jobCategoryId`) ) ENGINE = InnoDB diff --git a/Database/meth_dbadmin.php b/Database/meth_dbadmin.php new file mode 100644 index 0000000..32d6077 --- /dev/null +++ b/Database/meth_dbadmin.php @@ -0,0 +1,108 @@ +<?php +// **************************************************************************** +// Description: Ensemble de méthodes pour étendre dbmain +// afin de gérer l'administration du site +// **************************************************************************** + +// Import de dbmain +require_once(dirname( __FILE__ )."/dbmain.php"); +// Extension de cette classe avec dbmain +class DbAdmin extends DbMain { + + // Récupérer toutes les infos de la table userAccount + final public function get_all_users_account() { + $reqGetAll = "SELECT * FROM ".$this->tableUserAccount; + // https://www.php.net/manual/fr/pdostatement.fetch.php + // "PDO::FETCH_ASSOC: retourne un tableau indexé + // par le nom de la colonne comme retourné dans le jeu de résultats" + $data = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); + return $data; + } + + // https://stackoverflow.com/questions/1361340/how-can-i-do-insert-if-not-exists-in-mysql + // Suppresion d'un utilisateur + final public function user_del($userId) { + // Préparation de la requète pour voir si l'utilisateur existe + // https://stackoverflow.com/questions/1676551/best-way-to-test-if-a-row-exists-in-a-mysql-table + $reqCheckExistId = "SELECT EXISTS(SELECT 1 FROM ".$this->tableUserAccount." WHERE userId = ? LIMIT 1)"; + // Exécution de la requète, fetchall pour avoir le résultat + // https://www.php.net/manual/fr/pdostatement.fetch.php + // struct par défaut req et index (fetch_both) = arr([0] => arr("req" => BOOL, [0] => BOOL)) + // PDO::FETCH_NUM : retourne un tableau indexé par le numéro de la colonne comme elle + // est retourné dans votre jeu de résultat, commençant à 0 + $reqResult = $this->exec_cmd($reqCheckExistId, array($userId))->fetchAll(PDO::FETCH_NUM); + // Si il existe + if ($reqResult[0][0]) { + // Préparation de la requète pour suppression + $reqDelUser = "DELETE FROM ".$this->tableUserAccount." WHERE userId = ?"; + // Exécution de la requète + $this->exec_cmd($reqDelUser, array($userId)); + // Retourne 1 pour réussite + return 1; + } else { + // Retourne 0 pour échec + return 0; + } + } + + // Récupérer toutes les infos de la table jobCategory + final public function get_all_job_category() { + $reqGetAll = "SELECT * FROM ".$this->tableJobCategory; + $data = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); + return $data; + } + + // Ajout d'une categorie + final public function job_category_register($jobCategoryNameEn, $jobCategoryNameFr) { + // Préparation et execution de la requète pour voir si la categorie existe en anglais + $reqCheckjobCategoryNameEn = "SELECT EXISTS(SELECT 1 FROM ".$this->tableJobCategory." WHERE jobCategoryNameEn = ? LIMIT 1)"; + $reqResultEn = $this->exec_cmd($reqCheckjobCategoryNameEn, array($jobCategoryNameEn))->fetchAll(PDO::FETCH_NUM); + // Si il n'existe pas en anglais + if (!$reqResultEn[0][0]) { + // Préparation et execution de la requète pour voir si la categorie existe en Français + $reqCheckjobCategoryNameFr = "SELECT EXISTS(SELECT 1 FROM ".$this->tableJobCategory." WHERE jobCategoryNameFr = ? LIMIT 1)"; + $reqResultFr = $this->exec_cmd($reqCheckjobCategoryNameFr, array($jobCategoryNameFr))->fetchAll(PDO::FETCH_NUM); + // Si il n'existe pas en Français non plus + if (!$reqResultFr[0][0]) { + // Préparation de la requète pour l'ajout + $reqjobCategoryNameAdd = "INSERT INTO ".$this->tableJobCategory." + (jobCategoryNameEn, jobCategoryNameFr) + VALUES + (? ,?)"; + // Exécution de la requète + $this->exec_cmd($reqjobCategoryNameAdd, array($jobCategoryNameEn, $jobCategoryNameFr)); + // Retourne 1 pour réussite + return 1; + } else { + // Retourne 0 pour échec + return 0; + } + } else { + // Retourne 0 pour échec + return 0; + } + } + + // Suppresion d'un utilisateur + final public function job_category_del($jobCategoryId) { + // Préparation de la requète pour voir si l'utilisateur existe + $reqCheckExistId = "SELECT EXISTS(SELECT 1 FROM ".$this->tableJobCategory." WHERE jobCategoryId = ? LIMIT 1)"; + // Exécution de la requète, fetchall pour avoir le résultat + // struct par défaut req et index (fetch_both) = arr([0] => arr("req" => BOOL, [0] => BOOL)) + // fetch_num pour casser l'index "req" en chiffre, dict -> list + $reqResult = $this->exec_cmd($reqCheckExistId, array($jobCategoryId))->fetchAll(PDO::FETCH_NUM); + // Si il existe + if ($reqResult[0][0]) { + // Préparation de la requète pour suppression + $reqDelJobCategory = "DELETE FROM ".$this->tableJobCategory." WHERE jobCategoryId = ?"; + // Exécution de la requète + $this->exec_cmd($reqDelJobCategory, array($jobCategoryId)); + // Retourne 1 pour réussite + return 1; + } else { + // Retourne 0 pour échec + return 0; + } + } +} +?>
\ No newline at end of file diff --git a/Database/meth_dbmission.php b/Database/meth_dbmission.php new file mode 100644 index 0000000..006f572 --- /dev/null +++ b/Database/meth_dbmission.php @@ -0,0 +1,59 @@ +<?php +// **************************************************************************** +// Description: Ensemble de méthodes pour étendre dbmain afin +// d'effectuer des recherches dans la bdd +// **************************************************************************** +// Infos pour les "join": +// https://www.freecodecamp.org/news/sql-joins-tutorial/ +// +// Import de dbmain +require_once(dirname( __FILE__ )."/dbmain.php"); +// Extension de cette classe avec dbmain +class DbMission extends DbMain { + + // Enregistrement d'une mission + final public function register_mission($subject, $note, $review, $clientId, $proId) { + // Vérification de l'existance de l'id de consultant + $exist = $this->check_exist_pro($proId); + // Si il existe + if ($exist) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = "INSERT INTO ".$this->tableMission." + (date, subject, note, review, clientId, proId) + VALUES (?, ?, ?, ?, ?, ?)"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, + array(date("Y-m-d H:i:s"), $subject, + $note, $review, + $clientId, $proId + ) + ); + // Retourne 1 pour réussite + return 1; + } else { + // Retourne 0 pour échec + return 0; + } + } + + // Récupérations des missions d'un pro par son id + final public function get_mission_by_id($id) { + $reqGetAllMission = "SELECT subject, note, review, lastname FROM ".$this->tableMission." + LEFT JOIN ".$this->tableUserInfo." + ON ".$this->tableMission.".missionId = ".$this->tableUserInfo.".userId + WHERE proId = ?"; + $data = $this->exec_cmd($reqGetAllMission, array($id))->fetchAll(PDO::FETCH_ASSOC); + return $data; + } + + // Compte le nombre de mission d'un consultant par son nom + final public function count_pro_missions_by_lastname($name) { + $reqCountMission = "SELECT COUNT(*) FROM ".$this->tableMission." + INNER JOIN ".$this->tableUserInfo." + ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE lastname = ?"; + $data = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); + return $data; + } + +}
\ No newline at end of file diff --git a/Database/meth_dbsearch.php b/Database/meth_dbsearch.php index a90925c..8a95a67 100644 --- a/Database/meth_dbsearch.php +++ b/Database/meth_dbsearch.php @@ -10,21 +10,15 @@ require_once(dirname( __FILE__ )."/dbmain.php"); // Extension de cette classe avec dbmain class DbSearch extends DbMain { - // Récupérer toutes les infos de la table userAccount - final public function search_all() { - $reqGetAll = "SELECT * FROM ".$this->tableUserAccount; - $data = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); - return $data; - } // Récupération des infos d'un compte par son id - final public function search_user_by_id($id) { + final public function get_user_account_by_id($id) { $reqSearchUser = "SELECT userId, email, inscriptionDate, isClient, isPro, isAdmin FROM ".$this->tableUserAccount." WHERE userId = ?"; $data = $this->exec_cmd($reqSearchUser, array($id))->fetch(PDO::FETCH_ASSOC); return $data; } - + // Récupération des infos d'un utilisateur par son id final public function get_user_info_by_id($id) { $reqGetUserInfo = "SELECT lastname, firstname, job, degree, @@ -35,9 +29,10 @@ class DbSearch extends DbMain { return $data; } - // Récupération des infos d'un consultant par son nom - final public function search_consultant_by_name($research) { - $reqSearchConsultant = "SELECT userId, lastname, firstname, job, capability FROM ".$this->tableUserInfo." + // Récupération des infos d'un pro par son nom + final public function get_pro_info_by_lastname($research) { + $reqSearchConsultant = "SELECT ".$this->tableUserInfo.".userId, lastname, firstname, job, capability + FROM ".$this->tableUserInfo." INNER JOIN ".$this->tableUserAccount." ON ".$this->tableUserInfo.".userId = ".$this->tableUserAccount.".userId WHERE isPro = '1' AND lastname LIKE CONCAT('%', ?, '%')"; @@ -46,7 +41,7 @@ class DbSearch extends DbMain { } // Récupération des notes d'un consultant par son nom - final public function get_consultant_note_by_name($name) { + final public function get_pro_note_by_lastname($name) { $reqCountMission = "SELECT note FROM ".$this->tableMission." INNER JOIN ".$this->tableUserInfo." ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId @@ -55,24 +50,5 @@ class DbSearch extends DbMain { return $data; } - // Récupérations des missions d'un consultant par son id - final public function get_all_mission_by_id($id) { - $reqGetAllMission = "SELECT subject, note, review, lastname FROM ".$this->tableMission." - LEFT JOIN ".$this->tableUserInfo." - ON ".$this->tableMission.".missionId = ".$this->tableUserInfo.".userId - WHERE proId = ?"; - $data = $this->exec_cmd($reqGetAllMission, array($id))->fetchAll(PDO::FETCH_ASSOC); - return $data; - } - - // Compte le nombre de mission d'un consultant par son nom - final public function count_consultant_mission_by_name($name) { - $reqCountMission = "SELECT COUNT(*) FROM ".$this->tableMission." - INNER JOIN ".$this->tableUserInfo." - ON ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId - WHERE lastname = ?"; - $data = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); - return $data; - } } ?>
\ No newline at end of file diff --git a/Database/meth_dbuser.php b/Database/meth_dbuser.php index cba1683..c0afb8c 100644 --- a/Database/meth_dbuser.php +++ b/Database/meth_dbuser.php @@ -8,8 +8,13 @@ require_once(dirname( __FILE__ )."/dbmain.php"); // Extension de cette classe avec dbmain class DbUser extends DbMain { + + // **************************************************************************** + // Gestion d'un utilisateur + // **************************************************************************** + // Enregistrement d'un nouvel utilisateur - final public function add_user($email, $pass, $is_client, $is_pro, $is_admin) { + final public function user_register($email, $pass, $is_client, $is_pro, $is_admin) { // On vérifie si l'email existe deja dans la bdd $exist = $this->check_exist_email($email); // Si non @@ -38,28 +43,25 @@ class DbUser extends DbMain { } } - // Suppresion d'un utilisateur - final public function del_user($userId) { - // Préparation de la requète pour voir si l'utilisateur existe - $reqCheckExistId = "SELECT EXISTS(SELECT * FROM ".$this->tableUserAccount." WHERE userId = ?)"; - // Exécution de la requète - $data = $this->exec_cmd($reqCheckExistId, array($userId))->fetchAll(PDO::FETCH_NUM); - // Si il existe - if ($data[0][0]) { - // Préparation de la requète pour suppression - $reqDelUser = "DELETE FROM ".$this->tableUserAccount." WHERE userId = ?"; - // Exécution de la requète - $this->exec_cmd($reqDelUser, array($userId)); - // Retourne 1 pour réussite - return 1; - } else { - // Retourne 0 pour échec - return 0; + // Vérification de la combinaison email - pass pour authentification + final public function user_check_credential($email, $pass) { + // Préparation de la requète pour récupérer les infos ou l'email est présent + $reqCheckCredential = "SELECT userId, password + FROM ".$this->tableUserAccount." WHERE email = ? "; + // Chiffrement du mot de passe + $crypt = $this->crypt_pass($pass); + // Execution de la requète + $data = $this->exec_cmd($reqCheckCredential, array($email))->fetchAll(PDO::FETCH_ASSOC); + // Vérifiaction de correspondance email & pass + foreach ($data as $rows) { + if ($rows["password"] == $crypt) { + return $rows["userId"]; + } } } // Mise à jour des infos d'un utilisateur - final public function update_user_info($lastname, $firstname, $job, $degree, + final public function user_infos_update($lastname, $firstname, $job, $degree, $capability, $description, $phoneNumber, $adress, $zipCode, $city, $userId) { // Préparation de la requète pour mise à jour des infos @@ -76,50 +78,13 @@ class DbUser extends DbMain { ); } - // Enregistrement d'une mission - final public function register_mission($subject, $note, $review, $clientId, $proId) { - // Vérification de l'existance de l'id de consultant - $exist = $this->check_exist_pro($proId); - // Si il existe - if ($exist) { - // Préparation de la requète pour enregistrement de la mission - $reqAddMission = "INSERT INTO ".$this->tableMission." - (date, subject, note, review, clientId, proId) - VALUES (?, ?, ?, ?, ?, ?)"; - // Exécution de la requète - $this->exec_cmd($reqAddMission, - array(date("Y-m-d H:i:s"), $subject, - $note, $review, - $clientId, $proId - ) - ); - // Retourne 1 pour réussite - return 1; - } else { - // Retourne 0 pour échec - return 0; - } - } - // Vérification de la combinaison email - pass pour authentification - final public function check_credential($email, $pass) { - // Préparation de la requète pour récupérer les infos ou l'email est présent - $reqCheckCredential = "SELECT userId, password - FROM ".$this->tableUserAccount." WHERE email = ? "; - // Chiffrement du mot de passe - $crypt = $this->crypt_pass($pass); - // Execution de la requète - $data = $this->exec_cmd($reqCheckCredential, array($email))->fetchAll(PDO::FETCH_ASSOC); - // Vérifiaction de correspondance email & pass - foreach ($data as $rows) { - if ($rows["password"] == $crypt) { - return $rows["userId"]; - } - } - } + // **************************************************************************** + // Gestion du token-autologin + // **************************************************************************** // Vérification de la combinaison email - jeton d'auto-login pour authentification - final public function check_token_autologin($email, $token) { + final public function autologin_token_check($email, $token) { // Préparation de la requète pour récupérer les infos ou l'email est présent $reqCheckToken = "SELECT userId, tokenAutoLogin FROM ".$this->tableUserAccount." WHERE email = ?"; @@ -134,7 +99,7 @@ class DbUser extends DbMain { } // Mise à jour du jeton d'auto-login - final public function update_token_autologin($email, $token) { + final public function autologin_token_update($email, $token) { // Préparation de la requète pour mise à jour du jeton d'auto-connection $reqUpdateToken = "UPDATE ".$this->tableUserAccount." SET tokenAutoLogin = ? WHERE email = ?"; @@ -143,7 +108,7 @@ class DbUser extends DbMain { } // Supression du jeton d'auto-login - final public function delete_token_autologin($email) { + final public function autologin_token_delete($email) { // Préparation de la requète pour supression du jeton d'auto-connection $reqDeleteToken = "UPDATE ".$this->tableUserAccount." SET tokenAutoLogin = NULL WHERE email = ?"; |
