summaryrefslogtreecommitdiff
path: root/src/app/mainHome.py
blob: a366c661e49b43166ee6b126141d0575387e2edb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

from PyQt5.QtWidgets import (
    QGroupBox,   QPushButton,
    QComboBox,   QLineEdit,
    QHBoxLayout, QWidget,
    QVBoxLayout, QLabel,
    QMessageBox
)
from src.app import (
    mainLogin,  mainRegister,
    mainMenuBar, windowRecherche,
    mainLogout
)
from src.database.dbsearch import DbSearch


def core_search_id(mainWindow: object, jobId: int) -> None:
    """"""
    dbsearch:     object = DbSearch(mainWindow)
    resRecherche: list   = dbsearch.get_all_pro_by_jobid(jobId)
    if resRecherche:
        core_search_main(mainWindow, resRecherche)
    else:
        QMessageBox.information(
            mainWindow,
            "Résultat",
            "Aucun résultat."
        )


def core_search_name(mainWindow: object, name: str) -> None:
    """"""
    dbsearch:     object = DbSearch(mainWindow)
    resRecherche: tuple  = dbsearch.get_pro_info_by_lastname(name)
    if resRecherche:
        core_search_main(mainWindow, resRecherche)
    else:
        QMessageBox.information(
            mainWindow,
            "Résultat",
            "Aucun résultat."
        )


def core_search_main(mainWindow: object, resRecherche: tuple) -> None:
    """"""
    dbsearch: object = DbSearch(mainWindow)
    results:  list   = []
    for i in resRecherche:
        proInfo: dict = {}
        proInfo["id"] = i[0]
        resJobs = dbsearch.get_pro_job_by_proid(proInfo["id"])
        proInfo["text"] = list(i[1:])
        proInfo["text"].insert(2, ", ".join([j[2] for j in resJobs]))
        proInfo["text"] = " - ".join(proInfo["text"])
        results.append(proInfo)

    windowRecherche.window_main(mainWindow, results)


def window_main(mainWindow, reloadMenu = False) -> None:
    """"""
    if reloadMenu:
        mainMenuBar.menu_init(mainWindow)

    dbsearch: object = DbSearch(mainWindow)
    #
    if not mainWindow.userConnected:
        connState: object = QLabel("Non connecté.")
    else:
        connState: object = QLabel(
            f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}"
        )

    if not mainWindow.userConnected:
        btnConnexion: object = QPushButton("Connexion")
        btnConnexion.clicked.connect(lambda: mainLogin.window_main(mainWindow))
    else:
        btnDeconnexion: object = QPushButton("Déconnexion")
        btnDeconnexion.clicked.connect(lambda: [
            mainLogout.core_logout(mainWindow),
            window_main(mainWindow, True)
            ]
        )

    btnInscription: object = QPushButton("Inscription")
    btnInscription.clicked.connect(lambda: mainRegister.window_main(mainWindow))
    #
    layUser: object = QHBoxLayout()
    layUser.addStretch()
    layUser.addWidget(btnInscription)
    if not mainWindow.userConnected:
        layUser.addWidget(btnConnexion)
    else:
        layUser.addWidget(btnDeconnexion)

    grpUser: object = QGroupBox("Gestion de l'utilisateur")
    grpUser.setLayout(layUser)
    #
    labRechercheNom:   object = QLabel("Par nom")
    inputRechercheNom: object = QLineEdit(maxLength=128)
    btnRechercheNom:   object = QPushButton("Rechercher")
    btnRechercheNom.clicked.connect(
        lambda:
            core_search_name(
                mainWindow,
                inputRechercheNom.text()
            )
    )
    labRechercheCat: object = QLabel("Par emploi")
    cmbRechercheCat: object = QComboBox()
    alljobs:         list   = dbsearch.get_job_all()
    for i in alljobs:
        cmbRechercheCat.addItem("{0}".format(i[2]), i[0])
    btnRechercheCat: object = QPushButton("Rechercher")
    btnRechercheCat.clicked.connect(
        lambda:
            core_search_id(
                mainWindow,
                cmbRechercheCat.currentData()
            )
    )
    #
    layRechercheNom: object = QVBoxLayout()
    layRechercheNom.addWidget(labRechercheNom)
    layRechercheNom.addWidget(inputRechercheNom)
    layRechercheNom.addWidget(btnRechercheNom)
    layRechercheCat: object = QVBoxLayout()
    layRechercheCat.addWidget(labRechercheCat)
    layRechercheCat.addWidget(cmbRechercheCat)
    layRechercheCat.addWidget(btnRechercheCat)
    #
    layRecherche: object = QHBoxLayout()
    layRecherche.addStretch()
    layRecherche.addLayout(layRechercheNom)
    layRecherche.addStretch()
    layRecherche.addLayout(layRechercheCat)
    layRecherche.addStretch()
    #
    grpRecherche: object = QGroupBox("Recherche")
    grpRecherche.setLayout(layRecherche)
    #
    layMain: object = QVBoxLayout()
    layMain.addWidget(connState)
    layMain.addWidget(grpUser)
    layMain.addStretch()
    layMain.addWidget(grpRecherche)
    layMain.addStretch()
    #
    if hasattr(mainWindow, "mainWidget"):
        mainWindow.mainWidget.deleteLater()

    mainWindow.mainWidget = QWidget()
    mainWindow.mainWidget.setLayout(layMain)
    mainWindow.setCentralWidget(mainWindow.mainWidget)