############################################################################ # # # Description: Ensemble de méthodes pour étendre dbmain # # afin de gérer l'administration du site # # # ############################################################################ # Import de dbmain from src.database import dbmain # Extension de cette classe avec dbmain class DbAdmin(dbmain.DbMain): # **************************************************************************** # GESTION DES UTILISATEURS DANS L'ADMIN # **************************************************************************** # Récupérer toutes les infos de la table userAccount def get_all_users_account(self): reqGetAll = """ SELECT * FROM """ + self.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" self.exec_cmd(reqGetAll) result = self.cur.fetchall() return result # https:#stackoverflow.com/questions/1361340/how-can-i-do-insert-if-not-exists-in-mysql # Suppresion d'un utilisateur def del_user_by_userid(self, 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 """ + self.TABLEUSERACCOUNT + """ WHERE userId = ? LIMIT 1 )""" # Exécution de la requète, fetchall pour avoir le résultat # https:#www.php.net/manual/fr/pdostatement.fetch.php # struct par défaut req et index (fetch_both) = arr([0] => arr("req" => BOOL, [0] => BOOL]) # PDO::FETCH_NUM : retourne un tableau indexé par le numéro de la colonne comme elle # est retourné dans votre jeu de résultat, commençant à 0 self.exec_cmd(reqCheckExistId, [userId]) reqResult = self.cur.fetchall() # Si il existe if (reqResult[0][0]): # Préparation de la requète pour suppression reqDelUser = """DELETE FROM """ + self.TABLEUSERACCOUNT + """ WHERE userId = ?""" # Exécution de la requète self.exec_cmd(reqDelUser, [userId]) # Retourne 1 pour réussite return 1 else: # Retourne 0 pour échec return 0 # **************************************************************************** # GESTION DES EMPLOIS DANS L'ADMIN # **************************************************************************** # Ajout d'une categorie def register_job_category(self, jobNameEn, jobNameFr): # Préparation et execution de la requète pour voir si la categorie existe en anglais reqCheckjobCategoryNameEn = """ SELECT EXISTS( SELECT 1 FROM """ + self.TABLEJOBCATEGORY + """ WHERE jobCategoryNameEn = ? LIMIT 1 )""" self.exec_cmd(reqCheckjobCategoryNameEn, [jobNameEn]) reqResultEn = self.cur.fetchall() # Si il n'existe pas en anglais if not 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 """ + self.TABLEJOBCATEGORY + """ WHERE jobCategoryNameFr = ? LIMIT 1 )""" self.exec_cmd(reqCheckjobCategoryNameFr, [jobNameFr]) reqResultFr = self.cur.fetchall() # Si il n'existe pas en Français non plus if not reqResultFr[0][0]: # Préparation de la requète pour l'ajout reqjobCategoryNameAdd = """ INSERT INTO """ + self.TABLEJOBCATEGORY + """ (jobCategoryNameEn, jobCategoryNameFr) VALUES (? ,?)""" # Exécution de la requète self.exec_cmd(reqjobCategoryNameAdd, [jobNameEn, jobNameFr]) # Retourne 1 pour réussite return 1 else: # Retourne 0 pour échec return 0 else: # Retourne 0 pour échec return 0 # Suppresion d'un utilisateur def del_job_category_by_jobid(self, jobId): # Préparation de la requète pour voir si l'utilisateur existe reqCheckExistId = """ SELECT EXISTS( SELECT 1 FROM """ + self.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 self.exec_cmd(reqCheckExistId, [jobId]) reqResult = self.cur.fetchall() # Si il existe if (reqResult[0][0]): # Préparation de la requète pour suppression reqDelJobCategory = """ DELETE FROM """ + self.TABLEJOBCATEGORY + """ WHERE jobCategoryId = ?""" # Exécution de la requète self.exec_cmd(reqDelJobCategory, [jobId]) # Retourne 1 pour réussite return 1 else: # Retourne 0 pour échec return 0 # **************************************************************************** # GESTION DES MISSIONS DANS L'ADMIN # **************************************************************************** # Suppresion d'une mission def del_mission_by_missionid(self, missionId): # Préparation de la requète pour voir si l'utilisateur existe reqCheckExistId = """ SELECT EXISTS( SELECT 1 FROM """ + self.TABLEMISSION + """ WHERE missionId = ? LIMIT 1 )""" # Exécution de la requète self.exec_cmd(reqCheckExistId, [missionId]) reqResult = self.cur.fetchall() # Si il existe if (reqResult[0][0]): # Préparation de la requète pour suppression reqDelMission = """ DELETE FROM """ + self.TABLEMISSION + """ WHERE missionId = ?""" # Exécution de la requète self.exec_cmd(reqDelMission, [missionId]) # Retourne 1 pour réussite return 1 else: # Retourne 0 pour échec return 0