summaryrefslogtreecommitdiff
path: root/src/app/windowRecherche.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/windowRecherche.py')
-rw-r--r--src/app/windowRecherche.py150
1 files changed, 150 insertions, 0 deletions
diff --git a/src/app/windowRecherche.py b/src/app/windowRecherche.py
new file mode 100644
index 0000000..b2305e1
--- /dev/null
+++ b/src/app/windowRecherche.py
@@ -0,0 +1,150 @@
+
+# https://docs.python.org/3/faq/programming.html#why-do-lambdas-defined-in-a-loop-with-different-values-all-return-the-same-result
+# https://stackoverflow.com/questions/53751106/create-lambda-functions-in-a-loop-for-pyqt5-signals?noredirect=1
+
+from PyQt5.QtWidgets import (
+ QDialog, QVBoxLayout,
+ QHBoxLayout, QLabel,
+ QPushButton, QGroupBox,
+ QComboBox, QLineEdit,
+ QMessageBox
+)
+from src.database.dbsearch import DbSearch
+from src.database.dbmission import DbMission
+
+
+def core_mandater(mainWindow: object, dial: object, proId: int) -> None:
+ """"""
+ dbmission: object = DbMission(mainWindow)
+ dbsearch: object = DbSearch(mainWindow)
+ proJobs: list = dbsearch.get_pro_job_by_proid(proId)
+
+ dial: object = QDialog(dial)
+
+ labInpMandate: object = QLabel("Sujet de la mission:")
+ inpMandate: object = QLineEdit(maxLength=128)
+ layInpMandate: object = QHBoxLayout()
+ layInpMandate.addWidget(labInpMandate)
+ layInpMandate.addStretch()
+ layInpMandate.addWidget(inpMandate)
+
+ labCmbMandate: object = QLabel("Profession concernée:")
+ cmbMandate: object = QComboBox()
+ layCmbMandate: object = QHBoxLayout()
+ for i in proJobs:
+ cmbMandate.addItem(f"{i[2]}", i[0])
+ layCmbMandate.addWidget(labCmbMandate)
+ layCmbMandate.addStretch()
+ layCmbMandate.addWidget(cmbMandate)
+
+ btnMandate = QPushButton("Mandater")
+ btnMandate.clicked.connect(
+ lambda: [
+ dbmission.register_mission(
+ inpMandate.text(),
+ mainWindow.userId,
+ proId,
+ cmbMandate.currentData()
+ ),
+ QMessageBox.information(
+ dial,
+ "Mandater une mission",
+ "Votre mission à bien été mandatée"
+ ),
+ dial.close()
+ ]
+ )
+ layBtnMandate: object = QHBoxLayout()
+ layBtnMandate.addStretch()
+ layBtnMandate.addWidget(btnMandate)
+ layBtnMandate.addStretch()
+
+ layGrp: object = QVBoxLayout()
+ layGrp.addLayout(layInpMandate)
+ layGrp.addLayout(layCmbMandate)
+ layGrp.addLayout(layBtnMandate)
+
+ grpMandate: object = QGroupBox()
+ grpMandate.setLayout(layGrp)
+
+ layMain: object = QVBoxLayout()
+ layMain.addWidget(grpMandate)
+
+ dial.setLayout(layMain)
+ dial.show()
+
+
+def core_more_infos(mainWindow: object, dial: object, proId: int) -> None:
+ """"""
+ dial: object = QDialog(dial)
+ search: object = DbSearch(mainWindow)
+ resRecherche: list = search.get_user_info_by_userid(proId)[0][1:]
+ labelsText: list = [
+ "Nom",
+ "Prénom",
+ "Diplôme",
+ "Capacités",
+ "Description",
+ "Téléphone",
+ "Adresse",
+ "Code postale",
+ "Ville",
+ ]
+
+ layProInfo = QVBoxLayout()
+ for i in range(len(resRecherche)):
+ line: object = QHBoxLayout()
+ line.addWidget(QLabel(f"{labelsText[i]}: {resRecherche[i]}"))
+ layProInfo.addLayout(line)
+
+ if mainWindow.userStatus == "Client":
+ layBtnMandate: object = QHBoxLayout()
+ btnMandate: object = QPushButton("Mandater")
+ btnMandate.clicked.connect(
+ lambda:
+ core_mandater(mainWindow, dial, proId)
+ )
+ layBtnMandate.addStretch()
+ layBtnMandate.addWidget(btnMandate)
+ layBtnMandate.addStretch()
+ layProInfo.addLayout(layBtnMandate)
+
+ grpProInfo: object = QGroupBox()
+ grpProInfo.setLayout(layProInfo)
+
+ layMain: object = QVBoxLayout()
+ layMain.addWidget(grpProInfo)
+
+ dial.setLayout(layMain)
+ dial.show()
+
+
+def window_main(mainWindow: object, results: list) -> None:
+ """"""
+ dial: object = QDialog(parent=mainWindow)
+ dial.setWindowTitle("Recherche")
+ layoutsResult: list = []
+ for i in results:
+ layoutLine = QHBoxLayout()
+ color = results.index(i) % 2
+ if color:
+ colored = QLabel(i["text"])
+ colored.setStyleSheet("background-color: rgb(230,200,200); border-radius: 3px")
+ layoutLine.addWidget(colored)
+ else:
+ layoutLine.addWidget(QLabel(i["text"]))
+ btnInfos = QPushButton("Infos")
+ btnInfos.clicked.connect(
+ lambda checked, proId=i["id"]:
+ core_more_infos(mainWindow, dial, proId)
+ )
+ layoutLine.addStretch()
+ layoutLine.addWidget(btnInfos)
+ layoutsResult.append(layoutLine)
+
+ layoutMain = QVBoxLayout()
+ for layout in layoutsResult:
+ layoutMain.addLayout(layout)
+
+ dial.setLayout(layoutMain)
+ dial.show()