diff options
Diffstat (limited to 'src/app/windowMissions.py')
| -rw-r--r-- | src/app/windowMissions.py | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/src/app/windowMissions.py b/src/app/windowMissions.py new file mode 100644 index 0000000..5878c8a --- /dev/null +++ b/src/app/windowMissions.py @@ -0,0 +1,156 @@ + +from PyQt5.QtWidgets import ( + QDialog, QGroupBox, QLabel, + QVBoxLayout, QHBoxLayout, + QPushButton, QMessageBox, + QLineEdit, QComboBox +) +from src.database.dbmission import DbMission + + +def core_review(dial: object, dbmission: object, missionId: int) -> None: + """""" + dialReview: object = QDialog(parent=dial) + # + lineNote: object = QHBoxLayout() + labNote: object = QLabel("Note: ") + cmbNote: object = QComboBox() + for i in range(6): + cmbNote.addItem(str(i), i) + lineNote.addWidget(labNote) + lineNote.addStretch() + lineNote.addWidget(cmbNote) + # + lineReview: object = QHBoxLayout() + labReview: object = QLabel("Avis: ") + inpReview: object = QLineEdit(maxLength=256) + lineReview.addWidget(labReview) + lineReview.addStretch() + lineReview.addWidget(inpReview) + # + lineBtn: object = QHBoxLayout() + btnValider: object = 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: object = QVBoxLayout() + layReview.addLayout(lineNote) + layReview.addLayout(lineReview) + layReview.addLayout(lineBtn) + # + grpMain: object = QGroupBox("Donnez votre avis") + grpMain.setLayout(layReview) + layMain: object = QVBoxLayout() + layMain.addWidget(grpMain) + # + dialReview.setLayout(layMain) + dialReview.show() + + +def core_validate(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": + core_review(dial, dbmission, missionId) + + dial.close() + + +def core_get_missions_by_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 = [list(i) for i in missionsAll if i[5] == None] + return missionsPending + elif status == "ongoing": + missionsOngoing: list = [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 = [list(i) for i in missionsAll if (i[6] != None and i[7] != None)] + return missionsCompleted + + +def window_main(mainWindow: object, status: str) -> None: + """""" + dial: object = QDialog(parent=mainWindow) + missions: list = core_get_missions_by_status(mainWindow, status) + linesMission: list = [] + for mission in missions: + line: object = QHBoxLayout() + labMission: object = QLabel(" - ".join([str(i) for i in mission[1:] if i != None])) + line.addWidget(labMission) + if status == "pending" and mainWindow.userStatus == "Pro": + btnValidate: object = QPushButton("Valider") + btnValidate.clicked.connect( + lambda checked, missionId=mission[0]: + core_validate(mainWindow, dial, missionId, "acceptedByPro") + ) + line.addStretch() + line.addWidget(btnValidate) + elif status == "ongoing" and mainWindow.userStatus == "Pro" and mission[7] == None: + btnValidate: object = QPushButton("Valider") + btnValidate.clicked.connect( + lambda checked, missionId=mission[0]: + core_validate(mainWindow, dial, missionId, "validatedByPro") + ) + line.addStretch() + line.addWidget(btnValidate) + elif status == "ongoing" and mainWindow.userStatus == "Client" and mission[6] == None: + btnValidate: object = QPushButton("Valider") + btnValidate.clicked.connect( + lambda checked, missionId=mission[0]: + core_validate(mainWindow, dial, missionId, "validatedByClient") + ) + line.addStretch() + line.addWidget(btnValidate) + + linesMission.append(line) + + layMission: object = QVBoxLayout() + for i in linesMission: + layMission.addLayout(i) + + if status == "pending": + grpMain: object = QGroupBox("Missions en attente") + elif status == "ongoing": + grpMain: object = QGroupBox("Missions en cours") + elif status == "completed": + grpMain: object = QGroupBox("Missions terminées") + + grpMain.setLayout(layMission) + layMain: object = QVBoxLayout() + layMain.addWidget(grpMain) + dial.setLayout(layMain) + dial.show() |
