diff options
Diffstat (limited to 'src/gui/windowMissions.py')
| -rw-r--r-- | src/gui/windowMissions.py | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/src/gui/windowMissions.py b/src/gui/windowMissions.py new file mode 100644 index 0000000..d6fe57b --- /dev/null +++ b/src/gui/windowMissions.py @@ -0,0 +1,153 @@ + +from PyQt5.QtWidgets import ( + QDialog, QGroupBox, QLabel, + QVBoxLayout, QHBoxLayout, + QPushButton, QMessageBox, + QLineEdit, QComboBox +) +from src.database.dbmission import DbMission + + +def review_mission(dial: object, dbmission: object, missionId: int) -> None: + dialReview = QDialog(parent=dial) + + lineNote = QHBoxLayout() + labNote = QLabel("Note: ") + cmbNote = QComboBox() + for i in range(6): + cmbNote.addItem(str(i), i) + lineNote.addWidget(labNote) + lineNote.addStretch() + lineNote.addWidget(cmbNote) + + lineReview = QHBoxLayout() + labReview = QLabel("Avis: ") + inpReview = QLineEdit() + lineReview.addWidget(labReview) + lineReview.addStretch() + lineReview.addWidget(inpReview) + + lineBtn = QHBoxLayout() + btnValider = QPushButton("Valider") + btnValider.clicked.connect( + lambda: + [dbmission.review_mission(missionId, inpReview.text(), cmbNote.currentData()), + dbmission.validate_mission_client_by_missionid(missionId), + QMessageBox.information( + dial, + "Mission", + "La mission a été validée" + ), + dialReview.close()] + ) + lineBtn.addStretch() + lineBtn.addWidget(btnValider) + lineBtn.addStretch() + + + layReview = QVBoxLayout() + layReview.addLayout(lineNote) + layReview.addLayout(lineReview) + layReview.addLayout(lineBtn) + + grpMain = QGroupBox("Donnez votre avis") + grpMain.setLayout(layReview) + layMain = QVBoxLayout() + layMain.addWidget(grpMain) + + dialReview.setLayout(layMain) + dialReview.show() + + +def validate_mission(mainWindow: object, dial: object, missionId: int, status: str) -> None: + dbmission: object = DbMission(mainWindow) + if status == "acceptedByPro": + dbmission.accept_mission_by_missionid(missionId) + QMessageBox.information( + dial, + "Mission", + "La mission a bien été acceptée" + ) + elif status == "validatedByPro": + dbmission.validate_mission_pro_by_missionid(missionId) + QMessageBox.information( + dial, + "Mission", + "La mission a été validée" + ) + elif status == "validatedByClient": + review_mission(dial, dbmission, missionId) + + dial.close() + + +def get_missions_status(mainWindow: object, status: str) -> list: + dbmission: object = DbMission(mainWindow) + if mainWindow.userStatus == "Pro": + missionsAll: list = dbmission.get_mission_by_proid(mainWindow.userId) + elif mainWindow.userStatus == "Client": + missionsAll: list = dbmission.get_mission_by_clientid(mainWindow.userId) + + if status == "pending": + missionsPending = [list(i) for i in missionsAll if i[5] == None] + return missionsPending + elif status == "ongoing": + missionsOngoing = [list(i) for i in missionsAll if i[5] != None and (i[6] == None or i[7] == None)] + return missionsOngoing + elif status == "completed": + missionsCompleted = [list(i) for i in missionsAll if (i[6] != None and i[7] != None)] + return missionsCompleted + + +def main(mainWindow: object, status: str) -> None: + missions: list = get_missions_status(mainWindow, status) + dial: object = QDialog(parent = mainWindow) + + linesMission: list = [] + for mission in missions: + line = QHBoxLayout() + labMission = QLabel(" - ".join([str(i) for i in mission[1:] if i != None])) + line.addWidget(labMission) + if status == "pending" and mainWindow.userStatus == "Pro": + btnValidate = QPushButton("Valider") + btnValidate.clicked.connect( + lambda checked, missionId=mission[0]: + validate_mission(mainWindow, dial, missionId, "acceptedByPro") + ) + line.addStretch() + line.addWidget(btnValidate) + elif status == "ongoing" and mainWindow.userStatus == "Pro" and mission[7] == None: + btnValidate = QPushButton("Valider") + btnValidate.clicked.connect( + lambda checked, missionId=mission[0]: + validate_mission(mainWindow, dial, missionId, "validatedByPro") + ) + line.addStretch() + line.addWidget(btnValidate) + elif status == "ongoing" and mainWindow.userStatus == "Client" and mission[6] == None: + btnValidate = QPushButton("Valider") + btnValidate.clicked.connect( + lambda checked, missionId=mission[0]: + validate_mission(mainWindow, dial, missionId, "validatedByClient") + ) + line.addStretch() + line.addWidget(btnValidate) + + linesMission.append(line) + + layMission = QVBoxLayout() + for i in linesMission: + layMission.addLayout(i) + + if status == "pending": + grpMain = QGroupBox("Missions en attente") + elif status == "ongoing": + grpMain = QGroupBox("Missions en cours") + elif status == "completed": + grpMain = QGroupBox("Missions terminées") + + grpMain.setLayout(layMission) + layMain = QVBoxLayout() + layMain.addWidget(grpMain) + dial.setLayout(layMain) + dial.show() |
