diff options
| author | Debulois <quentin@debulois.fr> | 2022-03-24 19:30:30 +0100 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-03-24 19:30:30 +0100 |
| commit | c9d4c87b21f1050a780f5296961d24bd17c9cdc8 (patch) | |
| tree | 38f8b221d21ec7642ee031c906599058a75e5fac | |
| parent | f66e40340d62b5c694093bc6d10f99337382d12a (diff) | |
Grosse mise à jour, principalement changement du système des missions et de "mes missions".
45 files changed, 1546 insertions, 735 deletions
diff --git a/Anciennes_versions_de_l_exercice.zip b/Anciennes_versions_de_l_exercice.zip Binary files differnew file mode 100644 index 0000000..4f69087 --- /dev/null +++ b/Anciennes_versions_de_l_exercice.zip 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 Binary files differdeleted file mode 100644 index 228e677..0000000 --- a/Documents_et_infos/Bdd_mysql/mld_bdd_original.png +++ /dev/null diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb Binary files differindex 6d49548..570f173 100644 --- a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak Binary files differindex 7a6e7a2..fe7c98e 100644 --- a/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.mwb.bak diff --git a/Documents_et_infos/Bdd_mysql/mysql_alphajob.png b/Documents_et_infos/Bdd_mysql/mysql_alphajob.png Binary files differindex ea9e271..d28858b 100644 --- a/Documents_et_infos/Bdd_mysql/mysql_alphajob.png +++ b/Documents_et_infos/Bdd_mysql/mysql_alphajob.png 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.<br><br>For all your needs.<br><br><span>AlphaJob</span>", + "slide1" => "Find the right proffessional for you.<br><br>For all your needs.<br><br><span>AlphaJob</span>", "slide2" => "Only the bests proffessionals can register!<br><br>Quality of work guarantee!<br><br><span>AlphaJob</span>", "slide3" => "Find the bests offers for your website today.<br><br>Discover our ready to use solutions.<br><br><span>AlphaJob</span>" ] 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.<br><br>Pour tous vos besoins.<br><br><span>AlphaJob</span>", + "slide1" => "Trouvez le proffessionel idéal proche de chez vous.<br><br>Pour tous vos besoins.<br><br><span>AlphaJob</span>", "slide2" => "Seuls les meilleurs professionnels sont acceptés.<br><br>Qualité guarantie.<br><br><span>AlphaJob</span>", "slide3" => "Les meilleurs offres pour créer votre site Web.<br><br>Découvrez nos solutions clefs en main.<br><br><span>AlphaJob</span>" ] 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(" <!-- Tableau des utilisateurs--> <!-- En-tête --> <tr>".PHP_EOL); // Affichage des en-tête de colonne. -foreach($header[0] as $header) { +foreach($header["adminDel"] as $header) { echo(" <th>".$header."</th>".PHP_EOL); } echo(" </tr>".PHP_EOL); @@ -73,13 +73,23 @@ foreach ($result as $rows) { echo(" <!-- Utilisateurs --> <tr>".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(" <td><pre>".$yes."<prepre></td>".PHP_EOL); - } elseif (($key == "isClient" || $key == "isPro" || $key == "isAdmin") && $value == "0") { - echo(" <td><pre>".$no."<prepre></td>".PHP_EOL); - } else { - echo(" <td><pre>".$value."</pre></td>".PHP_EOL); + switch ($key) { + case "userStatus": + switch ($value) { + case 0: + echo(" <td><pre>Admin<pre></td>".PHP_EOL); + break; + case 1: + echo(" <td><pre>Pro<pre></td>".PHP_EOL); + break; + case 2: + echo(" <td><pre>Client<pre></td>".PHP_EOL); + break; + } + break; + default: + echo(" <td><pre>".$value."</pre></td>".PHP_EOL); + break; } } echo(" </tr>".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(' <div class="separator"></div> - <div id="mission"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form id="missionForm" action="/../Wrapper/wrapper.php" method="post"> - <label> - <i class="fas fa-edit"></i> - <input type="text" name="subject" placeholder="'.$text[basename(__FILE__, ".php")]["subject"].'" maxlength="128" required> - </label> - <label class="flex-start"> - <i class="far fa-star"></i> - <select name="note" required> - <option value="" selected disabled hidden>Note</option> - <option value="5">5</option> - <option value="4">4</option> - <option value="3">3</option> - <option value="2">2</option> - <option value="1">1</option> - <option value="0">0</option> - </select> - </label> - <label> - <i class="far fa-comment-alt"></i> - <textarea name="review" placeholder="'.$text[basename(__FILE__, ".php")]["review"].'" required></textarea> - </label> - <label> - <i class="fas fa-user-cog"></i> - <input type="text" name="proId" placeholder="'.$text[basename(__FILE__, ".php")]["consultantId"].'" maxlength="10" required> - </label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form> - </div>'.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(' <div class="separator"></div> + <div id="mission"> + <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> + <form id="missionForm" action="/../Wrapper/wrapper.php" method="post"> + <label> + <i class="fas fa-edit"></i> + <input type="text" name="missionSubject" placeholder="'.$text[basename(__FILE__, ".php")]["subject"].'" maxlength="128" required> + </label> + <select name="missionJob"> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); + for ($i = 0; $i < count($_SESSION["missionInitiate"]["proJobs"]); $i++) { + echo(' <option value="'.$_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryId"].'">'.$_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); + } + echo(' </select> + <input type="hidden" name="missionProId" value="'.$_SESSION["missionInitiate"]["proId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> + </div>'.PHP_EOL); + unset($_SESSION["missionInitiate"]); + +} elseif (isset($_SESSION["missionCompleted"]) + && count($_SESSION["missionCompleted"]) > 0 +) { + echo('<div class="separator"></div> + <div id="mission"> + <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> + <form id="missionForm" action="/../Wrapper/wrapper.php" method="post"> + <label class="flex-start"> + <i class="far fa-star"></i> + <select name="note" required> + <option value="" selected disabled hidden>Note</option> + <option value="5">5</option> + <option value="4">4</option> + <option value="3">3</option> + <option value="2">2</option> + <option value="1">1</option> + <option value="0">0</option> + </select> + </label> + <label> + <i class="far fa-comment-alt"></i> + <textarea name="review" placeholder="'.$text[basename(__FILE__, ".php")]["review"].'" required></textarea> + </label>'); + echo(' <input type="hidden" name="missionCompletedId" value="'.$_SESSION["missionCompleted"]["missionId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> + </div>'.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(' <!-- Separateur --> <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" maxlength="128" required> </label> <label class="info flex-center">'.$text[basename(__FILE__, ".php")]["notice"].'</label> - <label for="is_user" class="flex-center"><input type="checkbox" name="is_client" id="is_user">'.$text[basename(__FILE__, ".php")]["isUser"].'</label> - <label for="is_consultant" class="flex-center"><input type="checkbox" name="is_pro" id="is_consultant">'.$text[basename(__FILE__, ".php")]["isConsultant"].'</label> - <label for="is_admin" class="flex-center"><input type="checkbox" name="is_admin" id="is_admin">'.$text[basename(__FILE__, ".php")]["isAdmin"].'</label> + <label for="isAdmin" class="flex-center"><input type="radio" id="isAdmin" name="userStatus" value="0">'.$text[basename(__FILE__, ".php")]["isAdmin"].'</label> + <label for="isPro" class="flex-center"><input type="radio" id="isPro" name="userStatus" value="1">'.$text[basename(__FILE__, ".php")]["isPro"].'</label> + <label for="isClient" class="flex-center"><input type="radio" id="isClient" name="userStatus" value="2">'.$text[basename(__FILE__, ".php")]["isClient"].'</label> <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> </form> </div>'.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(' <!-- Separateur --> <input type="text" name="city" id="city" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["city"].'" value="'.$info[0]["city"].'" required> </label>'.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(' <label> <i class="fas fa-wrench"></i> Add a job:'.PHP_EOL); // Select echo(' <select id="jobsSel"> <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); - foreach ($dictJobs as $jobId => $jobName) { - echo(' <option value="'.$jobId.'">'.$jobName.'</option>'.PHP_EOL); + for ($i = 0; $i < count($allJobs); $i++) { + echo(' <option value="'.$allJobs[$i]["jobCategoryId"].'">'.$allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); } echo(' </select> <button type="button" onclick="add()">'.$text[basename(__FILE__, ".php")]["jobsAdd"].'</button> @@ -77,7 +73,7 @@ if ($_SESSION["isPro"]) { echo(' Mes jobs <ul id="jobsList">'.PHP_EOL); for ($i = 0; $i < count($proJobs); $i++) { - echo(' <li>'.$dictJobs[$proJobs[$i]].'</li>'.PHP_EOL); + echo(' <li>'.$proJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</li>'.PHP_EOL); } echo(' </ul> <input type="hidden" name="jobs" id="jobs" value="">'.PHP_EOL); diff --git a/Views/Includes/incl_global_message.php b/Views/Includes/incl_global_message.php index b15d00e..304e906 100644 --- a/Views/Includes/incl_global_message.php +++ b/Views/Includes/incl_global_message.php @@ -4,18 +4,19 @@ // **************************************************************************** // Import des différents messages possibles. require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/message.php"); +$name = $_SESSION["message"][0]; +$status = $_SESSION["message"][1]; echo('<div class="separator"></div>'); -echo('<div id="message"><h2>'.$message[$_SESSION["messageNumber"]]["title"].'</h3>'); -if ($message[$_SESSION["messageNumber"]]["success"]) { +echo('<div id="message"><h2>'.$messageText[$name][$status]["title"].'</h3>'); +if ($messageText[$name][$status]["success"]) { echo('<h3 class="success">'.$success.'</h3>'); } else { echo('<h3 class="error">'.$error.'</h3>'); } -echo("<p>".$message[$_SESSION["messageNumber"]]["info"]."</p>"); +echo("<p>".$messageText[$name][$status]["info"]."</p>"); echo('<p id="redirect" class="info">'.$redirect.'</p></div>'); -echo('<script src="/Statics/Js/main.js"></script>'); echo('<script src="/Statics/Js/message.js"></script>'); -if ($message[$_SESSION["messageNumber"]]["toSrc"]) { +if ($messageText[$name][$status]["toSrc"]) { if ($_SESSION["src"] !== "index") { $dest = "Views/".$_SESSION["src"]; } else { @@ -24,7 +25,7 @@ if ($message[$_SESSION["messageNumber"]]["toSrc"]) { } else { $dest = "index"; } -if ($message[$_SESSION["messageNumber"]]["timer"]) { +if ($messageText[$name][$status]["timer"]) { echo('<script>start_timer("'.$dest.'");</script>'); } else { echo('<script>redirect("'.$dest.'")</script>'); diff --git a/Views/Includes/incl_global_navbar.php b/Views/Includes/incl_global_navbar.php index 1572fa6..664d6ff 100644 --- a/Views/Includes/incl_global_navbar.php +++ b/Views/Includes/incl_global_navbar.php @@ -14,26 +14,29 @@ echo(' <!-- Navbar --> <ul class="userManager"> <a href="/index.php#separator2"><li><i class="fas fa-search"></i> '.$text[basename(__FILE__, ".php")]["btnSearch"].'</li></a>'.PHP_EOL); // Affichage des éléments en fonction de si l'utilisateur est connecté ou non et de ses fonctions. -if (isset($_SESSION["loggedIn"]) +if (isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) && $_SESSION["loggedIn"] == "1" - ) { - if (isset($_SESSION["isClient"]) - && $_SESSION["isClient"] == "1" - ) { - echo(' <a href="/Views/mission.php"><li><i class="fas fa-plus-square"></i> '.$text[basename(__FILE__, ".php")]["btnMission"].'</li></a>'.PHP_EOL); +) { + // Switch -> https://www.php.net/manual/fr/control-structures.switch.php + // https://stackoverflow.com/questions/6330114/do-you-need-break-in-switch-when-return-is-used + switch ($_SESSION["userStatus"]) { + case 0: + $status = 'Admin'; + echo(' <a href="/Views/admin.php"><li><i class="fas fa-cog"></i> '.$text[basename(__FILE__, ".php")]["btnAdmin"].'</li></a>'.PHP_EOL); + break; + case 1: + $status = 'Pro'; + echo(' <a href="/Views/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); + break; + case 2: + $status = 'Client'; + echo(' <a href="/Views/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); + break; } - if (isset($_SESSION["isPro"]) - && $_SESSION["isPro"] == "1" - ) { - echo(' <a href="/Views/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); - } - if (isset($_SESSION["isAdmin"]) - && $_SESSION["isAdmin"] == "1" - ) { - echo(' <a href="/Views/admin.php"><li><i class="fas fa-cog"></i> '.$text[basename(__FILE__, ".php")]["btnAdmin"].'</li></a>'.PHP_EOL); - } echo(' <a href="/Views/userInfo.php"><li><i class="fas fa-user"></i> '.$text[basename(__FILE__, ".php")]["btnInfos"].'</li></a> <a href="/Views/logout.php"><li><i class="fas fa-sign-out-alt"></i> '.$text[basename(__FILE__, ".php")]["btnLogout"].'</li></a>'.PHP_EOL); + + echo('<li>'.$_SESSION["email"].'<br>'.$status.'</li>'.PHP_EOL); } else { echo(' <a href="/Views/login.php"><li><i class="fas fa-sign-in-alt"></i> '.$text[basename(__FILE__, ".php")]["btnLogin"].'</li></a> <a href="/Views/register.php"><li><i class="fas fa-user-plus"></i> '.$text[basename(__FILE__, ".php")]["btnRegister"].'</li></a>'.PHP_EOL); diff --git a/Views/Includes/incl_index_search.php b/Views/Includes/incl_index_search.php index a0e0be4..ac107b7 100644 --- a/Views/Includes/incl_index_search.php +++ b/Views/Includes/incl_index_search.php @@ -23,65 +23,96 @@ echo(' <!-- Form de recherche --> // Si l'index est chargé avec des données dans la variable "search" de la session, // c'est qu'une recherche à été effectuée, on affiche alors le contenu de cette recherche en tableau. if (isset($_SESSION["search"])) { - echo("<table><tr>"); + echo("<table>"); // Si la variable isResearch est vrai, c'est une rechreche. if ($_SESSION["search"]["isResearch"]) { - foreach ($header[1] as $header) { - echo("<th><pre>".$header."</pre></th>"); - } - // Sinon c'est un "Plus d'info". - } else { - foreach ($header[2] as $header) { - echo("<th><pre>".$header."</pre></th>"); - } - } - // On affiche le résultat de la recherche ou du "Plus d'info". - echo("</tr>"); - foreach ($_SESSION["search"]["result"] as $rows) { echo("<tr>"); - foreach ($rows as $key => $value) { - if ($key !== "id") { - if ($key !== "star") { - echo("<td><pre>".$value."</pre></td>"); - } else { - if ($value) { - echo('<td>'); - $missingStar = 5 - $value; - for ($i = 0; $i < $value; $i++) { - echo('<i class="fa fa-star star checked"></i>'); - } - if ($missingStar) { - for ($i = 0; $i < $missingStar; $i++) { - echo('<i class="fa fa-star star unchecked"></i>'); - } - } - } else { - echo('<td>N/A'); + for ($i = 0; $i < count($header["search"]); $i++) { + echo("<th><pre>".$header["search"][$i]."</pre></th>"); + } + echo("</tr>"); + foreach ($_SESSION["search"]["result"] as $result) { + echo("<tr>"); + echo("<td><pre>".$result["lastname"]."</pre></td>"); + echo("<td><pre>".$result["firstname"]."</pre></td>"); + // jobs + if (count($result["jobs"]) > 0) { + $jobsName = array(); + for ($i = 0; $i < count($result["jobs"]); $i++) { + array_push($jobsName, $result["jobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]); + } + echo("<td><pre>".join(", ", $jobsName)."</pre></td>"); + } else { + echo('<td>N/A</td>'); + } + echo("<td><pre>".$result["capability"]."</pre></td>"); + echo("<td><pre>".$result["numberOfMissions"]."</pre></td>"); + echo("<td><pre>".$result["note"]."</pre></td>"); + // I'm a star !! + if ($result["star"]) { + echo('<td>'); + $missingStar = 5 - $result["star"]; + for ($i = 0; $i < $result["star"]; $i++) { + echo('<i class="fa fa-star star checked"></i>'); + } + if ($missingStar) { + for ($i = 0; $i < $missingStar; $i++) { + echo('<i class="fa fa-star star unchecked"></i>'); } - echo("</td>"); } + echo("</td>"); + } else { + echo('<td>N/A</td>'); } - } - // Si c'est une recherche on ajoute le bouton plus d'info, - // pour plus d'info avec une recherche par ID. - if ($_SESSION["search"]["isResearch"]) { + // Si c'est une recherche on ajoute le bouton plus d'info, + // pour plus d'info avec une recherche par Id. echo('<td class="noBorder" > - <form action="/Wrapper/wrapper.php" method="post"> - <input type="hidden" name="searchInfo" value="'.$rows["userId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["moreInfo"].'"> - </form> - </td>'); + <form action="/Wrapper/wrapper.php" method="post"> + <input type="hidden" name="moreInfoProId" value="'.$result["userId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["moreInfo"].'"> + </form> + </td>'); + echo("</tr>"); } - echo("</tr>"); + echo("</table>"); + // Sinon c'est un "Plus d'info". + } else { + echo("<tr>"); + for ($i = 0; $i < count($header["moreInfos"]); $i++) { + echo("<th><pre>".$header["moreInfos"][$i]."</pre></th>"); + } + echo('</tr> + <tr> + <td><pre>'.$_SESSION["search"]["result"][0]["lastname"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["firstname"].'</pre></td>'); + // jobs + if (count($_SESSION["search"]["result"][0]["jobs"]) > 0) { + $jobsName = array(); + for ($i = 0; $i < count($_SESSION["search"]["result"][0]["jobs"]); $i++) { + array_push($jobsName, $_SESSION["search"]["result"][0]["jobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]); + } + echo("<td><pre>".join(", ", $jobsName)."</pre></td>"); + } else { + echo('<td>N/A</td>'); + } + echo(' <td><pre>'.$_SESSION["search"]["result"][0]["degree"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["capability"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["description"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["phoneNumber"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["adress"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["zipCode"].'</pre></td> + <td><pre>'.$_SESSION["search"]["result"][0]["city"].'</pre></td> + </tr> + </table> + <form action="/Wrapper/wrapper.php" method="post"> + <input type="hidden" name="mandateProId" value="'.$_SESSION["search"]["result"][0]["userId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["mandate"].'"> + </form>'); } - echo('<!-- Espace vide si le tableau est petit --> -</table> -<div class="spacer"></div>'.PHP_EOL); -} else { - echo(' <!-- Espace vide --> - <div class="spacer"></div>'.PHP_EOL); } -echo(' </div>'); +echo(' <!-- Espace vide si le tableau est petit --> + <div class="spacer"></div> + </div>'); // On supprime la variable de recherche si elle existe. unset($_SESSION["search"]); ?>
\ No newline at end of file diff --git a/Views/Includes/incl_index_slideshow.php b/Views/Includes/incl_index_slideshow.php index d632bbc..1a7790e 100644 --- a/Views/Includes/incl_index_slideshow.php +++ b/Views/Includes/incl_index_slideshow.php @@ -7,15 +7,15 @@ require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); echo(' <!-- Separateur --> <div id="separator1" class="separator"></div> <!-- Slideshow --> - <div id="slideshow"> - <p id="textSlide0" class="show">'.$text[basename(__FILE__, ".php")]["slide1"].'</p> - <p id="textSlide1">'.$text[basename(__FILE__, ".php")]["slide2"].'</p> - <p id="textSlide2">'.$text[basename(__FILE__, ".php")]["slide3"].'</p> + <div id="slides"> + <p id="slide_0" class="show_slide">'.$text[basename(__FILE__, ".php")]["slide1"].'</p> + <p id="slide_1">'.$text[basename(__FILE__, ".php")]["slide2"].'</p> + <p id="slide_2">'.$text[basename(__FILE__, ".php")]["slide3"].'</p> <!-- Indicateur de slide actuellement en cour --> - <div id="slideIndicator"> - <i id="indicatorSlide0" class="fas fa-circle slideSelected"></i> - <i id="indicatorSlide1" class="fas fa-circle"></i> - <i id="indicatorSlide2" class="fas fa-circle"></i> + <div id="slideDots"> + <i id="slideDot_0" class="fas fa-circle slideSelected"></i> + <i id="slideDot_1" class="fas fa-circle"></i> + <i id="slideDot_2" class="fas fa-circle"></i> </div> </div>'.PHP_EOL); ?>
\ No newline at end of file diff --git a/Views/Includes/incl_table_myMission.php b/Views/Includes/incl_table_myMission.php index b4c7e04..de071b1 100644 --- a/Views/Includes/incl_table_myMission.php +++ b/Views/Includes/incl_table_myMission.php @@ -7,33 +7,152 @@ require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); // Import des en-tête des tables. require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/table.php"); // Import des metodes de la base de donnée pour les recherches. +require_once(dirname(__FILE__)."/../../Database/meth_dbsearch.php"); require_once(dirname(__FILE__)."/../../Database/meth_dbmission.php"); // Instanciation de la bdd avec les méthodes de recherche. +$dbsearch = new DbSearch; $dbmission = new DbMission; + +// TODO: commenter // Recherches des missions avec l'id de l'utilisateur actuellement connecté. -$result = $dbmission->get_mission_by_id($_SESSION["userId"]); +switch ($_SESSION["userStatus"]) { + case 1: + $result = $dbmission->get_mission_by_pro_id($_SESSION["userId"]); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobCategoryId"] = $dbsearch->get_job_category_by_id($result[$i]["jobCategoryId"]); + } + break; + case 2: + $result = $dbmission->get_mission_by_client_id($_SESSION["userId"]); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobCategoryId"] = $dbsearch->get_job_category_by_id($result[$i]["jobCategoryId"]); + } + break; + default: + break; +} + +$missionStatus = [ + "pending" => [], + "ongoing" => [], + "completed" => [] +]; + +for ($i = 0; $i < count($result); $i++) { + if (!$result[$i]["acceptedByPro"] + ) { + array_push($missionStatus["pending"], $result[$i]); + } elseif (!$result[$i]["validatedByPro"] + || !$result[$i]["validatedByClient"] + ) { + array_push($missionStatus["ongoing"], $result[$i]); + } else { + array_push($missionStatus["completed"], $result[$i]); + } +} + echo(' <!-- Separateur --> <div class="separator"></div> <!-- Mes missions --> <div id="myMission"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <table> + <div id="missionButtons"> + <button onclick="show(\'pendingTable\')"><h2>'.$text[basename(__FILE__, ".php")]["pendingMission"].'</h2></button> + <button onclick="show(\'ongoingTable\')"><h2>'.$text[basename(__FILE__, ".php")]["ongoingMission"].'</h2></button> + <button onclick="show(\'completedTable\')"><h2>'.$text[basename(__FILE__, ".php")]["completedMission"].'</h2></button> + </div>'.PHP_EOL); + +// tableau 3 pending +echo(' <table id="pendingTable"> + <!-- En-tête --> + <tr>'.PHP_EOL); +foreach($header["pendingMissions"] as $columnHeader) { + echo(" <th>".$columnHeader."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +foreach ($missionStatus["pending"] as $rows) { + echo(' <!-- Missions --> + <tr> + <td><pre>'.$rows["date"].'</pre></td> + <td><pre>'.$rows["lastname"].'</pre></td> + <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> + <td><pre>'.$rows["subject"].'</pre></td>'); + if ($_SESSION["userId"] == $rows["proId"]) { + echo(' <td class="noBorder" > + <form action="/Wrapper/wrapper.php" method="post"> + <input type="hidden" name="acceptedMissionId" value="'.$rows["missionId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["accept"].'"> + </form> + </td>'); + } + echo(' </tr>'.PHP_EOL); +} +echo(' </table>'); + +// tableau 4 ongoing +echo(' <table id="ongoingTable"> <!-- En-tête --> <tr>'.PHP_EOL); -foreach($header[3] as $header) { - echo(" <th>".$header."</th>".PHP_EOL); +foreach($header["ongoingMissions"] as $columnHeader) { + echo(" <th>".$columnHeader."</th>".PHP_EOL); } echo(" </tr>".PHP_EOL); -foreach ($result as $rows) { - echo(" <!-- Missions --> - <tr>".PHP_EOL); - foreach ($rows as $value) { - echo(" <td><pre>".$value."</pre></td>".PHP_EOL); +foreach ($missionStatus["ongoing"] as $rows) { + echo(' <!-- Missions --> + <tr> + <td><pre>'.$rows["acceptedByPro"].'</pre></td> + <td><pre>'.$rows["lastname"].'</pre></td> + <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> + <td><pre>'.$rows["subject"].'</pre></td> + <td><pre>'.$rows["validatedByClient"].'</pre></td> + <td><pre>'.$rows["validatedByPro"].'</pre></td>'); + if (!$rows["validatedByClient"] && $_SESSION["userStatus"] == 2 + || (!$rows["validatedByPro"] && $_SESSION["userStatus"] == 1) + ) { + echo(' <td class="noBorder" > + <form action="/Wrapper/wrapper.php" method="post"> + <input type="hidden" name="validatedMissionId" value="'.$rows["missionId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["validate"].'"> + </form> + </td>'); } - echo(" </tr>".PHP_EOL); + echo(' </tr>'.PHP_EOL); +} +echo(' </table>'); + +// tableau 5 completed +echo(' <table id="completedTable"> + <!-- En-tête --> + <tr>'.PHP_EOL); +foreach($header["completedMissions"] as $columnHeader) { + echo(" <th>".$columnHeader."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +foreach ($missionStatus["completed"] as $rows) { + echo(' <!-- Missions --> + <tr> + <td><pre>'.$rows["date"].'</pre></td> + <td><pre>'.$rows["acceptedByPro"].'</pre></td> + <td><pre>'.$rows["validatedByClient"].'</pre></td> + <td><pre>'.$rows["validatedByPro"].'</pre></td> + <td><pre>'.$rows["lastname"].'</pre></td> + <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> + <td><pre>'.$rows["subject"].'</pre></td>'); + if ($rows["review"]) { + echo('<td><pre>'.$rows["review"].'</pre></td>'); + } else { + echo('<td><pre>N/A</pre></td>'); + } + if ($rows["note"]) { + echo('<td><pre>'.$rows["note"].'</pre></td>'); + } else { + echo('<td><pre>N/A</pre></td>'); + } + echo('</tr>'.PHP_EOL); } echo(' </table> - <!-- Espace vide si le tableau est petit --> - <div class="spacer"></div> - </div>'.PHP_EOL); +<!-- Espace vide si le tableau est petit --> +<div class="spacer"></div>'); + +// fin +echo(' </div>'.PHP_EOL); ?>
\ No newline at end of file diff --git a/Views/admin.php b/Views/admin.php index 6af1c7c..67398fd 100644 --- a/Views/admin.php +++ b/Views/admin.php @@ -5,9 +5,9 @@ // Démarrage de la session. session_start(); // Vérification si l'utilisateur est admin et connecté sinon: raise 404. -if (!isset($_SESSION["loggedIn"], $_SESSION["isAdmin"]) +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) || $_SESSION["loggedIn"] == false - || $_SESSION["isAdmin"] == false + || $_SESSION["userStatus"] != 0 ) { http_response_code(404); die(); diff --git a/Views/message.php b/Views/message.php index f2a93a5..b324f51 100644 --- a/Views/message.php +++ b/Views/message.php @@ -5,7 +5,7 @@ // Démarrage de la session. session_start(); // Si pas de message (variable messageNumber de la session): raise 404. -if (!isset($_SESSION["messageNumber"])) { +if (!isset($_SESSION["message"])) { http_response_code(404); die(); } diff --git a/Views/mission.php b/Views/mission.php index 4d84777..fde7289 100644 --- a/Views/mission.php +++ b/Views/mission.php @@ -5,11 +5,13 @@ // Démarrage de la session. session_start(); // Vérification si connecté et si a le statut utilisateur sinon: raise 404 -if (!isset($_SESSION["loggedIn"], $_SESSION["isClient"]) +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) || $_SESSION["loggedIn"] == false - || $_SESSION["isClient"] == false + || $_SESSION["userStatus"] != 2 ) { - http_response_code(404); + $messageNumber = 9; + $_SESSION["messageNumber"] = $messageNumber; + header("Location: /Views/message.php"); die(); } // Définition de la variable src de la session avec le nom du fichier. diff --git a/Views/myMission.php b/Views/myMission.php index 49d7107..2f575ba 100644 --- a/Views/myMission.php +++ b/Views/myMission.php @@ -5,9 +5,11 @@ // Démarrage de la session. session_start(); // Si n'est pas connecté ou n'est pas consultant: raise 404. -if (!isset($_SESSION["loggedIn"], $_SESSION["isPro"]) - || $_SESSION["loggedIn"] == false - || $_SESSION["isPro"] == false +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) + || $_SESSION["loggedIn"] == false + || ($_SESSION["userStatus"] != 1 + && $_SESSION["userStatus"] != 2 + ) ) { http_response_code(404); die(); @@ -30,5 +32,7 @@ $_SESSION["src"] = basename(__FILE__, ".php"); <?php require_once(dirname( __FILE__ )."/Includes/incl_table_myMission.php"); ?> <?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> <script src="/Statics/Js/main.js"></script> + <script src="/Statics/Js/myMission.js"></script> + <script>show('pendingTable')</script> </body> </html>
\ No newline at end of file diff --git a/Wrapper/Functions/func_admin.php b/Wrapper/Functions/func_admin.php index 05ad337..86a750f 100644 --- a/Wrapper/Functions/func_admin.php +++ b/Wrapper/Functions/func_admin.php @@ -7,12 +7,12 @@ function delete ($userId) { $deleted = $dbadmin->user_del($userId); // Sélection du message à affiché en fonction de réussite ou pas. if ($deleted) { - $messageNumber = 0; + $message = ["adminDelUser", "success"]; } else { - $messageNumber = 1; + $message = ["adminDelUser", "fail"]; } // Redirection vers message avec l'index du message à afficher. - $_SESSION["messageNumber"] = $messageNumber; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } @@ -26,12 +26,12 @@ function job_category_add($jobCategoryNameEn, $jobCategoryNameFr) { ); // Sélection du message à affiché en fonction de réussite ou pas. if ($added) { - $messageNumber = 12; + $message = ["adminAddJob", "success"]; } else { - $messageNumber = 13; + $message = ["adminAddJob", "fail"]; } // Redirection vers message avec l'index du message à afficher. - $_SESSION["messageNumber"] = $messageNumber; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } @@ -41,12 +41,12 @@ function job_category_del($jobCategoryId) { $deleted = $dbadmin->job_category_del($jobCategoryId); // Sélection du message à affiché en fonction de réussite ou pas. if ($deleted) { - $messageNumber = 14; + $message = ["adminDelJob", "success"]; } else { - $messageNumber = 15; + $message = ["adminDelJob", "fail"]; } // Redirection vers message avec l'index du message à afficher. - $_SESSION["messageNumber"] = $messageNumber; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } diff --git a/Wrapper/Functions/func_info.php b/Wrapper/Functions/func_info.php index b5013e2..ca97bc0 100644 --- a/Wrapper/Functions/func_info.php +++ b/Wrapper/Functions/func_info.php @@ -2,18 +2,30 @@ // **************************************************************************** // Description: Fonction de modifications des informations de l'utilisateur par ID // **************************************************************************** -function modify_user_info($userInfos, $userId, $isPro) { +function modify_user_info($userInfos, $userId, $userStatus) { $dbuser = new DbUser; $dbsearch = new DbSearch; + switch ($userStatus) { + case 1: + $isPro = true; + break; + default: + $isPro = false; + break; + } if ($isPro) { $userJobs = $dbsearch->get_pro_job_category($userId); - $dbuser->user_infos_update($userInfos, $userId, $isPro, $userJobs); + $userJobsId = []; + for ($i = 0; $i < count($userJobs); $i++) { + array_push($userJobsId, $userJobs[$i]["jobCategoryId"]); + } + $dbuser->user_infos_update($userInfos, $userId, $isPro, $userJobsId); } else { $dbuser->user_infos_update($userInfos, $userId, $isPro); } // Redirection vers message avec l'index du message à afficher. - $messageNumber = 2; - $_SESSION["messageNumber"] = $messageNumber; + $message = ["infosUpdate", "success"]; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } diff --git a/Wrapper/Functions/func_login.php b/Wrapper/Functions/func_login.php index 488f592..165c2cd 100644 --- a/Wrapper/Functions/func_login.php +++ b/Wrapper/Functions/func_login.php @@ -44,24 +44,24 @@ function login($cookie, $email = null, $pass = null, $remember = 0) { } // On sélectionne le bon message en fonction du type de connection. if (!$cookie) { - $messageNumber = 3; + $message = ["login", "success"]; } else { - $messageNumber = 5; + $message = ["loginCookie", "success"]; } } else { // Si la connection a échoué. if (!$cookie) { - $messageNumber = 4; + $message = ["login", "fail"]; // Si la connection à échoué par cookie. } else { // Suppression du cookie. unset($_COOKIE["autoLogin"]); setcookie("autoLogin", "", time() - 3600, "/"); - $messageNumber = 6; + $message = ["loginCookie", "fail"]; } } // On redirige vers message. - $_SESSION["messageNumber"] = $messageNumber; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } diff --git a/Wrapper/Functions/func_logout.php b/Wrapper/Functions/func_logout.php index 1a40235..975f90b 100644 --- a/Wrapper/Functions/func_logout.php +++ b/Wrapper/Functions/func_logout.php @@ -22,8 +22,8 @@ function logout() { $_SESSION["loggedIn"] = "0"; $_SESSION["lang"] = $lang; // Enfin on redirige avec le bon message. - $messageNumber = 7; - $_SESSION["messageNumber"] = $messageNumber; + $message = ["logout", "success"]; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } diff --git a/Wrapper/Functions/func_mission.php b/Wrapper/Functions/func_mission.php index 07879be..4162e73 100644 --- a/Wrapper/Functions/func_mission.php +++ b/Wrapper/Functions/func_mission.php @@ -2,22 +2,42 @@ // **************************************************************************** // Description: Fonction d'enregistrement d'une mission // **************************************************************************** -function register_mission($subject, $note, $review, $clientId, $proId) { +function mission_initiate($proId) { + $dbsearch = new DbSearch; + $_SESSION["missionInitiate"] = [ + "proId" => $proId, + "proJobs" => $dbsearch->get_pro_job_category($proId) + ]; + header("Location: /Views/mission.php"); + die(); +} + +function mission_register($subject, $clientId, $proId, $jobId) { $dbmission = new DbMission; - $registered = $dbmission->register_mission($subject, - $note, - $review, - $clientId, - $proId - ); + $registered = $dbmission->register_mission($subject, $clientId, $proId, $jobId); // Sélection du message à afficher en fonction de réussite ou pas. if ($registered) { - $messageNumber = 8; + $message = ["missionRegister", "success"]; + } else { + $message = ["missionRegister", "fail"]; + } + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Views/message.php"); + die(); +} + +function mission_review($missionId, $review, $note) { + $dbmission = new DbMission; + $reviewed = $dbmission->review_mission($missionId, $review, $note); + // Sélection du message à afficher en fonction de réussite ou pas. + if ($reviewed) { + $message = ["missionReview", "success"]; } else { - $messageNumber = 9; + $message = ["missionReview", "fail"]; } // Redirection vers message avec l'index du message à afficher. - $_SESSION["messageNumber"] = $messageNumber; + $_SESSION["message"] = $message; header("Location: /Views/message.php"); die(); } diff --git a/Wrapper/Functions/func_myMission.php b/Wrapper/Functions/func_myMission.php new file mode 100644 index 0000000..c461e5a --- /dev/null +++ b/Wrapper/Functions/func_myMission.php @@ -0,0 +1,47 @@ +<?php +// **************************************************************************** +// Description: Fonction de gesrtion de ses missions +// **************************************************************************** +function accept_mission($missionId) { + $dbmission = new DbMission; + $accepted = $dbmission->accept_mission($missionId); + // Sélection du message à afficher en fonction de réussite ou pas. + if ($accepted) { + $message = ["missionAccepted", "success"]; + } else { + $message = ["missionAccepted", "fail"]; + } + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Views/message.php"); + die(); +} + +function validate_mission($missionId, $userStatus) { + $dbmission = new DbMission; + switch ($userStatus) { + case 1: + $validated = $dbmission->validate_mission_by_pro($missionId); + break; + case 2: + $validated = $dbmission->validate_mission_by_client($missionId); + $_SESSION["missionCompleted"] = [ + "missionId" => $missionId + ]; + header("Location: /Views/mission.php"); + die(); + default: + break; + } + // Sélection du message à afficher en fonction de réussite ou pas. + if ($validated) { + $message = ["missionValidated", "success"]; + } else { + $message = ["missionValidated", "fail"]; + } + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Views/message.php"); + die(); +} +?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_register.php b/Wrapper/Functions/func_register.php index 8482752..e6757e2 100644 --- a/Wrapper/Functions/func_register.php +++ b/Wrapper/Functions/func_register.php @@ -2,22 +2,20 @@ // **************************************************************************** // Description: Fonction d'inscription d'un nouvel utilisateur // **************************************************************************** -function register($email, $password, $is_client, $is_pro, $is_admin) { +function register($email, $password, $userStatus) { $dbuser = new DbUser; $registered = $dbuser->user_register($email, $password, - $is_client, - $is_pro, - $is_admin + $userStatus ); // Sélection du message à afficher en fonction de la réussite de l'inscription. if ($registered) { - $messageNumber = 10; + $mission = ["userAdd", "success"]; } else { - $messageNumber = 11; + $mission = ["userAdd", "fail"]; } // Redirection vers message avec l'index du message à afficher. - $_SESSION["messageNumber"] = $messageNumber; + $_SESSION["mission"] = $mission; header("Location: /Views/message.php"); die(); } diff --git a/Wrapper/Functions/func_search.php b/Wrapper/Functions/func_search.php index d6cbfb2..6736a06 100644 --- a/Wrapper/Functions/func_search.php +++ b/Wrapper/Functions/func_search.php @@ -10,40 +10,50 @@ function search($request, $isResearch) { if ($isResearch) { $result = $dbsearch->get_pro_info_by_lastname($request); // Pour chaque utilisateur avec un nom qui "match". - foreach ($result as $key => $value) { + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobs"] = $dbsearch->get_pro_job_category($result[$i]["userId"]); // récupération du nombre de mission effectué. - $numberMission = $dbmission->count_pro_missions_by_lastname($value["lastname"]); - $result[$key]["numberOfMissions"] = $numberMission[0]["COUNT(*)"]; + $numberMission = $dbmission->count_pro_missions_by_id($result[$i]["userId"]); + $result[$i]["numberOfMissions"] = $numberMission[0][0]; // récupération des notes de l'utilisateur. - $allNotes = $dbsearch->get_pro_note_by_lastname($value["lastname"]); + $allNotes = $dbsearch->get_pro_note_by_id($result[$i]["userId"]); // Pour chaque note on la "push" (ajoute) dans une liste. $notes = array(); - foreach ($allNotes as $value) { - array_push($notes, $value["note"]); + for ($j = 0; $j < count($allNotes); $j++) { + if ($allNotes[$j][0]) { + array_push($notes, $allNotes[$j][0]); + } } // On fait la moyenne des notes, // et pour les étoiles on "coupe" tout ce qui est après la virgule en castant en "int". if ($notes) { $average = array_sum($notes) / count($notes); - $result[$key]["note"] = round($average, 2); - $result[$key]["star"] = (int)$average; + $result[$i]["note"] = round($average, 2); + $result[$i]["star"] = (int)$average; // Si il n'y a pas encore de note. } else { - $result[$key]["note"] = 0; - $result[$key]["star"] = 0; + $result[$i]["note"] = 0; + $result[$i]["star"] = 0; } } // Si c'est "plus d'info" et non une recherche. } else { $result = $dbsearch->get_user_info_by_id($request); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobs"] = $dbsearch->get_pro_job_category($request); + } } // Redirection vers l'index avec le "payload" (contenu) en fonction du type de recherche. - $search = array( - "result" => $result, - "isResearch" => true - ); - if (!$isResearch) { - $search["isResearch"] = false; + if ($isResearch) { + $search = array( + "result" => $result, + "isResearch" => true + ); + } else { + $search = array( + "result" => $result, + "isResearch" => false + ); } $_SESSION["search"] = $search; header("Location: /index.php#separator2"); diff --git a/Wrapper/wrapper.php b/Wrapper/wrapper.php index 13e0713..2645896 100644 --- a/Wrapper/wrapper.php +++ b/Wrapper/wrapper.php @@ -1,11 +1,11 @@ <?php -// **************************************************************************** -// Description: Le wrapper est le fichier qui fait le joint avec les -// fonctions PHP .Son role est de filtrer les données recus et de -// déclencher la bonne fonction. Selon la page qui l'appelle, j'ai -// voulu créer ce système car c'est une solution que j'ai imaginé -// pour rediréger tout mes formulaires vers une page unique. -// **************************************************************************** +// ################################################################################ +// # Description: Le wrapper est le fichier qui fait le joint avec les # +// # fonctions PHP .Son role est de filtrer les données recus et de # +// # déclencher la bonne fonction. Selon la page qui l'appelle, j'ai # +// # voulu créer ce système car c'est une solution que j'ai imaginé # +// # pour rediréger tout mes formulaires vers une page unique. # +// ################################################################################ // Import de toutes les fonctions et des méthodes pour gérer la BDD. require_once(dirname( __FILE__ )."/../Database/meth_dbuser.php"); @@ -21,6 +21,7 @@ require_once(dirname( __FILE__ )."/Functions/func_mission.php"); require_once(dirname( __FILE__ )."/Functions/func_register.php"); require_once(dirname( __FILE__ )."/Functions/func_language.php"); require_once(dirname( __FILE__ )."/Functions/func_sanitize.php"); +require_once(dirname( __FILE__ )."/Functions/func_myMission.php"); session_start(); // Si la session existe et que la variable src est bien présente. @@ -28,6 +29,9 @@ session_start(); // et on vérifie que la data nécessaire est bien présente. // Sinon: raise 404 if (isset($_SESSION["src"])) { +// **************************************************************************** +// SANITIZE +// **************************************************************************** // Avant toutes choses, on nettoie la data reçue. if (isset($_POST)) { foreach ($_POST as $key => $value) { @@ -37,8 +41,61 @@ if (isset($_SESSION["src"])) { } } - // Condition pour une connection - if ($_SESSION["src"] == "login" + +// **************************************************************************** +// LANGUE +// **************************************************************************** + // Condition pour le changement de la langue + if (isset($_POST["langSel"]) + && ($_POST["langSel"] == "en" + || $_POST["langSel"] == "fr") + ) { + set_language($_POST["langSel"]); + + +// **************************************************************************** +// RECHERCHE +// **************************************************************************** + // Condition pour une recherche +} elseif ($_SESSION["src"] == "index" + && (isset($_POST["search"]) && $_POST["search"] !== "") + || (isset($_POST["moreInfoProId"]) && $_POST["moreInfoProId"] !== "") + ) { + + if ($_POST["search"]) { + search($_POST["search"], 1); + + } elseif ($_POST["moreInfoProId"]) { + search($_POST["moreInfoProId"], 0); + + } else { + http_response_code(404); + die(); + } + + +// **************************************************************************** +// INSCRIPTION +// **************************************************************************** + // Condition pour une inscription + } elseif ($_SESSION["src"] == "register" + && isset($_POST["email"], + $_POST["password"], + $_POST["userStatus"] + ) + && $_POST["email"] !== "" + && $_POST["password"] !== "" + ) { + register($_POST["email"], + $_POST["password"], + $_POST["userStatus"] + ); + + +// **************************************************************************** +// CONNECTION +// **************************************************************************** + } elseif ($_SESSION["src"] == "login" && isset($_POST["email"], $_POST["password"]) && $_POST["email"] !== "" && $_POST["password"] !== "" @@ -50,7 +107,10 @@ if (isset($_SESSION["src"])) { } login(0, $_POST["email"], $_POST["password"], $_POST["rememberMe"]); - // Condition pour une connection auto + +// **************************************************************************** +// CONNECTION AVEC COOKIE +// **************************************************************************** } elseif ($_SESSION["src"] == "autoLogin" && isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] @@ -58,61 +118,38 @@ if (isset($_SESSION["src"])) { // Si connection par cookie, on le décode avant de le passer à la fonction. login(json_decode(base64_decode($_COOKIE["autoLogin"]))); - // Condition pour une déconnection + +// **************************************************************************** +// DECONNECTION +// **************************************************************************** } elseif ($_SESSION["src"] == "logout" && isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"] ) { logout(); - // Condition pour une inscription - } elseif ($_SESSION["src"] == "register" - && isset($_POST["email"], - $_POST["password"] - ) - && $_POST["email"] !== "" - && $_POST["password"] !== "" - ) { - if (isset($_POST["is_client"]) && $_POST["is_client"] == "on") { - $_POST["is_client"] = 1; - } else { - $_POST["is_client"] = 0; - } - if (isset($_POST["is_pro"]) && $_POST["is_pro"] == "on") { - $_POST["is_pro"] = 1; - } else { - $_POST["is_pro"] = 0; - } - if (isset($_POST["is_admin"]) && $_POST["is_admin"] == "on") { - $_POST["is_admin"] = 1; - } else { - $_POST["is_admin"] = 0; - } - register($_POST["email"], - $_POST["password"], - $_POST["is_client"], - $_POST["is_pro"], - $_POST["is_admin"] - ); +// **************************************************************************** +// MODIFICATION DES INFOS UTILISATEUR +// **************************************************************************** // Condition pour une modification des infos } elseif ($_SESSION["src"] == "userInfo" // Vérification des données si client - && (isset($_SESSION["loggedIn"], $_SESSION["userId"], $_SESSION["isClient"], + && (isset($_SESSION["loggedIn"], $_SESSION["userId"], $_SESSION["userStatus"], $_POST["lastname"], $_POST["firstname"], $_POST["phoneNumber"], $_POST["adress"], $_POST["zipCode"], $_POST["city"] ) - && $_SESSION["isClient"] + && $_SESSION["userStatus"] == 2 && $_POST["lastname"] !== "" && $_POST["firstname"] !== "" && $_POST["phoneNumber"] !== "" && $_POST["adress"] !== "" && $_POST["zipCode"] !== "" && $_POST["city"] !== "" // Ou si pro - || isset($_SESSION["loggedIn"], $_SESSION["userId"], $_SESSION["isPro"], + || isset($_SESSION["loggedIn"], $_SESSION["userId"], $_SESSION["userStatus"], $_POST["lastname"], $_POST["firstname"], $_POST["phoneNumber"], $_POST["adress"], $_POST["zipCode"], $_POST["city"], $_POST["jobs"], $_POST["degree"], $_POST["capability"], $_POST["description"] ) - && $_SESSION["isPro"] + && $_SESSION["userStatus"] == 1 && $_POST["lastname"] !== "" && $_POST["firstname"] !== "" && $_POST["phoneNumber"] !== "" && $_POST["adress"] !== "" && $_POST["zipCode"] !== "" && $_POST["city"] !== "" @@ -120,27 +157,114 @@ if (isset($_SESSION["src"])) { && $_POST["description"] !== "" ) ) { - modify_user_info($_POST, $_SESSION["userId"], $_SESSION["isPro"]); + modify_user_info($_POST, $_SESSION["userId"], $_SESSION["userStatus"]); + + +// **************************************************************************** +// MISSION - MANDATER +// **************************************************************************** + // mandater une mission + } elseif ($_SESSION["src"] == "index" + && (isset($_POST["mandateProId"]) && $_POST["mandateProId"] !== "") + ) { + mission_initiate($_POST["mandateProId"]); + +// **************************************************************************** +// MISSION - ENREGISTRER UNE REQUETE +// **************************************************************************** + } elseif ($_SESSION["src"] == "mission" + && isset($_SESSION["loggedIn"], $_SESSION["userStatus"], + $_POST["missionSubject"], $_POST["missionJob"], + $_POST["missionProId"] + ) + && $_SESSION["loggedIn"] + && $_SESSION["userStatus"] == 2 + && $_POST["missionSubject"] !== "" + && $_POST["missionJob"] !== "" + && $_POST["missionProId"] !== "" + ) { + mission_register($_POST["missionSubject"], + $_SESSION["userId"], + $_POST["missionProId"], + $_POST["missionJob"] + ); + + +// **************************************************************************** +// MISSION - VALIDER ET REVIEW +// **************************************************************************** + } elseif ($_SESSION["src"] == "mission" + && isset($_SESSION["loggedIn"], $_SESSION["userStatus"], + $_POST["missionCompletedId"], $_POST["review"], + $_POST["note"] + ) + && $_SESSION["loggedIn"] + && $_SESSION["userStatus"] == 2 + && $_POST["missionCompletedId"] !== "" + && $_POST["review"] !== "" + && $_POST["note"] !== "" + ) { + mission_review($_POST["missionCompletedId"], + $_POST["review"], + $_POST["note"] + ); + + +// **************************************************************************** +// GESTION DE SES MISSIONS +// **************************************************************************** + } elseif ($_SESSION["src"] == "myMission" + && isset($_SESSION["loggedIn"], + $_SESSION["userStatus"], + ) + && ($_SESSION["userStatus"] == 1 + || $_SESSION["userStatus"] == 2 + ) + ) { + if (isset($_POST["acceptedMissionId"]) + && $_POST["acceptedMissionId"] !== "" + ) { + accept_mission($_POST["acceptedMissionId"]); + + } elseif (isset($_POST["validatedMissionId"], $_SESSION["userStatus"]) + && $_POST["validatedMissionId"] !== "" + && ($_SESSION["userStatus"] == 1 + ||$_SESSION["userStatus"] == 2 + ) + ) { + validate_mission($_POST["validatedMissionId"], $_SESSION["userStatus"]); + + } else { + http_response_code(404); + die(); + } + + +// **************************************************************************** +// ADMINISTRATION +// **************************************************************************** // Condition pour l'administration du site } elseif ($_SESSION["src"] == "admin" && isset($_SESSION["loggedIn"], - $_SESSION["isAdmin"], + $_SESSION["userStatus"], ) && $_SESSION["loggedIn"] - && $_SESSION["isAdmin"] + && $_SESSION["userStatus"] == 0 && (isset($_POST["userId"]) - || isset($_POST["addCategoryNameEn"], - $_POST["addCategoryNameFr"] - ) - || isset($_POST["delCategoryId"]) - ) + || isset($_POST["addCategoryNameEn"], + $_POST["addCategoryNameFr"] + ) + || isset($_POST["delCategoryId"]) + ) ) { + // Suppression d'un utilisateur if (isset($_POST["userId"]) - && $_POST["userId"] !== "" + && $_POST["userId"] !== "" ) { delete($_POST["userId"]); + // Ajout d'un catégorie d'emploi } elseif (isset($_POST["addCategoryNameEn"]) && isset($_POST["addCategoryNameFr"]) @@ -148,56 +272,33 @@ if (isset($_SESSION["src"])) { && $_POST["addCategoryNameFr"] !== "" ) { job_category_add($_POST["addCategoryNameEn"], $_POST["addCategoryNameFr"]); + // Suppression d'une categorie d'emploi - }elseif (isset($_POST["delCategoryId"]) - && $_POST["delCategoryId"] !== "" + } elseif (isset($_POST["delCategoryId"]) + && $_POST["delCategoryId"] !== "" ) { job_category_del($_POST["delCategoryId"]); - } - // Condition pour un enregistrement d'une mission - } elseif ($_SESSION["src"] == "mission" - && isset($_SESSION["loggedIn"], $_SESSION["isClient"], - $_POST["subject"], $_POST["note"], - $_POST["review"], $_POST["proId"] - ) - && $_SESSION["loggedIn"] - && $_SESSION["isClient"] - && $_POST["subject"] !== "" - && $_POST["note"] !== "" - && $_POST["review"] !== "" - && $_POST["proId"] !== "" - ) { - register_mission($_POST["subject"], - $_POST["note"], - $_POST["review"], - $_SESSION["userId"], - $_POST["proId"] - ); - - // Condition pour une recherche - } elseif ($_SESSION["src"] == "index" - && (isset($_POST["search"]) && $_POST["search"] !== "") - || (isset($_POST["searchInfo"]) && $_POST["searchInfo"] !== "") - ) { - if (isset($_POST["search"])) { - search($_POST["search"], true); + // sinon } else { - search($_POST["searchInfo"], false); + http_response_code(404); + die(); } - // Condition pour le changement de la langue - } elseif (isset($_SESSION["src"], $_POST["langSel"]) - && ($_POST["langSel"] == "en" || $_POST["langSel"] == "fr") - ) { - set_language($_POST["langSel"]); +// **************************************************************************** +// SI ERREUR DANS $_SESSION ou $_POST +// **************************************************************************** // Enfin, si requete invalide } else { http_response_code(404); die(); } + +// **************************************************************************** +// SI "src" N'EST PAS DEFINI DANS $_SESSION +// **************************************************************************** } else { http_response_code(404); die(); @@ -46,6 +46,6 @@ if (isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false) { <script src="/Statics/Js/main.js"></script> <script src="/Statics/Js/index.js"></script> <!-- Activation du slider --> - <script>start_slideshow();</script> + <script>slideshow_start();</script> </body> </html>
\ No newline at end of file @@ -1,12 +1,12 @@ ################################################# -- Global +- Global front - Système de notification ? (5) - Revoir front Client & Pro - - Requète de mission pour un pro sur le moteur de recherche. (3) - - Page mes missions, passés, en cours, terminées. (3) + - Requète de mission pour un pro sur le moteur de recherche. (DONE) + - Page mes missions, passés, en cours, terminées. (DONE) - Revoir mes infos pour adapter aux clients & pros. (DONE) - Revoir front Admin |
