DI_U3.Controladores.modificarReservaControlador

  1import sys
  2import os
  3
  4sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
  5
  6from PySide6.QtWidgets import QMainWindow, QMessageBox# type: ignore
  7from PySide6.QtWidgets import QDialog, QVBoxLayout, QLabel, QLineEdit, QComboBox, QSpinBox, QPushButton, QCheckBox, QMessageBox
  8from PySide6.QtCore import Qt,QDate
  9from PySide6.QtWidgets import QApplication # type: ignore
 10from Vistas.modificarReserva import Ui_nlgModificarReserva
 11from Conexion_BBDD.connectionBBDD import Connectionbd
 12import sqlite3
 13
 14class ModificarReservaControlador(QMainWindow):
 15    """
 16    Interfaz 4 para modificar una reserva.
 17    Permite cargar y modificar una reserva existente a partir de un ID.
 18    """
 19
 20
 21    def __init__(self, datos_reserva,reserva_id, parent=None):
 22        """
 23        Inicializa la interfaz de modificación de reserva
 24       
 25        """
 26        super().__init__(parent)
 27        self.ui = Ui_nlgModificarReserva()
 28        self.ui.setupUi(self)
 29
 30        # Guardamos los datos de la reserva a modificar
 31        self.datos_reserva = datos_reserva
 32
 33        # Guardar el ID de la reserva a modificar
 34        self.reserva_id = reserva_id
 35
 36        self.db_path = 'Conexion_BBDD/reservasHotel.sql'
 37        #self.dbManager = Connectionbd(self.db_path)
 38
 39         # Cargar tipos de datos en combo boxes
 40        self.cargar_tipos_reserva()
 41        self.cargar_tipos_cocina()
 42
 43        # Cargar los datos de la reserva
 44        self.cargar_datos_reserva()
 45        
 46
 47        # Conectar botones a funciones
 48        self.ui.ButtonConfirmarModificacion.clicked.connect(self.modificar_reserva)
 49        self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)
 50        self.ui.pushButtonVolver.clicked.connect(self.volver)
 51
 52        # Configuración predeterminada de fecha
 53        self.ui.dateEditReserva.setDate(QDate.currentDate())  
 54        self.ui.dateEditReserva.setMinimumDate(QDate.currentDate()) 
 55        self.ui.dateEditReserva.setDisplayFormat("dd-MM-yyyy")
 56        self.ui.dateEditReserva.setCalendarPopup(True)  # Muestra el calendario
 57
 58        # Ocultar campos por defecto
 59        self.ui.labelNumJornadas.setVisible(False)
 60        self.ui.spinBoxNumHab.setVisible(False)
 61        self.ui.labelHabitacion.setVisible(False)
 62        self.ui.checkBoxHabitacion.setVisible(False)
 63
 64        # Conectar señales
 65        self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)
 66       
 67    def cargar_tipos_reserva(self):
 68        try:
 69            conexion = sqlite3.connect(self.db_path)
 70            cursor = conexion.cursor()
 71            cursor.execute("SELECT tipo_reserva_id, nombre FROM tipos_reservas")
 72            tipos_reserva = cursor.fetchall()
 73
 74            for tipo_reserva_id, nombre in tipos_reserva:
 75                self.ui.comboBoxTipoReserva.addItem(nombre, tipo_reserva_id)
 76
 77            conexion.close()
 78        except sqlite3.Error as e:
 79            QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de reserva: {e}")
 80
 81    def cargar_tipos_cocina(self):
 82        try:
 83            conexion = sqlite3.connect(self.db_path)
 84            cursor = conexion.cursor()
 85            cursor.execute("SELECT tipo_cocina_id, nombre FROM tipos_cocina")
 86            tipos_cocina = cursor.fetchall()
 87
 88            for tipo_cocina_id, nombre in tipos_cocina:
 89                self.ui.comboBoxTipoCocina.addItem(nombre, tipo_cocina_id)
 90
 91            conexion.close()
 92        except sqlite3.Error as e:
 93            QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de cocina: {e}")
 94
 95    def on_tipo_reserva_changed(self, text):
 96        """
 97        Muestra u oculta campos adicionales según el tipo de reserva.
 98        """
 99        if text == "Congreso":
100            self.ui.labelNumJornadas.setVisible(True)
101            self.ui.spinBoxNumHab.setVisible(True)
102            self.ui.labelHabitacion.setVisible(True)
103            self.ui.checkBoxHabitacion.setVisible(True)
104        else:
105            self.ui.labelNumJornadas.setVisible(False)
106            self.ui.spinBoxNumHab.setVisible(False)
107            self.ui.labelHabitacion.setVisible(False)
108            self.ui.checkBoxHabitacion.setVisible(False)
109
110    def cargar_datos_reserva(self):
111        """
112        Carga los datos de la reserva a modificar desde los datos pasados al constructor
113        """      
114        persona = self.datos_reserva["persona"]
115        telefono = self.datos_reserva["telefono"]
116        fecha = self.datos_reserva["fecha"]
117        tipo_reserva_id = self.datos_reserva["tipo_reserva_id"]
118        tipo_cocina_id = self.datos_reserva["tipo_cocina_id"]
119        ocupacion = self.datos_reserva["ocupacion"]
120        jornadas = self.datos_reserva["jornadas"]
121        habitaciones = self.datos_reserva["habitaciones"]
122
123        # Llenar los campos de la interfaz con los datos de la reserva
124        self.ui.lineEditNombrePersona.setText(persona)
125        self.ui.lineEditNombrePersona.setEnabled(True)
126        self.ui.lineEditTlPersona.setText(telefono)
127        self.ui.lineEditTlPersona.setEnabled(True)
128        self.ui.dateEditReserva.setDate(QDate.fromString(fecha, "dd-MM-yyyy"))
129        self.ui.comboBoxTipoReserva.setCurrentIndex(self.ui.comboBoxTipoReserva.findData(tipo_reserva_id))
130        self.ui.comboBoxTipoCocina.setCurrentIndex(self.ui.comboBoxTipoCocina.findData(tipo_cocina_id))
131        self.ui.lineEdit_2.setText(str(ocupacion))
132        self.ui.lineEdit_2.setEnabled(True)
133
134        if tipo_reserva_id == "Congreso":  # Si el tipo de reserva es "Congreso"
135            self.ui.spinBoxNumHab.setValue(jornadas)
136            self.ui.spinBoxNumHab.setEnabled(True)
137            self.ui.checkBoxHabitacion.setChecked(habitaciones == 1)
138            self.ui.checkBoxHabitacion.setEnabled(True)
139                    
140        else:
141                    
142            self.ui.spinBoxNumHab.setVisible(False)    
143            self.ui.checkBoxHabitacion.setVisible(False)
144    
145
146    def modificar_reserva(self):
147        """
148        Modifica la reserva en la BBDD con los nuevos datos
149        """
150
151        try:
152
153            conexion = sqlite3.connect(self.db_path)
154            cursor = conexion.cursor()
155
156            persona = self.ui.lineEditNombrePersona.text()
157            telefono = self.ui.lineEditTlPersona.text()
158            fecha = self.ui.dateEditReserva.date().toString("dd-MM-yyyy")
159            tipo_reserva_id = self.ui.comboBoxTipoReserva.currentData()
160            tipo_cocina_id = self.ui.comboBoxTipoCocina.currentData()
161            ocupacion = self.ui.lineEdit_2.text()
162
163            # Obtener valores de jornadas y habitaciones
164            jornadas = self.ui.spinBoxNumHab.value() if self.ui.labelNumJornadas.isVisible() else 0
165            habitaciones = 1 if self.ui.checkBoxHabitacion.isChecked() else 0
166
167            # Validaciones
168            if not persona or not telefono or not tipo_reserva_id or not tipo_cocina_id or not ocupacion:
169                QMessageBox.warning(self, "Error", "Todos los campos deben estar completos.")
170                return
171
172            if not ocupacion.isdigit():
173                QMessageBox.warning(self, "Error", "El número de personas debe ser un valor numérico.")
174                return
175
176            
177            cursor.execute("""
178                UPDATE reservas
179                SET persona = ?, telefono = ?, fecha = ?, tipo_reserva_id = ?, tipo_cocina_id = ?, ocupacion = ?, jornadas = ?, habitaciones = ?
180                WHERE reserva_id = ?
181            """, (persona, telefono, fecha, tipo_reserva_id, tipo_cocina_id, int(ocupacion), jornadas, habitaciones, self.reserva_id))
182
183            conexion.commit()
184            conexion.close()
185
186            QMessageBox.information(self, "Éxito", f"Reserva {self.reserva_id} modificada con éxito.")
187        except sqlite3.Error as e:
188            QMessageBox.critical(self, "Error", f"No se pudo modificar la reserva: {e}")
189
190    def volver(self):
191        """
192        Cierra la interfaz actual y vuelve a la interfaz anterior
193        """
194        self.close()
195
196
197if __name__ == "__main__":
198    import sys
199    app = QApplication([])
200
201     # Diccionario con los datos de la reserva a modificar
202    datos_reserva = {
203        "reserva_id": 1,
204        "persona": "Juan Pérez",
205        "telefono": "123456789",
206        "fecha": "01-01-2025",
207        "tipo_reserva_id": 1,
208        "tipo_cocina_id": 2,
209        "ocupacion": 2,
210        "jornadas": 3,
211        "habitaciones": 1
212    }
213    ventana = ModificarReservaControlador(datos_reserva=datos_reserva)
214    ventana.show()  # Muestra la ventana
215    app.exec()  # Inicia el ciclo de eventos
class ModificarReservaControlador(PySide6.QtWidgets.QMainWindow):
 15class ModificarReservaControlador(QMainWindow):
 16    """
 17    Interfaz 4 para modificar una reserva.
 18    Permite cargar y modificar una reserva existente a partir de un ID.
 19    """
 20
 21
 22    def __init__(self, datos_reserva,reserva_id, parent=None):
 23        """
 24        Inicializa la interfaz de modificación de reserva
 25       
 26        """
 27        super().__init__(parent)
 28        self.ui = Ui_nlgModificarReserva()
 29        self.ui.setupUi(self)
 30
 31        # Guardamos los datos de la reserva a modificar
 32        self.datos_reserva = datos_reserva
 33
 34        # Guardar el ID de la reserva a modificar
 35        self.reserva_id = reserva_id
 36
 37        self.db_path = 'Conexion_BBDD/reservasHotel.sql'
 38        #self.dbManager = Connectionbd(self.db_path)
 39
 40         # Cargar tipos de datos en combo boxes
 41        self.cargar_tipos_reserva()
 42        self.cargar_tipos_cocina()
 43
 44        # Cargar los datos de la reserva
 45        self.cargar_datos_reserva()
 46        
 47
 48        # Conectar botones a funciones
 49        self.ui.ButtonConfirmarModificacion.clicked.connect(self.modificar_reserva)
 50        self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)
 51        self.ui.pushButtonVolver.clicked.connect(self.volver)
 52
 53        # Configuración predeterminada de fecha
 54        self.ui.dateEditReserva.setDate(QDate.currentDate())  
 55        self.ui.dateEditReserva.setMinimumDate(QDate.currentDate()) 
 56        self.ui.dateEditReserva.setDisplayFormat("dd-MM-yyyy")
 57        self.ui.dateEditReserva.setCalendarPopup(True)  # Muestra el calendario
 58
 59        # Ocultar campos por defecto
 60        self.ui.labelNumJornadas.setVisible(False)
 61        self.ui.spinBoxNumHab.setVisible(False)
 62        self.ui.labelHabitacion.setVisible(False)
 63        self.ui.checkBoxHabitacion.setVisible(False)
 64
 65        # Conectar señales
 66        self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)
 67       
 68    def cargar_tipos_reserva(self):
 69        try:
 70            conexion = sqlite3.connect(self.db_path)
 71            cursor = conexion.cursor()
 72            cursor.execute("SELECT tipo_reserva_id, nombre FROM tipos_reservas")
 73            tipos_reserva = cursor.fetchall()
 74
 75            for tipo_reserva_id, nombre in tipos_reserva:
 76                self.ui.comboBoxTipoReserva.addItem(nombre, tipo_reserva_id)
 77
 78            conexion.close()
 79        except sqlite3.Error as e:
 80            QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de reserva: {e}")
 81
 82    def cargar_tipos_cocina(self):
 83        try:
 84            conexion = sqlite3.connect(self.db_path)
 85            cursor = conexion.cursor()
 86            cursor.execute("SELECT tipo_cocina_id, nombre FROM tipos_cocina")
 87            tipos_cocina = cursor.fetchall()
 88
 89            for tipo_cocina_id, nombre in tipos_cocina:
 90                self.ui.comboBoxTipoCocina.addItem(nombre, tipo_cocina_id)
 91
 92            conexion.close()
 93        except sqlite3.Error as e:
 94            QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de cocina: {e}")
 95
 96    def on_tipo_reserva_changed(self, text):
 97        """
 98        Muestra u oculta campos adicionales según el tipo de reserva.
 99        """
100        if text == "Congreso":
101            self.ui.labelNumJornadas.setVisible(True)
102            self.ui.spinBoxNumHab.setVisible(True)
103            self.ui.labelHabitacion.setVisible(True)
104            self.ui.checkBoxHabitacion.setVisible(True)
105        else:
106            self.ui.labelNumJornadas.setVisible(False)
107            self.ui.spinBoxNumHab.setVisible(False)
108            self.ui.labelHabitacion.setVisible(False)
109            self.ui.checkBoxHabitacion.setVisible(False)
110
111    def cargar_datos_reserva(self):
112        """
113        Carga los datos de la reserva a modificar desde los datos pasados al constructor
114        """      
115        persona = self.datos_reserva["persona"]
116        telefono = self.datos_reserva["telefono"]
117        fecha = self.datos_reserva["fecha"]
118        tipo_reserva_id = self.datos_reserva["tipo_reserva_id"]
119        tipo_cocina_id = self.datos_reserva["tipo_cocina_id"]
120        ocupacion = self.datos_reserva["ocupacion"]
121        jornadas = self.datos_reserva["jornadas"]
122        habitaciones = self.datos_reserva["habitaciones"]
123
124        # Llenar los campos de la interfaz con los datos de la reserva
125        self.ui.lineEditNombrePersona.setText(persona)
126        self.ui.lineEditNombrePersona.setEnabled(True)
127        self.ui.lineEditTlPersona.setText(telefono)
128        self.ui.lineEditTlPersona.setEnabled(True)
129        self.ui.dateEditReserva.setDate(QDate.fromString(fecha, "dd-MM-yyyy"))
130        self.ui.comboBoxTipoReserva.setCurrentIndex(self.ui.comboBoxTipoReserva.findData(tipo_reserva_id))
131        self.ui.comboBoxTipoCocina.setCurrentIndex(self.ui.comboBoxTipoCocina.findData(tipo_cocina_id))
132        self.ui.lineEdit_2.setText(str(ocupacion))
133        self.ui.lineEdit_2.setEnabled(True)
134
135        if tipo_reserva_id == "Congreso":  # Si el tipo de reserva es "Congreso"
136            self.ui.spinBoxNumHab.setValue(jornadas)
137            self.ui.spinBoxNumHab.setEnabled(True)
138            self.ui.checkBoxHabitacion.setChecked(habitaciones == 1)
139            self.ui.checkBoxHabitacion.setEnabled(True)
140                    
141        else:
142                    
143            self.ui.spinBoxNumHab.setVisible(False)    
144            self.ui.checkBoxHabitacion.setVisible(False)
145    
146
147    def modificar_reserva(self):
148        """
149        Modifica la reserva en la BBDD con los nuevos datos
150        """
151
152        try:
153
154            conexion = sqlite3.connect(self.db_path)
155            cursor = conexion.cursor()
156
157            persona = self.ui.lineEditNombrePersona.text()
158            telefono = self.ui.lineEditTlPersona.text()
159            fecha = self.ui.dateEditReserva.date().toString("dd-MM-yyyy")
160            tipo_reserva_id = self.ui.comboBoxTipoReserva.currentData()
161            tipo_cocina_id = self.ui.comboBoxTipoCocina.currentData()
162            ocupacion = self.ui.lineEdit_2.text()
163
164            # Obtener valores de jornadas y habitaciones
165            jornadas = self.ui.spinBoxNumHab.value() if self.ui.labelNumJornadas.isVisible() else 0
166            habitaciones = 1 if self.ui.checkBoxHabitacion.isChecked() else 0
167
168            # Validaciones
169            if not persona or not telefono or not tipo_reserva_id or not tipo_cocina_id or not ocupacion:
170                QMessageBox.warning(self, "Error", "Todos los campos deben estar completos.")
171                return
172
173            if not ocupacion.isdigit():
174                QMessageBox.warning(self, "Error", "El número de personas debe ser un valor numérico.")
175                return
176
177            
178            cursor.execute("""
179                UPDATE reservas
180                SET persona = ?, telefono = ?, fecha = ?, tipo_reserva_id = ?, tipo_cocina_id = ?, ocupacion = ?, jornadas = ?, habitaciones = ?
181                WHERE reserva_id = ?
182            """, (persona, telefono, fecha, tipo_reserva_id, tipo_cocina_id, int(ocupacion), jornadas, habitaciones, self.reserva_id))
183
184            conexion.commit()
185            conexion.close()
186
187            QMessageBox.information(self, "Éxito", f"Reserva {self.reserva_id} modificada con éxito.")
188        except sqlite3.Error as e:
189            QMessageBox.critical(self, "Error", f"No se pudo modificar la reserva: {e}")
190
191    def volver(self):
192        """
193        Cierra la interfaz actual y vuelve a la interfaz anterior
194        """
195        self.close()

Interfaz 4 para modificar una reserva. Permite cargar y modificar una reserva existente a partir de un ID.

ModificarReservaControlador(datos_reserva, reserva_id, parent=None)
22    def __init__(self, datos_reserva,reserva_id, parent=None):
23        """
24        Inicializa la interfaz de modificación de reserva
25       
26        """
27        super().__init__(parent)
28        self.ui = Ui_nlgModificarReserva()
29        self.ui.setupUi(self)
30
31        # Guardamos los datos de la reserva a modificar
32        self.datos_reserva = datos_reserva
33
34        # Guardar el ID de la reserva a modificar
35        self.reserva_id = reserva_id
36
37        self.db_path = 'Conexion_BBDD/reservasHotel.sql'
38        #self.dbManager = Connectionbd(self.db_path)
39
40         # Cargar tipos de datos en combo boxes
41        self.cargar_tipos_reserva()
42        self.cargar_tipos_cocina()
43
44        # Cargar los datos de la reserva
45        self.cargar_datos_reserva()
46        
47
48        # Conectar botones a funciones
49        self.ui.ButtonConfirmarModificacion.clicked.connect(self.modificar_reserva)
50        self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)
51        self.ui.pushButtonVolver.clicked.connect(self.volver)
52
53        # Configuración predeterminada de fecha
54        self.ui.dateEditReserva.setDate(QDate.currentDate())  
55        self.ui.dateEditReserva.setMinimumDate(QDate.currentDate()) 
56        self.ui.dateEditReserva.setDisplayFormat("dd-MM-yyyy")
57        self.ui.dateEditReserva.setCalendarPopup(True)  # Muestra el calendario
58
59        # Ocultar campos por defecto
60        self.ui.labelNumJornadas.setVisible(False)
61        self.ui.spinBoxNumHab.setVisible(False)
62        self.ui.labelHabitacion.setVisible(False)
63        self.ui.checkBoxHabitacion.setVisible(False)
64
65        # Conectar señales
66        self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)

Inicializa la interfaz de modificación de reserva

ui
datos_reserva
reserva_id
db_path
def cargar_tipos_reserva(self):
68    def cargar_tipos_reserva(self):
69        try:
70            conexion = sqlite3.connect(self.db_path)
71            cursor = conexion.cursor()
72            cursor.execute("SELECT tipo_reserva_id, nombre FROM tipos_reservas")
73            tipos_reserva = cursor.fetchall()
74
75            for tipo_reserva_id, nombre in tipos_reserva:
76                self.ui.comboBoxTipoReserva.addItem(nombre, tipo_reserva_id)
77
78            conexion.close()
79        except sqlite3.Error as e:
80            QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de reserva: {e}")
def cargar_tipos_cocina(self):
82    def cargar_tipos_cocina(self):
83        try:
84            conexion = sqlite3.connect(self.db_path)
85            cursor = conexion.cursor()
86            cursor.execute("SELECT tipo_cocina_id, nombre FROM tipos_cocina")
87            tipos_cocina = cursor.fetchall()
88
89            for tipo_cocina_id, nombre in tipos_cocina:
90                self.ui.comboBoxTipoCocina.addItem(nombre, tipo_cocina_id)
91
92            conexion.close()
93        except sqlite3.Error as e:
94            QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de cocina: {e}")
def on_tipo_reserva_changed(self, text):
 96    def on_tipo_reserva_changed(self, text):
 97        """
 98        Muestra u oculta campos adicionales según el tipo de reserva.
 99        """
100        if text == "Congreso":
101            self.ui.labelNumJornadas.setVisible(True)
102            self.ui.spinBoxNumHab.setVisible(True)
103            self.ui.labelHabitacion.setVisible(True)
104            self.ui.checkBoxHabitacion.setVisible(True)
105        else:
106            self.ui.labelNumJornadas.setVisible(False)
107            self.ui.spinBoxNumHab.setVisible(False)
108            self.ui.labelHabitacion.setVisible(False)
109            self.ui.checkBoxHabitacion.setVisible(False)

Muestra u oculta campos adicionales según el tipo de reserva.

def cargar_datos_reserva(self):
111    def cargar_datos_reserva(self):
112        """
113        Carga los datos de la reserva a modificar desde los datos pasados al constructor
114        """      
115        persona = self.datos_reserva["persona"]
116        telefono = self.datos_reserva["telefono"]
117        fecha = self.datos_reserva["fecha"]
118        tipo_reserva_id = self.datos_reserva["tipo_reserva_id"]
119        tipo_cocina_id = self.datos_reserva["tipo_cocina_id"]
120        ocupacion = self.datos_reserva["ocupacion"]
121        jornadas = self.datos_reserva["jornadas"]
122        habitaciones = self.datos_reserva["habitaciones"]
123
124        # Llenar los campos de la interfaz con los datos de la reserva
125        self.ui.lineEditNombrePersona.setText(persona)
126        self.ui.lineEditNombrePersona.setEnabled(True)
127        self.ui.lineEditTlPersona.setText(telefono)
128        self.ui.lineEditTlPersona.setEnabled(True)
129        self.ui.dateEditReserva.setDate(QDate.fromString(fecha, "dd-MM-yyyy"))
130        self.ui.comboBoxTipoReserva.setCurrentIndex(self.ui.comboBoxTipoReserva.findData(tipo_reserva_id))
131        self.ui.comboBoxTipoCocina.setCurrentIndex(self.ui.comboBoxTipoCocina.findData(tipo_cocina_id))
132        self.ui.lineEdit_2.setText(str(ocupacion))
133        self.ui.lineEdit_2.setEnabled(True)
134
135        if tipo_reserva_id == "Congreso":  # Si el tipo de reserva es "Congreso"
136            self.ui.spinBoxNumHab.setValue(jornadas)
137            self.ui.spinBoxNumHab.setEnabled(True)
138            self.ui.checkBoxHabitacion.setChecked(habitaciones == 1)
139            self.ui.checkBoxHabitacion.setEnabled(True)
140                    
141        else:
142                    
143            self.ui.spinBoxNumHab.setVisible(False)    
144            self.ui.checkBoxHabitacion.setVisible(False)

Carga los datos de la reserva a modificar desde los datos pasados al constructor

def modificar_reserva(self):
147    def modificar_reserva(self):
148        """
149        Modifica la reserva en la BBDD con los nuevos datos
150        """
151
152        try:
153
154            conexion = sqlite3.connect(self.db_path)
155            cursor = conexion.cursor()
156
157            persona = self.ui.lineEditNombrePersona.text()
158            telefono = self.ui.lineEditTlPersona.text()
159            fecha = self.ui.dateEditReserva.date().toString("dd-MM-yyyy")
160            tipo_reserva_id = self.ui.comboBoxTipoReserva.currentData()
161            tipo_cocina_id = self.ui.comboBoxTipoCocina.currentData()
162            ocupacion = self.ui.lineEdit_2.text()
163
164            # Obtener valores de jornadas y habitaciones
165            jornadas = self.ui.spinBoxNumHab.value() if self.ui.labelNumJornadas.isVisible() else 0
166            habitaciones = 1 if self.ui.checkBoxHabitacion.isChecked() else 0
167
168            # Validaciones
169            if not persona or not telefono or not tipo_reserva_id or not tipo_cocina_id or not ocupacion:
170                QMessageBox.warning(self, "Error", "Todos los campos deben estar completos.")
171                return
172
173            if not ocupacion.isdigit():
174                QMessageBox.warning(self, "Error", "El número de personas debe ser un valor numérico.")
175                return
176
177            
178            cursor.execute("""
179                UPDATE reservas
180                SET persona = ?, telefono = ?, fecha = ?, tipo_reserva_id = ?, tipo_cocina_id = ?, ocupacion = ?, jornadas = ?, habitaciones = ?
181                WHERE reserva_id = ?
182            """, (persona, telefono, fecha, tipo_reserva_id, tipo_cocina_id, int(ocupacion), jornadas, habitaciones, self.reserva_id))
183
184            conexion.commit()
185            conexion.close()
186
187            QMessageBox.information(self, "Éxito", f"Reserva {self.reserva_id} modificada con éxito.")
188        except sqlite3.Error as e:
189            QMessageBox.critical(self, "Error", f"No se pudo modificar la reserva: {e}")

Modifica la reserva en la BBDD con los nuevos datos

def volver(self):
191    def volver(self):
192        """
193        Cierra la interfaz actual y vuelve a la interfaz anterior
194        """
195        self.close()

Cierra la interfaz actual y vuelve a la interfaz anterior

staticMetaObject = PySide6.QtCore.QMetaObject("ModificarReservaControlador" inherits "QMainWindow": )