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