def go_ricevuta(self):
        nome = self.edit_cf_cliente.currentText().split("-")
        for cliente in self.controller_clienti.get_lista_clienti():
            self.controller_cliente = ControllerCliente(cliente)
            if self.controller_cliente.get_nome(
            ) + " " + self.controller_cliente.get_cognome() == nome[0].strip():
                self.controller_cliente.set_visita_medica("Effettuato")
                self.cliente_visitato = cliente
        self.controller_clienti.save_data()

        if self.cliente_visitato.get_pagamento_iniziale() == "None":
            QMessageBox.critical(self, "Errore",
                                 "Il cliente non ha pagato la rata iniziale!",
                                 QMessageBox.Ok)
        else:
            for visita in self.controller.get_lista_visite():
                self.controller_visita = ControllerVisitaMedica(visita)
                if self.controller_visita.get_cliente() == nome[0].strip():
                    self.controller_visita.set_descrizione(
                        self.edit_descrizione.toPlainText())
                    self.controller_visita.set_esito(
                        self.edit_esito.currentText())
            self.controller.save_data()
            QMessageBox.information(self, "Confermato",
                                    "Esito aggiunto al sistema",
                                    QMessageBox.Ok)
        self.go_pagamenti = VistaListaVisiteMediche.VistaListaVisiteMediche()
        self.go_pagamenti.show()
        self.close()
Пример #2
0
 def go_disdici(self):
     if self.controller.get_lista_visite():
         for visita in self.controller.get_lista_visite():
             self.controller_visita = ControllerVisitaMedica(visita)
             if self.controller_visita.get_esito() != "None":
                 QMessageBox.critical(self, "Errore",
                                      "Nessuna prenotazione nel sistema",
                                      QMessageBox.Ok)
             else:
                 self.go_disdire = VistaDisdiciVisitaMedica()
                 self.go_disdire.show()
                 self.close()
     else:
         QMessageBox.critical(self, "Errore",
                              "Nessuna prenotazione nel sistema",
                              QMessageBox.Ok)
Пример #3
0
 def go_esiti(self):
     trovato = False
     if self.controller.get_lista_visite():
         for visita in self.controller.get_lista_visite():
             self.controller_visita = ControllerVisitaMedica(visita)
             if self.controller_visita.get_descrizione() == "None":
                 trovato = True
                 self.go_esito = VistaInserisciEsitoVisita()
                 self.go_esito.show()
                 self.close()
         if not trovato:
             QMessageBox.critical(
                 self, "Errore",
                 "Nessuna prenotazione nel sistema nel sistema",
                 QMessageBox.Ok)
     else:
         QMessageBox.critical(
             self, "Errore", "Nessuna prenotazione nel sistema nel sistema",
             QMessageBox.Ok)
 def set_data(self):
     self.icon_no = QIcon("Image/no.png")
     self.icon_si = QIcon("Image/si.png")
     self.no = QTableWidgetItem()
     self.no.setIcon(self.icon_no)
     self.si = QTableWidgetItem()
     self.si.setIcon(self.icon_si)
     i = 1
     n_righe = len(self.controller.get_lista_visite())
     self.table.setRowCount(n_righe + 1)
     for visita in self.controller.get_lista_visite():
         self.controller_visita = ControllerVisitaMedica(visita)
         self.table.setItem(i, 0, QTableWidgetItem(self.controller_visita.get_id()))
         self.table.setItem(i, 1, QTableWidgetItem(self.controller_visita.get_cliente()))
         self.table.setItem(i, 2, QTableWidgetItem(self.controller_visita.get_data()))
         if self.controller_visita.get_descrizione() == "None":
             self.table.setItem(i, 3, QTableWidgetItem(self.no))
         else:
             self.table.setItem(i, 3, QTableWidgetItem(self.controller_visita.get_descrizione()))
         if self.controller_visita.get_esito() == "None":
             self.table.setItem(i, 4, QTableWidgetItem(self.no))
         else:
             self.table.setItem(i, 4, QTableWidgetItem(self.controller_visita.get_esito()))
         i = i + 1
class VistaDisdiciVisitaMedica(
        QWidget
):  # Apre la vista che permette di disdire una visita col medico dell'autoscuola.
    def __init__(self, parent=None):
        super(VistaDisdiciVisitaMedica, self).__init__(parent)

        self.controller = ControllerListaVisiteMediche()
        # Inserisce in lista_visite le informazioni del file 'lista_visite.pickle'.

        self.stylesheet_frame = """
                    QFrame{
                        background-color: white;
                        border: 1px solid grey;
                    }
                """

        self.stylesheet_window = """
                    QWidget{
                        background-color: #dfdfdf;
                    }
                """

        self.stylesheet_label = """
                    QLabel{
                        background-color: transparent;
                    }

                    QComboBox{
                        background-color: white;
                        border: 1px solid grey;
                        color: black;
                    }

                """

        self.stylesheet_button_back = """
                    QPushButton{
                        border-radius: 15px;
                        background-color: transparent;
                    }

                    QPushButton::Pressed{
                        background-color:transparent;
                    }
                """

        self.stylesheet_button = """
                    QPushButton{
                        background-color: #cc3234;
                        color: white;
                        border-radius: 15px;
                    }

                    QPushButton::Pressed{
                        background-color: grey
                    }      
                """

        self.imagePath = "Image/foto.png"
        self.image = QImage(self.imagePath)
        self.label = QLabel(self)
        self.label.setPixmap(QPixmap.fromImage(self.image))
        self.label.setScaledContents(True)
        self.label.setGeometry(0, 0, 700, 500)

        # Inserimento e impostazioni grafiche dell'etichetta 'Disdici Visita'.
        self.label_titolo = QLabel(self)
        self.font_titolo = QFont("Arial", 18, QFont.Bold)
        self.label_titolo.setText("Disdici Visita")
        self.label_titolo.setFont(self.font_titolo)
        self.label_titolo.setStyleSheet(self.stylesheet_label)
        self.label_titolo.setGeometry(50, 55, 300, 40)

        # Inserimento e impostazioni grafiche del frame nella finestra.
        self.frame = QFrame(self)
        self.frame.setStyleSheet(self.stylesheet_frame)
        self.frame.setGeometry(50, 100, 600, 250)

        # Inserimento e impostazioni grafiche dell'etichetta 'Selezionare la visita'.
        self.label_id = QLabel(self)
        self.font_id = QFont("Times", 9)
        self.label_id.setFont(self.font_id)
        self.label_id.setText("Selezionare la visita")
        self.label_id.setGeometry(60, 190, 160, 30)
        self.label_id.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche del menù a tendina contenente le visite contenute nella
        # lista_visite. Inoltre la visita selezionata nel menù viene salvata nella variabile
        # 'visita_da_eliminare'.
        self.selezione_visita = QComboBox(self)
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            if self.controller_visita.get_esito() == "None":
                self.selezione_visita.addItem(
                    self.controller_visita.get_cliente() + " - " +
                    self.controller_visita.get_data())
        nome = self.selezione_visita.currentText().split("-")
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            if nome[0].strip() == self.controller_visita.get_cliente(
            ) and self.controller_visita.get_esito() == "None":
                self.visita_da_eliminare = visita
        self.selezione_visita.setGeometry(250, 190, 300, 30)
        self.selezione_visita.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche del bottone per confermare la rimozione della visita.
        self.button_rimuovi = QPushButton(self)
        self.button_rimuovi.setText("Rimuovi")
        self.font_button = QFont("Times", 11)
        self.button_rimuovi.setFont(self.font_button)
        self.button_rimuovi.setGeometry(525, 410, 120, 50)
        self.button_rimuovi.setStyleSheet(self.stylesheet_button)
        self.button_rimuovi.clicked.connect(self.disdici_visita)

        # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente.
        self.button_back = QPushButton(self)
        self.button_back.setIcon(QIcon('Image/back.png'))
        self.button_back.setIconSize(QSize(60, 60))
        self.button_back.setGeometry(50, 390, 90, 90)
        self.button_back.setStyleSheet(self.stylesheet_button_back)
        self.button_back.clicked.connect(self.go_back)

        # Impostazioni grafiche generali della finestra del programma.
        self.setWindowTitle("Disdici Visita")
        self.setStyleSheet(self.stylesheet_window)
        self.resize(700, 500)
        self.setFixedSize(self.size())

    # == disdici_visita ==
    # La funzione seguente per prima cosa chiede all'utente se vuole confermare l'eliminazione corrente e,
    # in caso di risposta affermativa, cancella la visita selezionata grazie all'id salvato nella variabile
    # 'visita_da_eliminare'.
    def disdici_visita(self):
        conferma = QMessageBox.question(self, "Conferma",
                                        "Sei sicuro di voler disdire?",
                                        QMessageBox.Yes, QMessageBox.No)
        if conferma == QMessageBox.Yes:
            self.controller.disdici_visita(self.visita_da_eliminare)
            self.home = VistaHomeMedico.VistaHomeMedico()
            self.home.show()
            self.close()
        else:
            return

    # == go_back ==
    # La funzione si occupa di aprire la finestra precedente.
    def go_back(self):
        self.go_home = VistaHomeMedico.VistaHomeMedico()
        self.go_home.show()
        self.close()
    def __init__(self, parent=None):
        super(VistaDisdiciVisitaMedica, self).__init__(parent)

        self.controller = ControllerListaVisiteMediche()
        # Inserisce in lista_visite le informazioni del file 'lista_visite.pickle'.

        self.stylesheet_frame = """
                    QFrame{
                        background-color: white;
                        border: 1px solid grey;
                    }
                """

        self.stylesheet_window = """
                    QWidget{
                        background-color: #dfdfdf;
                    }
                """

        self.stylesheet_label = """
                    QLabel{
                        background-color: transparent;
                    }

                    QComboBox{
                        background-color: white;
                        border: 1px solid grey;
                        color: black;
                    }

                """

        self.stylesheet_button_back = """
                    QPushButton{
                        border-radius: 15px;
                        background-color: transparent;
                    }

                    QPushButton::Pressed{
                        background-color:transparent;
                    }
                """

        self.stylesheet_button = """
                    QPushButton{
                        background-color: #cc3234;
                        color: white;
                        border-radius: 15px;
                    }

                    QPushButton::Pressed{
                        background-color: grey
                    }      
                """

        self.imagePath = "Image/foto.png"
        self.image = QImage(self.imagePath)
        self.label = QLabel(self)
        self.label.setPixmap(QPixmap.fromImage(self.image))
        self.label.setScaledContents(True)
        self.label.setGeometry(0, 0, 700, 500)

        # Inserimento e impostazioni grafiche dell'etichetta 'Disdici Visita'.
        self.label_titolo = QLabel(self)
        self.font_titolo = QFont("Arial", 18, QFont.Bold)
        self.label_titolo.setText("Disdici Visita")
        self.label_titolo.setFont(self.font_titolo)
        self.label_titolo.setStyleSheet(self.stylesheet_label)
        self.label_titolo.setGeometry(50, 55, 300, 40)

        # Inserimento e impostazioni grafiche del frame nella finestra.
        self.frame = QFrame(self)
        self.frame.setStyleSheet(self.stylesheet_frame)
        self.frame.setGeometry(50, 100, 600, 250)

        # Inserimento e impostazioni grafiche dell'etichetta 'Selezionare la visita'.
        self.label_id = QLabel(self)
        self.font_id = QFont("Times", 9)
        self.label_id.setFont(self.font_id)
        self.label_id.setText("Selezionare la visita")
        self.label_id.setGeometry(60, 190, 160, 30)
        self.label_id.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche del menù a tendina contenente le visite contenute nella
        # lista_visite. Inoltre la visita selezionata nel menù viene salvata nella variabile
        # 'visita_da_eliminare'.
        self.selezione_visita = QComboBox(self)
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            if self.controller_visita.get_esito() == "None":
                self.selezione_visita.addItem(
                    self.controller_visita.get_cliente() + " - " +
                    self.controller_visita.get_data())
        nome = self.selezione_visita.currentText().split("-")
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            if nome[0].strip() == self.controller_visita.get_cliente(
            ) and self.controller_visita.get_esito() == "None":
                self.visita_da_eliminare = visita
        self.selezione_visita.setGeometry(250, 190, 300, 30)
        self.selezione_visita.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche del bottone per confermare la rimozione della visita.
        self.button_rimuovi = QPushButton(self)
        self.button_rimuovi.setText("Rimuovi")
        self.font_button = QFont("Times", 11)
        self.button_rimuovi.setFont(self.font_button)
        self.button_rimuovi.setGeometry(525, 410, 120, 50)
        self.button_rimuovi.setStyleSheet(self.stylesheet_button)
        self.button_rimuovi.clicked.connect(self.disdici_visita)

        # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente.
        self.button_back = QPushButton(self)
        self.button_back.setIcon(QIcon('Image/back.png'))
        self.button_back.setIconSize(QSize(60, 60))
        self.button_back.setGeometry(50, 390, 90, 90)
        self.button_back.setStyleSheet(self.stylesheet_button_back)
        self.button_back.clicked.connect(self.go_back)

        # Impostazioni grafiche generali della finestra del programma.
        self.setWindowTitle("Disdici Visita")
        self.setStyleSheet(self.stylesheet_window)
        self.resize(700, 500)
        self.setFixedSize(self.size())
class VistaListaVisiteMediche(QWidget):  # Apre la vista che visualizza la lista delle visite mediche.
    def __init__(self, parent=None):
        super(VistaListaVisiteMediche, self).__init__(parent)
        self.controller = ControllerListaVisiteMediche()
        self.controller_clienti = ControllerListaClienti()

        # Inserisce in lista_visite le informazioni della 'lista-visite.json'.
        # Se la lista è vuota l'utente è notificato con un messaggio di errore.

        self.stylesheet_label = """
                    QLabel{
                        background-color: #99cbff;
                        border: 1px solid #dfdfdf;
                    }
                """

        self.stylesheet_window = """
                    QWidget{
                        background-color: #dfdfdf
                    }
                """

        self.stylesheet_button_back = """
                    QPushButton{
                        border-radius: 15px;
                        background-color: transparent;
                    }

                    QPushButton::Pressed{
                        background-color: transparent;
                    }
                """

        self.stylesheet_button = """
                    QPushButton{
                        background-color: #cc3234;
                        color: white;
                        border-radius: 15px;
                    }

                    QPushButton::Pressed{
                        background-color: grey
                    }
                """

        self.stylesheet_table = """
                    QTableWidget{
                        background-color: white;
                    }
                """

        self.imagePath = "Image/foto.png"
        self.image = QImage(self.imagePath)
        self.label = QLabel(self)
        self.label.setPixmap(QPixmap.fromImage(self.image))
        self.label.setScaledContents(True)
        self.label.setGeometry(0, 0, 1250, 750)

        # Inserimento della tabella e intestazione delle colonne.
        self.table = QTableWidget(self)
        self.table.setColumnCount(5)
        self.table.setRowCount(1)
        self.table.setItem(0, 0, QTableWidgetItem("ID"))
        self.table.setItem(0, 1, QTableWidgetItem("Cliente"))
        self.table.setItem(0, 2, QTableWidgetItem("Data visita"))
        self.table.setItem(0, 3, QTableWidgetItem("Descrizione"))
        self.table.setItem(0, 4, QTableWidgetItem("Esito"))

        self.set_data()  # Inserisce nella tabella i dati contenuti nella lista_visite.

        # Impostazioni grafiche della tabella.
        self.table.setGeometry(70, 50, 1100, 550)
        self.table.setStyleSheet(self.stylesheet_table)
        self.table.horizontalHeader().setStretchLastSection(True)
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table.horizontalHeader().hide()
        self.table.horizontalScrollBar().setDisabled(True)
        self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.table.verticalHeader().hide()
        self.table.setEditTriggers(self.table.NoEditTriggers)
        self.table.setSelectionMode(self.table.NoSelection)
        self.table.setFocusPolicy(Qt.NoFocus)

        # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente.
        self.button_back = QPushButton(self)
        self.button_back.setIcon(QIcon('Image/back.png'))
        self.button_back.setIconSize(QSize(90, 90))
        self.button_back.setGeometry(70, 630, 90, 90)
        self.button_back.setStyleSheet(self.stylesheet_button_back)
        self.button_back.clicked.connect(self.go_back)

        # Inserimento e impostazioni grafiche del bottone per inserire una nuova prenotazione
        # per una visita medica.
        self.button_new_visita = QPushButton(self)
        self.button_new_visita.setText("Prenota Visita")
        self.font_button = QFont("Times", 11)
        self.button_new_visita.setFont(self.font_button)
        self.button_new_visita.setGeometry(980, 650, 190, 50)
        self.button_new_visita.setStyleSheet(self.stylesheet_button)
        self.button_new_visita.clicked.connect(self.go_new_visita)

        # Impostazioni grafiche generali della finestra del programma.
        self.setWindowTitle("Lista Visite Mediche")
        self.resize(1250, 750)
        self.setFixedSize(self.size())
        self.setStyleSheet(self.stylesheet_window)

    # == set_data ==
    # La funzione si occupa di salvare le informazioni relative alle prenotazioni e contenute nel file
    # 'lista_visite.pickle' nella tabella della VistaListaVisiteMediche.
    def set_data(self):
        self.icon_no = QIcon("Image/no.png")
        self.icon_si = QIcon("Image/si.png")
        self.no = QTableWidgetItem()
        self.no.setIcon(self.icon_no)
        self.si = QTableWidgetItem()
        self.si.setIcon(self.icon_si)
        i = 1
        n_righe = len(self.controller.get_lista_visite())
        self.table.setRowCount(n_righe + 1)
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            self.table.setItem(i, 0, QTableWidgetItem(self.controller_visita.get_id()))
            self.table.setItem(i, 1, QTableWidgetItem(self.controller_visita.get_cliente()))
            self.table.setItem(i, 2, QTableWidgetItem(self.controller_visita.get_data()))
            if self.controller_visita.get_descrizione() == "None":
                self.table.setItem(i, 3, QTableWidgetItem(self.no))
            else:
                self.table.setItem(i, 3, QTableWidgetItem(self.controller_visita.get_descrizione()))
            if self.controller_visita.get_esito() == "None":
                self.table.setItem(i, 4, QTableWidgetItem(self.no))
            else:
                self.table.setItem(i, 4, QTableWidgetItem(self.controller_visita.get_esito()))
            i = i + 1

    # == go_new_visita ==
    # La funzione si occupa di aprire la VistaPrenotaVisitaMedica.
    def go_new_visita(self):
        trovato = False
        for cliente in self.controller_clienti.get_lista_clienti():
            self.controller_cliente = ControllerCliente(cliente)
            if self.controller_cliente.get_visita_medica() == "None":
                trovato = True
        if not trovato:
            QMessageBox.critical(self, "Attenzione", "Nessun cliente disponibile per prenotarsi", QMessageBox.Ok)
            return
        else:
            self.vista_nuovo_dipendente = VistaPrenotaVisitaMedica.VistaPrenotaVisitaMedica()
            self.vista_nuovo_dipendente.show()
            self.close()

    # == go_back ==
    # La funzione si occupa di aprire la finestra precedente.
    def go_back(self):
        self.go_home = VistaHomeMedico.VistaHomeMedico()
        self.go_home.show()
        self.close()
    def __init__(self, parent=None):
        super(VistaInserisciEsitoVisita, self).__init__(parent)
        self.controller = ControllerListaVisiteMediche()
        self.controller_clienti = ControllerListaClienti()

        self.stylesheet_window = """
                    QWidget{
                        background-color: #efefef;
                    }
                """

        self.stylesheet_label = """
                    QLabel{
                        background-color: transparent;
                    }

                    QComboBox{
                        background-color: white;
                        border: 1px solid grey;
                        color: black;
                    }

                    QLineEdit{
                        background-color: white;
                        border: 2px solid #dfdfdf
                    }

                    QTextEdit{
                        background-color: white;
                        border: 2px solid #dfdfdf
                    }
                """

        self.stylesheet_frame = """
                    QFrame{
                        border-radius: 15px;
                        background-color: white;
                        border: 2px solid #efefef;
                    }
                """

        self.stylesheet_button = """
                    QPushButton{
                        background-color: #cc3234;
                        color: white;
                        border-radius: 15px;
                    }

                    QPushButton::Pressed{
                        background-color: grey
                    }        
                """
        self.stylesheet_button_back = """
                         QPushButton{
                             border-radius: 15px;
                             background-color: transparent;
                         }

                         QPushButton::Pressed{
                             background-color: transparent;
                         }       
        """

        # Inserimento e impostazioni grafiche dell'immagine dello sfondo della finestra.
        self.imagePath = "Image/foto.png"
        self.image = QImage(self.imagePath)
        self.label = QLabel(self)
        self.label.setPixmap(QPixmap.fromImage(self.image))
        self.label.setScaledContents(True)
        self.label.setGeometry(0, 0, 1000, 450)

        # Inserimento e impostazioni grafiche dell'etichetta 'Inserisci Dati Esito'.
        self.label = QLabel(self)
        self.font = QFont("Arial", 18, QFont.Bold)
        self.label.setText("Inserisci Dati Esito")
        self.label.setFont(self.font)
        self.label.setStyleSheet(self.stylesheet_label)
        self.label.setGeometry(50, 55, 400, 40)

        # Inserimento e impostazioni grafiche del frame nella finestra.
        self.frame = QFrame(self)
        self.frame.setStyleSheet(self.stylesheet_frame)
        self.frame.setGeometry(50, 100, 900, 250)

        self.create_label("Seleziona cliente", 150)
        self.create_label("Descrizione", 250)

        # Inserimento e impostazioni grafiche del menù a tendina contenente la lista dei clienti.
        # La colonna dell'esito della visita potrà essere modificata solamente se il cliente
        # non ha ancora effettuato la visita e quindi non è presente alcun valore su 'Esito'.
        self.edit_cf_cliente = QComboBox(self)
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            if self.controller_visita.get_esito() == "None":
                self.edit_cf_cliente.addItem(
                    self.controller_visita.get_cliente() + " - " +
                    self.controller_visita.get_data())
        self.edit_cf_cliente.setGeometry(250, 150, 250, 30)
        self.edit_cf_cliente.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche della casella di testo.
        self.edit_descrizione = QTextEdit(self)
        self.edit_descrizione.setGeometry(250, 250, 200, 50)
        self.edit_descrizione.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche dell'etichetta 'Esito'.
        self.label_edit = QLabel(self)
        self.label_edit.setText("Esito")
        self.label_edit.setGeometry(600, 150, 60, 20)
        self.label_edit.setStyleSheet(self.stylesheet_label)
        self.font_label = QFont("Times", 9)
        self.label_edit.setFont(self.font_label)

        # Inserimento e impostazioni grafiche del menù a tendina per selezionare l'esito della visita.
        self.edit_esito = QComboBox(self)
        self.edit_esito.addItem("IDONEO")
        self.edit_esito.addItem("NON IDONEO")
        self.edit_esito.setGeometry(670, 150, 110, 20)
        self.edit_esito.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche del bottone per confermare l'inserimento dell'esito.
        self.button_ricevuta = QPushButton(self)
        self.button_ricevuta.setText("Inserisci esito")
        self.font_button = QFont("Times", 11)
        self.button_ricevuta.setFont(self.font_button)
        self.button_ricevuta.setGeometry(800, 375, 150, 50)
        self.button_ricevuta.setStyleSheet(self.stylesheet_button)
        self.button_ricevuta.clicked.connect(self.go_ricevuta)

        # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente.
        self.button_back = QPushButton(self)
        self.button_back.setIcon(QIcon('Image/back.png'))
        self.button_back.setIconSize(QSize(65, 65))
        self.button_back.setGeometry(20, 375, 150, 50)
        self.button_back.setStyleSheet(self.stylesheet_button_back)
        self.button_back.clicked.connect(self.go_back)

        # Impostazioni grafiche generali della finestra del programma.
        self.setWindowTitle("Inserisci Esito")
        self.setStyleSheet(self.stylesheet_window)
        self.resize(1000, 450)
        self.setFixedSize(self.size())
class VistaInserisciEsitoVisita(
        QWidget
):  # Apre la vista che consente al medico di inserire l'esito di una visita.
    def __init__(self, parent=None):
        super(VistaInserisciEsitoVisita, self).__init__(parent)
        self.controller = ControllerListaVisiteMediche()
        self.controller_clienti = ControllerListaClienti()

        self.stylesheet_window = """
                    QWidget{
                        background-color: #efefef;
                    }
                """

        self.stylesheet_label = """
                    QLabel{
                        background-color: transparent;
                    }

                    QComboBox{
                        background-color: white;
                        border: 1px solid grey;
                        color: black;
                    }

                    QLineEdit{
                        background-color: white;
                        border: 2px solid #dfdfdf
                    }

                    QTextEdit{
                        background-color: white;
                        border: 2px solid #dfdfdf
                    }
                """

        self.stylesheet_frame = """
                    QFrame{
                        border-radius: 15px;
                        background-color: white;
                        border: 2px solid #efefef;
                    }
                """

        self.stylesheet_button = """
                    QPushButton{
                        background-color: #cc3234;
                        color: white;
                        border-radius: 15px;
                    }

                    QPushButton::Pressed{
                        background-color: grey
                    }        
                """
        self.stylesheet_button_back = """
                         QPushButton{
                             border-radius: 15px;
                             background-color: transparent;
                         }

                         QPushButton::Pressed{
                             background-color: transparent;
                         }       
        """

        # Inserimento e impostazioni grafiche dell'immagine dello sfondo della finestra.
        self.imagePath = "Image/foto.png"
        self.image = QImage(self.imagePath)
        self.label = QLabel(self)
        self.label.setPixmap(QPixmap.fromImage(self.image))
        self.label.setScaledContents(True)
        self.label.setGeometry(0, 0, 1000, 450)

        # Inserimento e impostazioni grafiche dell'etichetta 'Inserisci Dati Esito'.
        self.label = QLabel(self)
        self.font = QFont("Arial", 18, QFont.Bold)
        self.label.setText("Inserisci Dati Esito")
        self.label.setFont(self.font)
        self.label.setStyleSheet(self.stylesheet_label)
        self.label.setGeometry(50, 55, 400, 40)

        # Inserimento e impostazioni grafiche del frame nella finestra.
        self.frame = QFrame(self)
        self.frame.setStyleSheet(self.stylesheet_frame)
        self.frame.setGeometry(50, 100, 900, 250)

        self.create_label("Seleziona cliente", 150)
        self.create_label("Descrizione", 250)

        # Inserimento e impostazioni grafiche del menù a tendina contenente la lista dei clienti.
        # La colonna dell'esito della visita potrà essere modificata solamente se il cliente
        # non ha ancora effettuato la visita e quindi non è presente alcun valore su 'Esito'.
        self.edit_cf_cliente = QComboBox(self)
        for visita in self.controller.get_lista_visite():
            self.controller_visita = ControllerVisitaMedica(visita)
            if self.controller_visita.get_esito() == "None":
                self.edit_cf_cliente.addItem(
                    self.controller_visita.get_cliente() + " - " +
                    self.controller_visita.get_data())
        self.edit_cf_cliente.setGeometry(250, 150, 250, 30)
        self.edit_cf_cliente.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche della casella di testo.
        self.edit_descrizione = QTextEdit(self)
        self.edit_descrizione.setGeometry(250, 250, 200, 50)
        self.edit_descrizione.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche dell'etichetta 'Esito'.
        self.label_edit = QLabel(self)
        self.label_edit.setText("Esito")
        self.label_edit.setGeometry(600, 150, 60, 20)
        self.label_edit.setStyleSheet(self.stylesheet_label)
        self.font_label = QFont("Times", 9)
        self.label_edit.setFont(self.font_label)

        # Inserimento e impostazioni grafiche del menù a tendina per selezionare l'esito della visita.
        self.edit_esito = QComboBox(self)
        self.edit_esito.addItem("IDONEO")
        self.edit_esito.addItem("NON IDONEO")
        self.edit_esito.setGeometry(670, 150, 110, 20)
        self.edit_esito.setStyleSheet(self.stylesheet_label)

        # Inserimento e impostazioni grafiche del bottone per confermare l'inserimento dell'esito.
        self.button_ricevuta = QPushButton(self)
        self.button_ricevuta.setText("Inserisci esito")
        self.font_button = QFont("Times", 11)
        self.button_ricevuta.setFont(self.font_button)
        self.button_ricevuta.setGeometry(800, 375, 150, 50)
        self.button_ricevuta.setStyleSheet(self.stylesheet_button)
        self.button_ricevuta.clicked.connect(self.go_ricevuta)

        # Inserimento e impostazioni grafiche del bottone per tornare alla vista precedente.
        self.button_back = QPushButton(self)
        self.button_back.setIcon(QIcon('Image/back.png'))
        self.button_back.setIconSize(QSize(65, 65))
        self.button_back.setGeometry(20, 375, 150, 50)
        self.button_back.setStyleSheet(self.stylesheet_button_back)
        self.button_back.clicked.connect(self.go_back)

        # Impostazioni grafiche generali della finestra del programma.
        self.setWindowTitle("Inserisci Esito")
        self.setStyleSheet(self.stylesheet_window)
        self.resize(1000, 450)
        self.setFixedSize(self.size())

    # == create_label ==
    # La funzione crea un etichetta con nome inserito in input alla funzione e posizione nella finestra
    # presa anch'essa in input. La funzione gestisce anche le impostazioni grafiche dell'etichetta.
    def create_label(self, nome, posizione):
        self.label_edit = QLabel(self)
        self.label_edit.setText(nome)
        self.label_edit.setGeometry(80, posizione, 110, 20)
        self.label_edit.setStyleSheet(self.stylesheet_label)
        self.font_label = QFont("Times", 9)
        self.label_edit.setFont(self.font_label)

    # == go_ricevuta ==
    # La funzione salva nella variabile 'nome' il cliente selezionato e successivamente, dopo aver controllato se il
    # cliente è presente nella lista_clienti, lo salva in cliente_visitato. Se non è presente un pagamento iniziale
    # mandato un messaggio di errore, altrimenti viene salvata in 'lista_visite.pickle' una nuova visita con le
    # informazioni relative. Infine la funzione rimanda alla VistaListaVisiteMediche.
    def go_ricevuta(self):
        nome = self.edit_cf_cliente.currentText().split("-")
        for cliente in self.controller_clienti.get_lista_clienti():
            self.controller_cliente = ControllerCliente(cliente)
            if self.controller_cliente.get_nome(
            ) + " " + self.controller_cliente.get_cognome() == nome[0].strip():
                self.controller_cliente.set_visita_medica("Effettuato")
                self.cliente_visitato = cliente
        self.controller_clienti.save_data()

        if self.cliente_visitato.get_pagamento_iniziale() == "None":
            QMessageBox.critical(self, "Errore",
                                 "Il cliente non ha pagato la rata iniziale!",
                                 QMessageBox.Ok)
        else:
            for visita in self.controller.get_lista_visite():
                self.controller_visita = ControllerVisitaMedica(visita)
                if self.controller_visita.get_cliente() == nome[0].strip():
                    self.controller_visita.set_descrizione(
                        self.edit_descrizione.toPlainText())
                    self.controller_visita.set_esito(
                        self.edit_esito.currentText())
            self.controller.save_data()
            QMessageBox.information(self, "Confermato",
                                    "Esito aggiunto al sistema",
                                    QMessageBox.Ok)
        self.go_pagamenti = VistaListaVisiteMediche.VistaListaVisiteMediche()
        self.go_pagamenti.show()
        self.close()

    # == go_back ==
    # La funzione si occupa di aprire la finestra precedente.
    def go_back(self):
        self.go_lista_pagamenti = VistaListaVisiteMediche.VistaListaVisiteMediche(
        )
        self.go_lista_pagamenti.show()
        self.close()
Пример #10
0
class VistaHomeMedico(
        QWidget
):  # Apre e visualizza la vista home con le funzioni consentite al medico.
    def __init__(self, parent=None):
        super(VistaHomeMedico, self).__init__(parent)
        self.controller = ControllerListaVisiteMediche()

        self.stylesheet_toolbutton = """
                    QToolButton{
                        background-color: white;
                        border: 1px solid #9c9c9c;
                        border-radius: 10px;
                    }

                    QToolButton::Pressed{
                        background-color: grey;
                    }
                """

        self.stylesheet_button = """
                    QPushButton{
                        border-radius: 15px;
                        background-color: salmon;
                        color: black;
                    }

                    QPushButton::pressed{
                        background-color: transparent;
                    }                    
                """

        # Inserimento e impostazioni grafiche dell'immagine dello sfondo della finestra.
        self.imagePath = "Image/foto.png"
        self.image = QImage(self.imagePath)
        self.label = QLabel(self)
        self.label.setPixmap(QPixmap.fromImage(self.image))
        self.label.setScaledContents(True)
        self.label.setGeometry(0, 0, 800, 600)

        # Il seguente blocco crea le azioni che saranno svolte dai bottoni, i bottoni
        # che saranno presenti sulla schermata e i collegamenti tra i due.
        self.action_visita = QAction()
        self.action_esiti = QAction()
        self.action_disdetta = QAction()
        self.create_button('Image/dottore.png', 'Lista prenotazioni', 110,
                           self.action_visita)
        self.create_button('Image/esito.png', 'Esito visita', 310,
                           self.action_esiti)
        self.create_button('Image/disdici_visita.png', 'Disdici visita', 510,
                           self.action_disdetta)
        self.action_visita.triggered.connect(self.go_visita)
        self.action_esiti.triggered.connect(self.go_esiti)
        self.action_disdetta.triggered.connect(self.go_disdici)

    # == create_button ==
    # La funzione crea i bottoni che saranno presenti sulla schermata prendendo per input
    # il path dell immagine che rappresenterà il bottone, il suo nome, la posizione che avrà nella
    # schermata e quale azione dovrà compiere una volta premuto.
    # La funzione si occupa dei bottoni anche dal punto di vista grafico.
    def create_button(self, path_img, nome, posizione, action):
        self.button = QToolButton(self)
        self.button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        font_button = QFont("Times", 11)
        self.button.setFont(font_button)
        self.button.setGeometry(posizione, 200, 180, 80)
        action.setIcon(QIcon(path_img))
        action.setText(nome)
        self.button.setIconSize(QSize(50, 50))
        self.button.setDefaultAction(action)
        self.button.setStyleSheet(self.stylesheet_toolbutton)

        self.setWindowTitle("Home Medico")
        self.resize(800, 500)
        self.setFixedSize(self.size())

    # == go_visita ==
    # La funzione si occupa di aprire la VistaListaVisiteMediche
    # presa dal file 'lista_visite.pickle'.
    def go_visita(self):
        self.prenota_visita = VistaListaVisiteMediche()
        self.prenota_visita.show()
        self.close()

    # == go_esiti ==
    # Questa funzione consente di aprire la VistaInserisciEsitoVisita che consente
    # al medico di inserire l'esito di una visita medica. Viene anche fatto un controllo
    # sulla lista: se la 'lista-visite.json' non contiene elementi viene inviato un
    # messaggio di errore.
    def go_esiti(self):
        trovato = False
        if self.controller.get_lista_visite():
            for visita in self.controller.get_lista_visite():
                self.controller_visita = ControllerVisitaMedica(visita)
                if self.controller_visita.get_descrizione() == "None":
                    trovato = True
                    self.go_esito = VistaInserisciEsitoVisita()
                    self.go_esito.show()
                    self.close()
            if not trovato:
                QMessageBox.critical(
                    self, "Errore",
                    "Nessuna prenotazione nel sistema nel sistema",
                    QMessageBox.Ok)
        else:
            QMessageBox.critical(
                self, "Errore", "Nessuna prenotazione nel sistema nel sistema",
                QMessageBox.Ok)

    # == go_disdici ==
    # Questa funzione consente di aprire la VistaDisdiciVisitaMedica. Viene anche fatto
    # un controllo su 'lista-visita.json': se il file è vuoto viene inviato un messaggio
    # di errore all'utente.
    def go_disdici(self):
        if self.controller.get_lista_visite():
            for visita in self.controller.get_lista_visite():
                self.controller_visita = ControllerVisitaMedica(visita)
                if self.controller_visita.get_esito() != "None":
                    QMessageBox.critical(self, "Errore",
                                         "Nessuna prenotazione nel sistema",
                                         QMessageBox.Ok)
                else:
                    self.go_disdire = VistaDisdiciVisitaMedica()
                    self.go_disdire.show()
                    self.close()
        else:
            QMessageBox.critical(self, "Errore",
                                 "Nessuna prenotazione nel sistema",
                                 QMessageBox.Ok)