summaryrefslogtreecommitdiff
path: root/src/gui/windowMissions.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/windowMissions.py')
-rw-r--r--src/gui/windowMissions.py153
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()