# ############################################################################ # # # # # Description: Ensemble de méthodes pour étendre dbmain afin # # # d'effectuer des recherches dans la bdd # # # # # ############################################################################ # Infos pour les "join": # https:#www.freecodecamp.org/news/sql-joins-tutorial/ # Import de dbmain from src.database import dbmain from datetime import datetime # Extension de cette classe avec dbmain class DbMission(dbmain.DbMain): # **************************************************************************** # ENREGISTREMENT ET VALIDATION DES MISSIONS # **************************************************************************** # Enregistrement d'une mission def register_mission(self, subject, clientId, proId, jobId): # Préparation de la requète pour enregistrement de la mission reqAddMission = """ INSERT INTO """ + self.TABLEMISSION + """ (date, subject, clientId, proId, jobCategoryId) VALUES (%s, %s, %s, %s, %s)""" # Exécution de la requète self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), subject, clientId, proId, jobId ] ) return 1 # Enregistrement d'une mission def accept_mission_by_missionid(self, missionId): # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE """ + self.TABLEMISSION + """ SET acceptedByPro = %s WHERE missionId = %s""" # Exécution de la requète self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], True) return 1 def validate_mission_pro_by_missionid(self, missionId): # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE """ + self.TABLEMISSION + """ SET validatedByPro = %s WHERE missionId = %s""" # Exécution de la requète self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], True) return 1 def validate_mission_client_by_missionid(self, missionId): # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE """ + self.TABLEMISSION + """ SET validatedByClient = %s WHERE missionId = %s""" # Exécution de la requète self.exec_cmd(reqAddMission, [datetime.now().strftime("%Y-%m-%d %H:%M:%S"), missionId], True) return 1 def review_mission(self, missionId: int, review: str, note: int) -> None: # Préparation de la requète pour enregistrement de la mission reqAddMission = """ UPDATE """ + self.TABLEMISSION + """ SET review = %s, note = %s WHERE missionId = %s""" # Exécution de la requète self.exec_cmd(reqAddMission, [review, note, missionId], True) # **************************************************************************** # RECUPERATION DES INFORMATIONS RELATIVES AUX MISSIONS # **************************************************************************** # Récupérations des missions d'un pro par son id def get_mission_by_proid(self, proId): reqGetMissionsProId = """ SELECT missionId, date, subject, note, review, acceptedByPro, validatedByClient, validatedByPro, jobCategoryId, proId, lastname FROM """ + self.TABLEMISSION + """ LEFT JOIN """ + self.TABLEUSERINFO + """ ON """ + self.TABLEMISSION + """.proId = """ + self.TABLEUSERINFO + """.userId WHERE proId = %s""" self.exec_cmd(reqGetMissionsProId, [proId]) result = self.cur.fetchall() return result # Récupérations des missions d'un client par son id def get_mission_by_clientid(self, clientId): reqGetMissionsClientId = """ SELECT missionId, date, subject, note, review, acceptedByPro, validatedByClient, validatedByPro, jobCategoryId, proId, lastname FROM """ + self.TABLEMISSION + """ LEFT JOIN """ + self.TABLEUSERINFO + """ ON """ + self.TABLEMISSION + """.proId = """ + self.TABLEUSERINFO + """.userId WHERE clientId = %s""" self.exec_cmd(reqGetMissionsClientId, [clientId]) result = self.cur.fetchall() return result # Récupérations des missions d'un client par son id def get_all_missions(self): reqGetAllMission = """ SELECT * FROM """ + self.TABLEMISSION self.exec_cmd(reqGetAllMission) result = self.cur.fetchall() return result # Compte le nombre de mission d'un consultant par son nom def count_pro_missions_by_proid(self, proId): reqCountMission = """ SELECT COUNT(*) FROM """ + self.TABLEMISSION + """ INNER JOIN """ + self.TABLEUSERINFO + """ ON """ + self.TABLEMISSION + """.proId = """ + self.TABLEUSERINFO + """.userId WHERE proId = %s""" self.exec_cmd(reqCountMission, [proId]) result = self.cur.fetchall() return result