private void reservar(int cantHab, Tipo_Habitacion tipo_seleccionado) { Reserva reserva = new Reserva(); reserva.CodigoRegimen = regimen_elegido.CodRegimen; reserva.Fecha_Inicio_struct = dateTimeEntrada.Value; reserva.Fecha_Fin_struct = dateTimeSalida.Value; reserva.Fecha_Reserva_struct = Globals.getFechaSistema(); reserva.Usr = Globals.infoSesion.User.Usr; reserva.cantHabitaciones = cantHab; reserva.tipo_habitacion = tipo_seleccionado; List <Habitacion> habitaciones_disponibles; habitaciones_disponibles = DAOReserva.habitacionDisponibles(Globals.infoSesion.Hotel.CodHotel, tipo_seleccionado.TipoCodigo, reserva.Fecha_Inicio, reserva.Fecha_Fin); if (habitaciones_disponibles.Count < cantHab) { DialogResult dr = MessageBox.Show("No existen suficientes habitaciones disponibles para efectuar la reserva.", "", MessageBoxButtons.OK); return; } for (int i = 0; i < cantHab; i++) { Detalle_Reserva det = new Detalle_Reserva(); det.CodigoHotel = Globals.infoSesion.Hotel.CodHotel; det.Habitacion = habitaciones_disponibles[i].Id_Habitacion; reserva.detalles_reserva.Add(det); } new ConfirmarReserva(reserva).Show(); Globals.deshabilitarAnterior(this); }
private void botonDisponibilidad_Click(object sender, EventArgs e) { if (!datos_alterados) { showToolTip("Hay disponibilidad ya que no se modificaron los datos.", botonDisponibilidad, botonDisponibilidad.Location); return; } if (chequearDatos()) { nueva_reserva = duplicarReserva(reserva_elegida); nueva_reserva.Fecha_Inicio_struct = dateTimeInicio.Value; nueva_reserva.Fecha_Fin_struct = dateTimeFin.Value; nueva_reserva.tipo_habitacion = tipos_habitacion[comboTipoHab.SelectedIndex]; nueva_reserva.CodigoRegimen = lista_regimenes[comboTipoRegimen.SelectedIndex].CodRegimen; int cantPersonas = Int32.Parse(textCant.Text); //Si se mantiene el tipo de habitacion, entonces solo tenemos que agregar o retirar habitaciones, que no sean las originales if (tipo_elegido.TipoCodigo == nueva_reserva.tipo_habitacion.TipoCodigo) { cantPersonas = cantPersonas - cantPersonas_originales; } List <Habitacion> habitaciones_disponibles; habitaciones_disponibles = DAOReserva.habitacionDisponibles(Globals.infoSesion.Hotel.CodHotel, nueva_reserva.tipo_habitacion.TipoCodigo, nueva_reserva.Fecha_Inicio, nueva_reserva.Fecha_Fin); int cantAreservar = cantPersonas / nueva_reserva.tipo_habitacion.CantPersonas; if (habitaciones_disponibles.Count < cantAreservar) { MessageBox.Show("No existen suficientes habitaciones disponibles para efectuar la reserva.", "", MessageBoxButtons.OK); return; } //Si es que faltan habitaciones (Tanto se mantenga o no el tipo de habitacion) for (int i = 0; i < cantAreservar; i++) { Detalle_Reserva det = new Detalle_Reserva(); det.CodigoHotel = Globals.infoSesion.Hotel.CodHotel; det.CodigoReserva = reserva_elegida.CodigoReserva; det.Habitacion = habitaciones_disponibles[i].Id_Habitacion; nueva_reserva.detalles_reserva.Add(det); } //Si es que sobran habitaciones (Si el tipo de habitacion se cambia, el numero es negativo y no cicla y queda vacio) for (int i = 0; i < -cantAreservar; i++) { Detalle_Reserva det = new Detalle_Reserva(); det.CodigoHotel = Globals.infoSesion.Hotel.CodHotel; det.CodigoReserva = reserva_elegida.CodigoReserva; det.Habitacion = habitaciones_disponibles[i].Id_Habitacion; detallesAremover.Add(det); } textPrecio.Text = Globals.obtenerPrecio(nueva_reserva.CodigoRegimen, cantPersonas + cantPersonas_originales, Globals.infoSesion.Hotel.Recargo).ToString(); //Simamos la cantPersonas_originales para obtener la cantidad total de personas ingresadas y no tener que levantar todo de nuevo MessageBox.Show("Hay disponibilidad para modificar la reserva.", "", MessageBoxButtons.OK); hab_confirmadas = true; } }