From c9d4c87b21f1050a780f5296961d24bd17c9cdc8 Mon Sep 17 00:00:00 2001 From: Debulois Date: Thu, 24 Mar 2022 19:30:30 +0100 Subject: Grosse mise à jour, principalement changement du système des missions et de "mes missions". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Anciennes_versions_de_l_exercice.zip | Bin 0 -> 1217591 bytes Database/dbmain.php | 17 +- Database/meth_dbadmin.php | 56 +++- Database/meth_dbmission.php | 147 ++++++++--- Database/meth_dbsearch.php | 104 ++++++-- Database/meth_dbuser.php | 90 ++++--- Documents_et_infos/Bdd_mysql/mld_bdd_original.png | Bin 41354 -> 0 bytes Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb | Bin 13705 -> 13489 bytes .../Bdd_mysql/mysql_alphajob.mwb.bak | Bin 13611 -> 13654 bytes Documents_et_infos/Bdd_mysql/mysql_alphajob.png | Bin 48598 -> 46231 bytes Documents_et_infos/Bdd_mysql/mysql_alphajob.sql | 1 - Statics/Css/main.css | 30 ++- Statics/Js/index.js | 22 +- Statics/Js/message.js | 4 +- Statics/Js/myMission.js | 11 + Views/Includes/en/message.php | 281 ++++++++++++++------- Views/Includes/en/table.php | 91 ++++--- Views/Includes/en/text.php | 38 +-- Views/Includes/fr/message.php | 281 ++++++++++++++------- Views/Includes/fr/table.php | 91 ++++--- Views/Includes/fr/text.php | 40 +-- Views/Includes/incl_form_admin.php | 26 +- Views/Includes/incl_form_mission.php | 89 ++++--- Views/Includes/incl_form_register.php | 6 +- Views/Includes/incl_form_userInfo.php | 12 +- Views/Includes/incl_global_message.php | 13 +- Views/Includes/incl_global_navbar.php | 35 +-- Views/Includes/incl_index_search.php | 129 ++++++---- Views/Includes/incl_index_slideshow.php | 16 +- Views/Includes/incl_table_myMission.php | 147 ++++++++++- Views/admin.php | 4 +- Views/message.php | 2 +- Views/mission.php | 8 +- Views/myMission.php | 10 +- Wrapper/Functions/func_admin.php | 18 +- Wrapper/Functions/func_info.php | 20 +- Wrapper/Functions/func_login.php | 10 +- Wrapper/Functions/func_logout.php | 4 +- Wrapper/Functions/func_mission.php | 40 ++- Wrapper/Functions/func_myMission.php | 47 ++++ Wrapper/Functions/func_register.php | 12 +- Wrapper/Functions/func_search.php | 42 +-- Wrapper/wrapper.php | 279 +++++++++++++------- index.php | 2 +- todo.txt | 6 +- 45 files changed, 1546 insertions(+), 735 deletions(-) create mode 100644 Anciennes_versions_de_l_exercice.zip delete mode 100644 Documents_et_infos/Bdd_mysql/mld_bdd_original.png create mode 100644 Statics/Js/myMission.js create mode 100644 Wrapper/Functions/func_myMission.php diff --git a/Anciennes_versions_de_l_exercice.zip b/Anciennes_versions_de_l_exercice.zip new file mode 100644 index 0000000..4f69087 Binary files /dev/null and b/Anciennes_versions_de_l_exercice.zip differ diff --git a/Database/dbmain.php b/Database/dbmain.php index 262c55a..1f1ac24 100644 --- a/Database/dbmain.php +++ b/Database/dbmain.php @@ -32,9 +32,7 @@ class DbMain { `password` VARCHAR(128) NOT NULL, `tokenAutoLogin` VARCHAR(128) NULL DEFAULT NULL, `inscriptionDate` TIMESTAMP NOT NULL, - `isClient` TINYINT(1) NOT NULL, - `isPro` TINYINT(1) NOT NULL, - `isAdmin` TINYINT(1) NOT NULL, + `userStatus` TINYINT(1) UNSIGNED NOT NULL, PRIMARY KEY (`userId`) ) ENGINE = InnoDB @@ -48,7 +46,6 @@ class DbMain { `adress` VARCHAR(128) NOT NULL, `zipCode` VARCHAR(6) NOT NULL, `city` VARCHAR(128) NOT NULL, - `job` VARCHAR(128) NULL DEFAULT NULL, `degree` VARCHAR(128) NULL DEFAULT NULL, `capability` TEXT NULL DEFAULT NULL, `description` TEXT NULL DEFAULT NULL, @@ -83,12 +80,12 @@ class DbMain { CONSTRAINT `fk_userJob_userId` FOREIGN KEY (`userId`) REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE NO ACTION + ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_userJob_jobCategoryId` FOREIGN KEY (`jobCategoryId`) REFERENCES `alphajob`.`jobCategory` (`jobCategoryId`) - ON DELETE NO ACTION + ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB @@ -99,7 +96,7 @@ class DbMain { `missionId` INT UNSIGNED NOT NULL AUTO_INCREMENT, `date` TIMESTAMP NOT NULL, `subject` VARCHAR(128) NULL DEFAULT NULL, - `note` INT UNSIGNED NULL DEFAULT NULL, + `note` TINYINT(1) UNSIGNED NULL DEFAULT NULL, `review` TEXT NULL DEFAULT NULL, `acceptedByPro` TIMESTAMP NULL DEFAULT NULL, `validatedByClient` TIMESTAMP NULL DEFAULT NULL, @@ -114,17 +111,17 @@ class DbMain { CONSTRAINT `fk_mission_clientId` FOREIGN KEY (`clientId`) REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE NO ACTION + ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_mission_proId` FOREIGN KEY (`proId`) REFERENCES `alphajob`.`userAccount` (`userId`) - ON DELETE NO ACTION + ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_mission_jobCategoryId` FOREIGN KEY (`jobCategoryId`) REFERENCES `alphajob`.`jobCategory` (`jobCategoryId`) - ON DELETE NO ACTION + ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB diff --git a/Database/meth_dbadmin.php b/Database/meth_dbadmin.php index 883063b..112bce1 100644 --- a/Database/meth_dbadmin.php +++ b/Database/meth_dbadmin.php @@ -11,7 +11,11 @@ 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; + $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" @@ -24,7 +28,14 @@ class DbAdmin extends DbMain { 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)"; + $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)) @@ -48,20 +59,36 @@ class DbAdmin extends DbMain { // 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)"; + $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)"; + $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) + $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 @@ -79,7 +106,14 @@ class DbAdmin extends DbMain { // 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)"; + $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 @@ -87,7 +121,11 @@ class DbAdmin extends DbMain { // Si il existe if ($reqResult[0][0]) { // Préparation de la requète pour suppression - $reqDelJobCategory = "DELETE FROM ".$this->tableJobCategory." WHERE jobCategoryId = ?"; + $reqDelJobCategory = " + DELETE FROM + ".$this->tableJobCategory." + WHERE + jobCategoryId = ?"; // Exécution de la requète $this->exec_cmd($reqDelJobCategory, array($jobCategoryId)); // Retourne 1 pour réussite diff --git a/Database/meth_dbmission.php b/Database/meth_dbmission.php index f39f0b6..92f8690 100644 --- a/Database/meth_dbmission.php +++ b/Database/meth_dbmission.php @@ -12,48 +12,125 @@ require_once(dirname( __FILE__ )."/dbmain.php"); 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; - } + final public function register_mission($subject, $clientId, $proId, $jobId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + INSERT INTO ".$this->tableMission." + (date, subject, clientId, proId, jobCategoryId) + VALUES + (?, ?, ?, ?, ?)"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $subject, $clientId, $proId, $jobId)); + return 1; + } + + // Enregistrement d'une mission + final public function accept_mission($missionId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + acceptedByPro = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); + return 1; + } + + final public function validate_mission_by_pro($missionId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + validatedByPro = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); + return 1; + } + + final public function validate_mission_by_client($missionId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + validatedByClient = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); + return 1; + } + + final public function review_mission($missionId, $review, $note) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + review = ?, note = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array($review, $note, $missionId)); + return 1; } // 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 = ?"; - $result = $this->exec_cmd($reqGetAllMission, array($id))->fetchAll(PDO::FETCH_ASSOC); + final public function get_mission_by_pro_id($proId) { + $reqGetAllMission = " + SELECT + missionId, date, subject, note, review, + acceptedByPro, validatedByClient, + validatedByPro, jobCategoryId, proId, lastname + FROM + ".$this->tableMission." + LEFT JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + proId = ?"; + $result = $this->exec_cmd($reqGetAllMission, array($proId))->fetchAll(PDO::FETCH_ASSOC); return $result; } - // 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 = ?"; - $result = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); + // Récupérations des missions d'un client par son id + final public function get_mission_by_client_id($clientId) { + $reqGetAllMission = " + SELECT + missionId, date, subject, note, review, + acceptedByPro, validatedByClient, + validatedByPro, jobCategoryId, lastname + FROM + ".$this->tableMission." + LEFT JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + clientId = ?"; + $result = $this->exec_cmd($reqGetAllMission, array($clientId))->fetchAll(PDO::FETCH_ASSOC); return $result; } + // Compte le nombre de mission d'un consultant par son nom + final public function count_pro_missions_by_id($proId) { + $reqCountMission = " + SELECT COUNT(*) FROM + ".$this->tableMission." + INNER JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + proId = ?"; + $result = $this->exec_cmd($reqCountMission, array($proId))->fetchAll(PDO::FETCH_NUM); + return $result; + } } \ No newline at end of file diff --git a/Database/meth_dbsearch.php b/Database/meth_dbsearch.php index 5104d15..7557583 100644 --- a/Database/meth_dbsearch.php +++ b/Database/meth_dbsearch.php @@ -13,58 +13,108 @@ class DbSearch extends DbMain { // Récupération des infos d'un compte par son id final public function get_user_account_by_id($id) { - $reqSearchUser = "SELECT userId, email, inscriptionDate, isClient, isPro, isAdmin - FROM ".$this->tableUserAccount." WHERE userId = ?"; + $reqSearchUser = " + SELECT + userId, email, inscriptionDate, userStatus + FROM + ".$this->tableUserAccount." + WHERE + userId = ?"; $result = $this->exec_cmd($reqSearchUser, array($id))->fetch(PDO::FETCH_ASSOC); return $result; } // 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, - capability, description, phoneNumber, - adress, zipCode, city - FROM ".$this->tableUserInfo." WHERE userId = ?"; + $reqGetUserInfo = " + SELECT + userId, lastname, firstname, degree, + capability, description, phoneNumber, + adress, zipCode, city + FROM + ".$this->tableUserInfo." + WHERE + userId = ?"; $result = $this->exec_cmd($reqGetUserInfo, array($id))->fetchAll(PDO::FETCH_ASSOC); return $result; } // 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('%', ?, '%')"; + $reqSearchConsultant = " + SELECT + ".$this->tableUserInfo.".userId, + lastname, firstname, capability + FROM + ".$this->tableUserInfo." + INNER JOIN + ".$this->tableUserAccount." + ON + ".$this->tableUserInfo.".userId = ".$this->tableUserAccount.".userId + WHERE + userStatus = '1' + AND + lastname LIKE CONCAT('%', ?, '%')"; $result = $this->exec_cmd($reqSearchConsultant, array($research))->fetchAll(PDO::FETCH_ASSOC); return $result; } // Récupération des emploies associés à un pro - final public function get_pro_job_category($id) { - $reqGetAll = "SELECT jobCategoryId FROM ".$this->tableUserJob." WHERE userId = ?"; - $result = $this->exec_cmd($reqGetAll, array($id))->fetchAll(PDO::FETCH_NUM); - $proJobs = []; - for ($i = 0; $i < count($result); $i++) { - array_push($proJobs, $result[$i][0]); - } - return $proJobs; + final public function get_pro_job_category($proId) { + $reqGetAll = " + SELECT + ".$this->tableUserJob.".jobCategoryId, + jobCategoryNameEn, jobCategoryNameFr + FROM + ".$this->tableUserJob." + INNER JOIN + ".$this->tableJobCategory." + ON + ".$this->tableUserJob.".jobCategoryId = ".$this->tableJobCategory.".jobCategoryId + WHERE + userId = ?"; + $result = $this->exec_cmd($reqGetAll, array($proId))->fetchAll(PDO::FETCH_ASSOC); + return $result; } // Récupération des notes d'un consultant par son nom - 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 - WHERE lastname = ?"; - $result = $this->exec_cmd($reqCountMission, array($name))->fetchAll(PDO::FETCH_ASSOC); + final public function get_pro_note_by_id($proId) { + $reqCountMission = " + SELECT + note + FROM + ".$this->tableMission." + INNER JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + proId = ?"; + $result = $this->exec_cmd($reqCountMission, array($proId))->fetchAll(PDO::FETCH_NUM); return $result; } // Récupérer toutes les infos de la table jobCategory final public function get_job_category_all() { - $reqGetAll = "SELECT * FROM ".$this->tableJobCategory; - $result = $this->exec_cmd($reqGetAll, array())->fetchAll(PDO::FETCH_ASSOC); + $reqGetAllJobs = " + SELECT + * + FROM + ".$this->tableJobCategory; + $result = $this->exec_cmd($reqGetAllJobs, array())->fetchAll(PDO::FETCH_ASSOC); + return $result; + } + + // Récupérer toutes les infos de la table jobCategory + final public function get_job_category_by_id($jobId) { + $reqGetJobinfo = " + SELECT + * + FROM + ".$this->tableJobCategory." + WHERE + jobCategoryId = ?"; + $result = $this->exec_cmd($reqGetJobinfo, array($jobId))->fetchAll(PDO::FETCH_ASSOC); return $result; } } diff --git a/Database/meth_dbuser.php b/Database/meth_dbuser.php index 1b62b46..ea5c66e 100644 --- a/Database/meth_dbuser.php +++ b/Database/meth_dbuser.php @@ -12,9 +12,8 @@ class DbUser extends DbMain { // **************************************************************************** // Gestion d'un utilisateur // **************************************************************************** - // Enregistrement d'un nouvel utilisateur - final public function user_register($email, $pass, $is_client, $is_pro, $is_admin) { + final public function user_register($email, $pass, $userStatus) { // On vérifie si l'email existe deja dans la bdd $exist = $this->check_exist_email($email); // Si non @@ -22,18 +21,18 @@ class DbUser extends DbMain { // Chiffrement du pass $crypt = $this->crypt_pass($pass); // Préparation de la requète - $reqAddUser = "INSERT INTO ".$this->tableUserAccount." - (email, password, inscriptionDate, isClient, isPro, isAdmin) + $reqAddUser = " + INSERT INTO + ".$this->tableUserAccount." + (email, password, inscriptionDate, userStatus) VALUES - (?, ?, ?, ?, ?, ?)"; + (?, ?, ?, ?)"; // Execution de la requète $this->exec_cmd($reqAddUser, array($email, $crypt, date("Y-m-d H:i:s"), - $is_client, - $is_pro, - $is_admin + $userStatus ) ); // Retourne 1 pour réussite @@ -47,8 +46,13 @@ class DbUser extends DbMain { // 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 = ? "; + $reqCheckCredential = " + SELECT + userId, password + FROM + ".$this->tableUserAccount." + WHERE + email = ? "; // Chiffrement du mot de passe $crypt = $this->crypt_pass($pass); // Execution de la requète @@ -67,24 +71,30 @@ class DbUser extends DbMain { // J'ai préféré faire deux requètes distinctes et ne pas utiliser des valeurs // passées par $POST ($key => $value) pour gérer les noms des colonnes // car je préfère les passer en "dur" dans mes requêtes (risque d'injection SQL?). - $reqAddInfoClient = "UPDATE ".$this->tableUserInfo." - SET - lastname = ?, firstname = ?, phoneNumber = ?, - adress = ?, zipCode = ?, city = ? - WHERE - userId = ?"; - $reqAddInfoPro = "UPDATE ".$this->tableUserInfo." - SET - lastname = ?, firstname = ?, phoneNumber = ?, - adress = ?, zipCode = ?, city = ?, - degree = ?, capability = ?, description = ? - WHERE - userId = ?"; - $reqAddInfoProJobs = "INSERT INTO ".$this->tableUserJob." + $reqAddInfoClient = " + REPLACE INTO + ".$this->tableUserInfo." + (lastname, firstname, phoneNumber, + adress, zipCode, city, userId) + VALUES + (?, ?, ?, ?, ?, ?, ?)"; + $reqAddInfoPro = " + REPLACE INTO + ".$this->tableUserInfo." + (lastname, firstname, phoneNumber, + adress, zipCode, city, degree, + capability, description, userId) + VALUES + (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + $reqAddInfoProJobs = " + INSERT INTO + ".$this->tableUserJob." (jobCategoryId, userId) VALUES (?, ?)"; - $reqRemoveInfoProJobs = "DELETE FROM ".$this->tableUserJob." + $reqRemoveInfoProJobs = " + DELETE FROM + ".$this->tableUserJob." WHERE jobCategoryId = ? AND @@ -95,7 +105,7 @@ class DbUser extends DbMain { // Pour passer de dict a list -> array_values() $args = array_values($userInfos); array_push($args, $userId); - $this->exec_cmd($reqAddInfoClient, array_push($args, $userId)); + $this->exec_cmd($reqAddInfoClient, $args); } else { // TODO: Commenter // https://stackoverflow.com/questions/15986235/how-to-use-json-stringify-and-json-decode-properly @@ -118,12 +128,16 @@ class DbUser extends DbMain { // **************************************************************************** // Gestion du token-autologin // **************************************************************************** - // Vérification de la combinaison email - jeton d'auto-login pour authentification 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 = ?"; + $reqCheckToken = " + SELECT + userId, tokenAutoLogin + FROM + ".$this->tableUserAccount." + WHERE + email = ?"; // Exécution de la requète $result = $this->exec_cmd($reqCheckToken, array($email))->fetchAll(PDO::FETCH_ASSOC); // Vérifiaction de correspondance email & jeton d'auto-connection @@ -137,8 +151,13 @@ class DbUser extends DbMain { // Mise à jour du jeton d'auto-login 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 = ?"; + $reqUpdateToken = " + UPDATE + ".$this->tableUserAccount." + SET + tokenAutoLogin = ? + WHERE + email = ?"; // Execution de la requète $this->exec_cmd($reqUpdateToken, array($token, $email))->fetchAll(PDO::FETCH_ASSOC); } @@ -146,8 +165,13 @@ class DbUser extends DbMain { // Supression du jeton d'auto-login 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 = ?"; + $reqDeleteToken = " + UPDATE + ".$this->tableUserAccount." + SET + tokenAutoLogin = NULL + WHERE + email = ?"; // Execution de la requète $this->exec_cmd($reqDeleteToken, array($email))->fetchAll(PDO::FETCH_ASSOC); } diff --git a/Documents_et_infos/Bdd_mysql/mld_bdd_original.png b/Documents_et_infos/Bdd_mysql/mld_bdd_original.png deleted file mode 100644 index 228e677..0000000 Binary files a/Documents_et_infos/Bdd_mysql/mld_bdd_original.png and /dev/null differ diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb index 6d49548..570f173 100644 Binary files a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb and b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb differ diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak index 7a6e7a2..fe7c98e 100644 Binary files a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak and b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak differ diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.png b/Documents_et_infos/Bdd_mysql/mysql_alphajob.png index ea9e271..d28858b 100644 Binary files a/Documents_et_infos/Bdd_mysql/mysql_alphajob.png and b/Documents_et_infos/Bdd_mysql/mysql_alphajob.png differ diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql b/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql index dc0d445..1189648 100644 --- a/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.sql @@ -93,7 +93,6 @@ CREATE TABLE IF NOT EXISTS `exophp`.`userInfo` ( `adress` VARCHAR(128) NOT NULL, `zipCode` VARCHAR(6) NOT NULL, `city` VARCHAR(128) NOT NULL, - `job` VARCHAR(128) NULL DEFAULT NULL, `degree` VARCHAR(128) NULL DEFAULT NULL, `capability` TEXT NULL DEFAULT NULL, `description` TEXT NULL DEFAULT NULL, diff --git a/Statics/Css/main.css b/Statics/Css/main.css index c3fe421..12e84e0 100644 --- a/Statics/Css/main.css +++ b/Statics/Css/main.css @@ -105,9 +105,9 @@ sur mon instance SearX https://searx.debulois.fr transform: scale(1.3); } -.show { +.show_slide { /* Opacité de l'élément 0=transparent 1=opaque */ - opacity: 1 !important; + display: block !important; } /* FIN SLIDER */ @@ -130,6 +130,11 @@ sur mon instance SearX https://searx.debulois.fr /* FIN MESSAGE */ /* TABLEAU */ +.show_table { + /* Opacité de l'élément 0=transparent 1=opaque */ + display: table !important; +} + .star { /* !important prend le dessus sur tout type de déclaration précédente */ font-size: 20px !important; @@ -248,7 +253,7 @@ pre { /* FIN NAVBAR */ /* SLIDER */ -#slideshow { +#slides { width: 100%; height: 70vh; background-color: var(--navbarBg); @@ -264,7 +269,7 @@ pre { transition: background-image 0.3s linear; } -#slideshow p { +#slides p { position: absolute; display: inline-block; left: 0; @@ -274,7 +279,8 @@ pre { max-width: 80%; font-size: 48px; color: var(--slideText); - opacity: 0; + /* opacity: 0; */ + display: none; /* Aniamtion liée */ animation-name: textSlide; /* Durée de l'animation */ @@ -283,7 +289,7 @@ pre { animation-iteration-count: infinite; } -#slideshow p span { +#slides p span { font-family: akira; color: var(--mainSiteColor); /* Ombre du texte: positionX, positionY, Etendue, Fondue */ @@ -296,12 +302,12 @@ pre { /* Etapes de l'animation */ @keyframes textSlide { - 0% {top: 30%} + 0% {top: 29%} 35% {top: 18%} 100% {top: 18%} } -#slideIndicator { +#slideDots { position: absolute; /* Centrer un élément absolu, gauche moitié puis droite (moins moitié) */ left: 50%; @@ -309,11 +315,11 @@ pre { margin: 0 auto; bottom: 10%; } -#slideIndicator i { +#slideDots i { margin-right: 1em; } -#slideIndicator i:last-child { +#slideDots i:last-child { margin-right: none; } /* FIN SLIDER */ @@ -412,6 +418,10 @@ pre { margin: 1em auto; } +#myMission table { + display: none; +} + #myMission th, #admin th, #search th { diff --git a/Statics/Js/index.js b/Statics/Js/index.js index 1c89567..805b53e 100644 --- a/Statics/Js/index.js +++ b/Statics/Js/index.js @@ -4,8 +4,8 @@ // **************************************************************************** // Slideshow -function start_slideshow() { - let imageNumber = 1; +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters +function slideshow_start(slideNumber = 1) { let images = [ "/Medias/Images/slide0.jpg", "/Medias/Images/slide1.jpg", @@ -14,20 +14,20 @@ function start_slideshow() { setInterval(() => { // Changement del'image de fond de de la div - document.getElementById("slideshow").style.backgroundImage = `url("${images[imageNumber]}")`; + document.getElementById("slides").style.backgroundImage = `url("${images[slideNumber]}")`; // Untoggle les précedents // Utilisation de ternary, utilisation: condition ? Sivrai : Sifaux - document.getElementById(`textSlide${imageNumber !== 0 ? imageNumber - 1 : images.length - 1}`).classList.toggle("show"); - document.getElementById(`indicatorSlide${imageNumber !== 0 ? imageNumber - 1 : images.length - 1}`).classList.toggle("slideSelected"); + document.getElementById(`slide_${slideNumber !== 0 ? slideNumber - 1 : images.length - 1}`).classList.toggle("show_slide"); + document.getElementById(`slideDot_${slideNumber !== 0 ? slideNumber - 1 : images.length - 1}`).classList.toggle("slideSelected"); // Toggle le nouveau texte & selecteur - document.getElementById(`textSlide${imageNumber}`).classList.toggle("show"); - document.getElementById(`indicatorSlide${imageNumber}`).classList.toggle("slideSelected") + document.getElementById(`slide_${slideNumber}`).classList.toggle("show_slide"); + document.getElementById(`slideDot_${slideNumber}`).classList.toggle("slideSelected") // +1 sauf si fin - if(imageNumber < images.length - 1) { - imageNumber++; + if (slideNumber < images.length - 1) { + slideNumber++; } else { - imageNumber = 0; + slideNumber = 0; } } - ,5000); + , 3000); } diff --git a/Statics/Js/message.js b/Statics/Js/message.js index 55eff48..fa8e675 100644 --- a/Statics/Js/message.js +++ b/Statics/Js/message.js @@ -15,10 +15,10 @@ function start_timer(page) { let text = document.getElementById("redirect").innerHTML; setInterval(() => { if (seconds > 0) { - document.getElementById("redirect").innerHTML = `${text} ${seconds}.`; + document.getElementById("redirect").innerHTML = `${text} ${seconds} .`; seconds --; } else { - document.getElementById("redirect").innerHTML = `${text} ${seconds}.`; + document.getElementById("redirect").innerHTML = `${text} ${seconds} .`; redirect(page); } }, diff --git a/Statics/Js/myMission.js b/Statics/Js/myMission.js new file mode 100644 index 0000000..36c2648 --- /dev/null +++ b/Statics/Js/myMission.js @@ -0,0 +1,11 @@ + +//table id pendingTable, ongoingTable, completedTable +function show(tableId) { + let tables = document.getElementById("myMission").getElementsByTagName("table"); + tables[tableId].classList.add("show_table"); + for (i = 0; i < tables.length; i++) { + if (tables[i].id !== tableId) { + tables[i].classList.remove("show_table"); + } + } +} \ No newline at end of file diff --git a/Views/Includes/en/message.php b/Views/Includes/en/message.php index 50417a3..344b0b8 100644 --- a/Views/Includes/en/message.php +++ b/Views/Includes/en/message.php @@ -5,111 +5,196 @@ $success = "Success"; $error = "Error"; $redirect = "Redirecting in "; -$message = [ - // Delete - // 0 Message réussitee - ["success" => true, - "title" => "Delete an user.", - "info" => "User deleted !", - "timer" => true, - "toSrc" => true], - // 1 Message échec - ["success" => false, - "title" => "Delete an user.", - "info" => "No user was deleted.", - "timer" => true, - "toSrc" => true], +$messageText = [ // Informations de l'utilisateur - // 2 Message réussitee - ["success" => true, - "title" => "Update user information.", - "info" => "User informations updated !", - "timer" => true, - "toSrc" => true], + "infosUpdate" => [ + "success" => [ + "success" => true, + "title" => "Update user information.", + "info" => "User informations updated !", + "timer" => true, + "toSrc" => true + ] + ], // Login sans cookie - // 3 Message réussitee - ["success" => true, - "title" => "Login.", - "info" => "Successfully logged in!", - "timer" => true, - "toSrc" => false], - // 4 Message échec - ["success" => false, - "title" => "Login.", - "info" => "Error bad credentials.", - "timer" => true, - "toSrc" => true], + "login" => [ + "success" => [ + "success" => true, + "title" => "Login.", + "info" => "Successfully logged in!", + "timer" => true, + "toSrc" => false + ], + "fail" => [ + "success" => false, + "title" => "Login.", + "info" => "Error bad credentials.", + "timer" => true, + "toSrc" => true + ] + ], // Login avec cookie - // 5 Message réussitee - ["success" => true, - "title" => "", - "info" => "", - "timer" => false, - "toSrc" => false], - // 6 Message échec - ["success" => false, - "title" => "Login cookie.", - "info" => "Error with the cookie auto-login.", - "timer" => true, - "toSrc" => false], + "loginCookie" => [ + "success" => [ + "success" => true, + "title" => "", + "info" => "", + "timer" => false, + "toSrc" => false + ], + "fail" => [ + "success" => false, + "title" => "Login cookie.", + "info" => "Error with the cookie auto-login.", + "timer" => true, + "toSrc" => false + ] + ], // Log out - // 7 Message global - ["success" => true, - "title" => "Log out.", - "info" => "Successefuly logged out!", - "timer" => true, - "toSrc" => false], + "logout" => [ + "success" => [ + "success" => true, + "title" => "Log out.", + "info" => "Successefuly logged out!", + "timer" => true, + "toSrc" => false + ] + ], // Ajout mission - // 8 Message réussitee - ["success" => true, - "title" => "Register a mission.", - "info" => "Mission registered !", - "timer" => true, - "toSrc" => true], - // 9 Message échec - ["success" => false, - "title" => "Register a mission.", - "info" => "Error, probably wrong consultant ID.", - "timer" => true, - "toSrc" => true], + "missionRegister" => [ + "success" => [ + "success" => true, + "title" => "Register a mission.", + "info" => "Mission registered !", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Mandate a mission.", + "info" => "Error, please sign-in before.", + "timer" => true, + "toSrc" => true + ] + ], + // Acceptation d'une mission + "missionAccepted" => [ + "success" => [ + "success" => true, + "title" => "Mission info.", + "info" => "Mission accepted !", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Mandate infos.", + "info" => "Error, mission not accepted.", + "timer" => true, + "toSrc" => true + ] + ], + // Validation d'une mission + "missionValidated" => [ + "success" => [ + "success" => true, + "title" => "Mission info.", + "info" => "Mission completed!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Mandate info.", + "info" => "Error, mission not marked as completed.", + "timer" => true, + "toSrc" => true + ] + ], + // Ajout d'un commentaire & note + "missionReview" => [ + "success" => [ + "success" => true, + "title" => "Mission review.", + "info" => "Your review has been registered!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Mission review.", + "info" => "Error, your review has not been resgistered.", + "timer" => true, + "toSrc" => true + ] + ], // Ajout utilisateur - // 10 Message réussitee - ["success" => true, - "title" => "Register an user.", - "info" => "User successfully registered !", - "timer" => true, - "toSrc" => true], - // 11 Message échec - ["success" => false, - "title" => "Register an user.", - "info" => "Error, user not registered.", - "timer" => true, - "toSrc" => true], + "userAdd" => [ + "success" => [ + "success" => true, + "title" => "Register an user.", + "info" => "User successfully registered !", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Register an user.", + "info" => "Error, user not registered.", + "timer" => true, + "toSrc" => true + ] + ], + // Delete utilisateur + "adminDelUser" => [ + "success" => [ + "success" => true, + "title" => "Delete an user.", + "info" => "User deleted !", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Delete an user.", + "info" => "No user was deleted.", + "timer" => true, + "toSrc" => true + ] + ], // Ajout categorie - // 12 Message réussitee - ["success" => true, - "title" => "Add a job category.", - "info" => "Category added !", - "timer" => true, - "toSrc" => true], - // 13 Message échec - ["success" => false, - "title" => "Add a job category.", - "info" => "Category not added.", - "timer" => true, - "toSrc" => true], + "adminAddJob" => [ + "success" => [ + "success" => true, + "title" => "Add a job category.", + "info" => "Category added !", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Add a job category.", + "info" => "Category not added.", + "timer" => true, + "toSrc" => true + ] + ], // Suppression categorie - // 14 Message réussitee - ["success" => true, - "title" => "Deletion of a job category.", - "info" => "Category deleted !", - "timer" => true, - "toSrc" => true], - // 15 Message échec - ["success" => false, - "title" => "Deletion of a job category.", - "info" => "Category not deleted !", - "timer" => true, - "toSrc" => true], + "adminDelJob" => [ + "success" => [ + "success" => true, + "title" => "Deletion of a job category.", + "info" => "Category deleted !", + "timer" => true, + "toSrc" => true + ], + "delete" => [ + "success" => false, + "title" => "Deletion of a job category.", + "info" => "Category not deleted !", + "timer" => true, + "toSrc" => true + ] + ], ]; ?> \ No newline at end of file diff --git a/Views/Includes/en/table.php b/Views/Includes/en/table.php index 0b778af..93a0e86 100644 --- a/Views/Includes/en/table.php +++ b/Views/Includes/en/table.php @@ -4,43 +4,64 @@ // **************************************************************************** $header = [ // En-tête des colonnes du tableau Delete de l'admin. - // 0 - ["ID Number", - "Email", - "Crypted Password", - "Token for auto-login", - "Inscription date", - "Is user?", - "Is consultant?", - "Is admin?"], + "adminDel" => [ + "ID Number", + "Email", + "Crypted Password", + "Token for auto-login", + "Inscription date", + "User status" + ], // En-tête des colonnes du tableau Search de l'index. - // 1 - ["Last name", - "First name", - "Job", - "Capabilities", - "Number of missions", - "Note", - "Stars"], + "search" => [ + "Last name", + "First name", + "Job", + "Capabilities", + "Number of missions", + "Note", + "Stars" + ], // En-tête des colonnes du tableau More infos de l'index. - // 2 - ["Last name", - "First name", - "Job", - "Degree", - "Capabilities", - "Description", - "Phone number", - "Adress", - "Zip code", - "City"], + "moreInfos" => [ + "Last name", + "First name", + "Job", + "Degree", + "Capabilities", + "Description", + "Phone number", + "Adress", + "Zip code", + "City" + ], // En-tête des colonnes du tableau mes missions. - // 3 - ["Subject", - "Note", - "Review", - "Client Lastname"] + "pendingMissions" => [ + "Request date", + "Pro name", + "Job", + "Subject" + ], + // En-tête des colonnes du tableau mes missions. + "ongoingMissions" => [ + "Accpeted by pro date", + "Pro name", + "Job", + "Subject", + "Validated by client date", + "Validated by pro date" + ], + // En-tête des colonnes du tableau mes missions. + "completedMissions" => [ + "Request date", + "Started date", + "Validation by client date", + "Validation by pro date", + "Pro name", + "job", + "Subject", + "Review", + "Note" + ] ]; -$yes = "Yes"; -$no = "No"; ?> \ No newline at end of file diff --git a/Views/Includes/en/text.php b/Views/Includes/en/text.php index 73aa268..21e273b 100644 --- a/Views/Includes/en/text.php +++ b/Views/Includes/en/text.php @@ -40,14 +40,19 @@ $text = [ "submit" => "Sign-in" ], "incl_form_mission" => [ - "h2" => "Form to register a mission", - "subject" => "Subject", - "review" => "Review", - "consultantId" => "Consultant ID", - "submit" => "Register" + "h2" => "Form to register a mission", + "subject" => "Subject", + "review" => "Review", + "proId" => "Pro ID", + "submit" => "Register", + "jobsSel" => "Jobs" ], "incl_table_myMission" => [ - "h2" => "My missions" + "pendingMission" => "Pending missions", + "ongoingMission" => "Ongoing missions", + "completedMission" => "Completed missions", + "accept" => "Accept", + "validate" => "Validate" ], "incl_global_navbar" => [ "h2" => "AlphaJob", @@ -63,23 +68,24 @@ $text = [ "btnLang" => "Select" ], "incl_form_register" => [ - "h2" => "Form to sign-in", - "email" => "Email", - "password" => "Password", - "notice" => "For the purpose of the exam only:", - "isUser" => "Is user?", - "isConsultant" => "Is consultant?", - "isAdmin" => "Is admin?", - "submit" => "Sign-up" + "h2" => "Form to sign-in", + "email" => "Email", + "password" => "Password", + "notice" => "Admin is here for the purpose of the exam only:", + "isAdmin" => "Is admin?", + "isPro" => "Is pro?", + "isClient" => "Is client?", + "submit" => "Sign-up" ], "incl_index_search" => [ "h2" => "Search by lastname", "searchBar" => "Lastname", "submit" => "Search", - "moreInfo" => "More info" + "moreInfo" => "More info", + "mandate" => "Mandate" ], "incl_index_slideshow" => [ - "slide1" => "Find the right consultant for you.

For all your needs.

AlphaJob", + "slide1" => "Find the right proffessional for you.

For all your needs.

AlphaJob", "slide2" => "Only the bests proffessionals can register!

Quality of work guarantee!

AlphaJob", "slide3" => "Find the bests offers for your website today.

Discover our ready to use solutions.

AlphaJob" ] diff --git a/Views/Includes/fr/message.php b/Views/Includes/fr/message.php index dbf66f9..e9de43d 100644 --- a/Views/Includes/fr/message.php +++ b/Views/Includes/fr/message.php @@ -5,111 +5,196 @@ $success = "Réussite"; $error = "Erreur"; $redirect = "Redirection dans "; -$message = [ - // Delete - // 0 Message réussitee - ["success" => true, - "title" => "Supprimer un utilisateur.", - "info" => "Utilisateur Supprimé !", - "timer" => true, - "toSrc" => true], - // 1 Message échec - ["success" => false, - "title" => "Supprimer un utilisateur.", - "info" => "Aucun utilisateur supprimé.", - "timer" => true, - "toSrc" => true], +$messageText = [ // Informations de l'utilisateur - // 2 Message réussitee - ["success" => true, - "title" => "Modification des infos de l'utilisateur.", - "info" => "Informations mises à jour !", - "timer" => true, - "toSrc" => true], + "infosUpdate" => [ + "success" => [ + "success" => true, + "title" => "Mise à jour des informations.", + "info" => "Informations mise à jour!", + "timer" => true, + "toSrc" => true + ] + ], // Login sans cookie - // 3 Message réussitee - ["success" => true, - "title" => "Connection.", - "info" => "Connection réussie !", - "timer" => true, - "toSrc" => false], - // 4 Message échec - ["success" => false, - "title" => "Connection.", - "info" => "Erreur, mauvais email / mot de passe.", - "timer" => true, - "toSrc" => true], + "login" => [ + "success" => [ + "success" => true, + "title" => "Connection.", + "info" => "Connection réussie!", + "timer" => true, + "toSrc" => false + ], + "fail" => [ + "success" => false, + "title" => "Connection.", + "info" => "Erreur, connection échouée.", + "timer" => true, + "toSrc" => true + ] + ], // Login avec cookie - // 5 Message réussitee - ["success" => true, - "title" => "", - "info" => "", - "timer" => false, - "toSrc" => false], - // 6 Message échec - ["success" => false, - "title" => "Connection avec cookie.", - "info" => "Erreur lors de la connection automatique.", - "timer" => true, - "toSrc" => false], + "loginCookie" => [ + "success" => [ + "success" => true, + "title" => "", + "info" => "", + "timer" => false, + "toSrc" => false + ], + "fail" => [ + "success" => false, + "title" => "Connection avec auto-connection.", + "info" => "Erreur, connection échouée.", + "timer" => true, + "toSrc" => false + ] + ], // Log out - // 7 Message global - ["success" => true, - "title" => "Déconnection.", - "info" => "Vous êtes déconnecté!", - "timer" => true, - "toSrc" => false], + "logout" => [ + "success" => [ + "success" => true, + "title" => "Déconnection.", + "info" => "Vous êtes déconnecté!", + "timer" => true, + "toSrc" => false + ] + ], // Ajout mission - // 8 Message réussitee - ["success" => true, - "title" => "Enregistrement d'une mission.", - "info" => "Mission enregistrée !", - "timer" => true, - "toSrc" => true], - // 9 Message échec - ["success" => false, - "title" => "Enregistrement d'une mission.", - "info" => "Erreur, l'ID du consultant est probablement faux.", - "timer" => true, - "toSrc" => true], + "missionRegister" => [ + "success" => [ + "success" => true, + "title" => "Requête de mission.", + "info" => "La requete a été émise!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Requête de mission.", + "info" => "Erreur lors de la requête.", + "timer" => true, + "toSrc" => true + ] + ], + // Acceptation d'une mission + "missionAccepted" => [ + "success" => [ + "success" => true, + "title" => "Mission info.", + "info" => "Mission acceptée!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Mission info.", + "info" => "Erreur, mission non acceptée.", + "timer" => true, + "toSrc" => true + ] + ], + // Validation d'une mission + "missionValidated" => [ + "success" => [ + "success" => true, + "title" => "Mission info.", + "info" => "Mission completée!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Mandate info.", + "info" => "Erreur, mission non enregistrée comme completée.", + "timer" => true, + "toSrc" => true + ] + ], + // Ajout d'un commentaire & note + "missionReview" => [ + "success" => [ + "success" => true, + "title" => "Avis sur la mission.", + "info" => "Votre avis a bien été enregistré!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Avis sur la mission.", + "info" => "Erreur, votre avis n'a pas été enregistré.", + "timer" => true, + "toSrc" => true + ] + ], // Ajout utilisateur - // 10 Message réussitee - ["success" => true, - "title" => "Inscription", - "info" => "Utilisateur inscrit !", - "timer" => true, - "toSrc" => true], - // 11 Message échec - ["success" => false, - "title" => "Inscription.", - "info" => "Erreur, utilisateur non enregistré.", - "timer" => true, - "toSrc" => true], + "userAdd" => [ + "success" => [ + "success" => true, + "title" => "Enregistrement d'un utilisateur.", + "info" => "Utilisateur enregustré!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Enregistrement d'un utilisateur.", + "info" => "Erreur, l'utilisateur n'a pas été enregistré.", + "timer" => true, + "toSrc" => true + ] + ], + // Delete utilisateur + "adminDelete" => [ + "success" => [ + "success" => true, + "title" => "Suppression d'un utilisateur.", + "info" => "Utilisateur supprimé!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Suppression d'un utilisateur.", + "info" => "Erreur, l'utilisateur n'a pas été supprimé.", + "timer" => true, + "toSrc" => true + ] + ], // Ajout categorie - // 12 Message réussitee - ["success" => true, - "title" => "Ajout d'une categorie.", - "info" => "Categorie ajoutée !", - "timer" => true, - "toSrc" => true], - // 13 Message échec - ["success" => false, - "title" => "Ajout d'une categorie.", - "info" => "Categorie non ajoutée.", - "timer" => true, - "toSrc" => true], + "adminAddJob" => [ + "success" => [ + "success" => true, + "title" => "Ajout d'une catégorie d'emploi.", + "info" => "La catégorie a bien été ajoutée!", + "timer" => true, + "toSrc" => true + ], + "fail" => [ + "success" => false, + "title" => "Ajout d'une catégorie d'emploi.", + "info" => "Erreur, la catégorie n'a pas été ajoutée.", + "timer" => true, + "toSrc" => true + ] + ], // Suppression categorie - // 14 Message réussitee - ["success" => true, - "title" => "Suppression d'une categorie.", - "info" => "Categorie supprimée !", - "timer" => true, - "toSrc" => true], - // 15 Message échec - ["success" => false, - "title" => "Suppression d'une categorie.", - "info" => "Categorie non supprimée.", - "timer" => true, - "toSrc" => true], + "adminDelJob" => [ + "success" => [ + "success" => true, + "title" => "Suppression d'une catégorie.", + "info" => "Categorie supprimée!", + "timer" => true, + "toSrc" => true + ], + "delete" => [ + "success" => false, + "title" => "Suppression d'une catégorie.", + "info" => "Erreur, la catégorie n'a pas été supprimée.", + "timer" => true, + "toSrc" => true + ] + ], ]; ?> \ No newline at end of file diff --git a/Views/Includes/fr/table.php b/Views/Includes/fr/table.php index 2eeb389..90fb806 100644 --- a/Views/Includes/fr/table.php +++ b/Views/Includes/fr/table.php @@ -4,43 +4,64 @@ // **************************************************************************** $header = [ // En-tête des colonnes du tableau Delete de l'admin. - // 0 - ["Numéro ID", - "Email", - "Mot de passe chiffré", - "Jeton d'auto-connection", - "Date d'inscription", - "Est utilisateur?", - "Est consultant?", - "Est admin?"], + "adminDel" => [ + "Numéro ID", + "Email", + "Mot de passe chiffré", + "Jeton d'auto-connection", + "Date d'inscription", + "Status de l'utilisateur" + ], // En-tête des colonnes du tableau Search de l'index. - // 1 - ["Nom", - "Prénom", - "Emploi", - "Capacités", - "Nombre de mission", - "Note", - "Etoile"], + "search" => [ + "Nom", + "Prénom", + "Emploi", + "Capacités", + "Nombre de mission", + "Note", + "Etoile" + ], // En-tête des colonnes du tableau More infos de l'index. - // 2 - ["Nom", - "Prénom", - "Emploi", - "Diplôme", - "Capacités", - "Description", - "Numéro de téléphone", - "Adresse", - "Code postal", - "Ville"], + "moreInfos" => [ + "Nom", + "Prénom", + "Emploi", + "Diplôme", + "Capacités", + "Description", + "Numéro de téléphone", + "Adresse", + "Code postal", + "Ville" + ], // En-tête des colonnes du tableau mes missions. - // 3 - ["Sujet", - "Note", - "Commentaire", - "Nom du client"] + "pendingMissions" => [ + "Requete emise le", + "Nom du pro", + "Emploi", + "Sujet" + ], + // En-tête des colonnes du tableau mes missions. + "ongoingMissions" => [ + "Accpeté par le pro le", + "Nom du pro", + "Emploi", + "Sujet", + "Date de validation du client", + "Date de validation du pro" + ], + // En-tête des colonnes du tableau mes missions. + "completedMissions" => [ + "Requete emise le", + "Débuté le", + "Validé par le client le", + "Validé par le pro le", + "Nom du pro", + "Emploi", + "Sujet", + "Avis", + "Note" + ] ]; -$yes = "Oui"; -$no = "Non"; ?> \ No newline at end of file diff --git a/Views/Includes/fr/text.php b/Views/Includes/fr/text.php index dd6d655..85814e0 100644 --- a/Views/Includes/fr/text.php +++ b/Views/Includes/fr/text.php @@ -40,14 +40,19 @@ $text = [ "submit" => "Connection" ], "incl_form_mission" => [ - "h2" => "Formulaire pour enregistrer une mission", - "subject" => "Sujet", - "review" => "Commentaire", - "consultantId" => "ID du consultant", - "submit" => "Enregistrer" + "h2" => "Formulaire pour enregistrer une mission", + "subject" => "Sujet", + "review" => "Commentaire", + "proId" => "ID du pro", + "submit" => "Enregistrer", + "jobsSel" => "Emplois" ], "incl_table_myMission" => [ - "h2" => "Mes missions" + "pendingMission" => "Missions en attente", + "ongoingMission" => "Missions en cours", + "completedMission" => "Missions terminées", + "accept" => "Accepter", + "validate" => "Valider" ], "incl_global_navbar" => [ "h2" => "AlphaJob", @@ -63,23 +68,24 @@ $text = [ "btnLang" => "Sélectionner" ], "incl_form_register" => [ - "h2" => "Formulaire d'inscription", - "email" => "Email", - "password" => "Mot de passe", - "notice" => "Pour les besoins de l'examen seulement:", - "isUser" => "Est utilisateur?", - "isConsultant" => "Est consultant?", - "isAdmin" => "Est admin?", - "submit" => "S'inscrire" + "h2" => "Formulaire d'inscription", + "email" => "Email", + "password" => "Mot de passe", + "notice" => "Admin est présent pour les besoins de l'examen uniquement:", + "isClient" => "Est client?", + "isPro" => "Est pro?", + "isAdmin" => "Est admin?", + "submit" => "S'inscrire" ], "incl_index_search" => [ - "h2" => "Recherche de consultant par nom", + "h2" => "Recherche de pro par nom", "searchBar" => "Nom", "submit" => "Rechercher", - "moreInfo" => "Plus d'infos" + "moreInfo" => "Plus d'infos", + "mandate" => "Mandater" ], "incl_index_slideshow" => [ - "slide1" => "Trouvez le consultant idéal proche de chez vous.

Pour tous vos besoins.

AlphaJob", + "slide1" => "Trouvez le proffessionel idéal proche de chez vous.

Pour tous vos besoins.

AlphaJob", "slide2" => "Seuls les meilleurs professionnels sont acceptés.

Qualité guarantie.

AlphaJob", "slide3" => "Les meilleurs offres pour créer votre site Web.

Découvrez nos solutions clefs en main.

AlphaJob" ] diff --git a/Views/Includes/incl_form_admin.php b/Views/Includes/incl_form_admin.php index 7f7963d..6176bc4 100644 --- a/Views/Includes/incl_form_admin.php +++ b/Views/Includes/incl_form_admin.php @@ -64,7 +64,7 @@ echo(" ".PHP_EOL); // Affichage des en-tête de colonne. -foreach($header[0] as $header) { +foreach($header["adminDel"] as $header) { echo(" ".$header."".PHP_EOL); } echo(" ".PHP_EOL); @@ -73,13 +73,23 @@ foreach ($result as $rows) { echo(" ".PHP_EOL); foreach ($rows as $key => $value) { - // Traduction du résultat si reponse binaire en Oui / Non. - if (($key == "isClient" || $key == "isPro" || $key == "isAdmin") && $value == "1") { - echo("
".$yes."".PHP_EOL);
-        } elseif (($key == "isClient" || $key == "isPro" || $key == "isAdmin") && $value == "0") {
-            echo("                
".$no."".PHP_EOL);
-        } else {
-            echo("                
".$value."
".PHP_EOL); + switch ($key) { + case "userStatus": + switch ($value) { + case 0: + echo("
Admin
".PHP_EOL);
+                        break;
+                    case 1:
+                        echo("                
Pro
".PHP_EOL);
+                        break;
+                    case 2:
+                        echo("                
Client
".PHP_EOL);
+                        break;
+                }
+                break;
+            default:
+                echo("                
".$value."
".PHP_EOL); + break; } } echo(" ".PHP_EOL); diff --git a/Views/Includes/incl_form_mission.php b/Views/Includes/incl_form_mission.php index 4d6d311..345dca2 100644 --- a/Views/Includes/incl_form_mission.php +++ b/Views/Includes/incl_form_mission.php @@ -4,35 +4,62 @@ // **************************************************************************** // Import des textes en fonction de la langue définie dans la variable "lang" de la session. require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -echo('
-
-

'.$text[basename(__FILE__, ".php")]["h2"].'

-
- - - - - -
-
'.PHP_EOL); +// Import des méthodes de la base de donnée pour les recherches. +require_once(dirname( __FILE__ )."/../../Database/meth_dbsearch.php"); +if (isset($_SESSION["missionInitiate"]) + && count($_SESSION["missionInitiate"]) > 0 +) { + echo('
+
+

'.$text[basename(__FILE__, ".php")]["h2"].'

+
+ + + + +
+
'.PHP_EOL); + unset($_SESSION["missionInitiate"]); + +} elseif (isset($_SESSION["missionCompleted"]) + && count($_SESSION["missionCompleted"]) > 0 +) { + echo('
+
+

'.$text[basename(__FILE__, ".php")]["h2"].'

+
+ + '); + echo(' + +
+
'.PHP_EOL); + unset($_SESSION["missionCompleted"]); + +} else { + header("Location: /Views/myMission.php"); + die(); +} ?> \ No newline at end of file diff --git a/Views/Includes/incl_form_register.php b/Views/Includes/incl_form_register.php index bb046ce..b98365b 100644 --- a/Views/Includes/incl_form_register.php +++ b/Views/Includes/incl_form_register.php @@ -19,9 +19,9 @@ echo(' - - - + + + '.PHP_EOL); diff --git a/Views/Includes/incl_form_userInfo.php b/Views/Includes/incl_form_userInfo.php index 80d61ad..c79e687 100644 --- a/Views/Includes/incl_form_userInfo.php +++ b/Views/Includes/incl_form_userInfo.php @@ -54,21 +54,17 @@ echo(' '.PHP_EOL); // TODO : Commenter -if ($_SESSION["isPro"]) { +if ($_SESSION["userStatus"] == 1) { $allJobs = $dbsearch->get_job_category_all(); $proJobs = $dbsearch->get_pro_job_category($_SESSION["userId"]); - $dictJobs = []; - for ($i = 0; $i < count($allJobs); $i++) { - $dictJobs[$allJobs[$i]["jobCategoryId"]] = $allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])]; - } echo('