public int GetReservaValida(int codReserva, DateTime date, Usuario user, int hotelIn) { int idHotel = 0; int idReserva = 0; int hotelFound = 0; decimal cantidadNoches = 0; DateTime fechaOut = Utils.getSystemDatetimeNow(); RepositorioUsuario repouser = new RepositorioUsuario(); Usuario userIn = user; if (userIn == null) { return(4); } String connectionString = ConfigurationManager.AppSettings["BaseLocal"]; SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand(); SqlDataReader reader; sqlCommand.Parameters.AddWithValue("@CodReserva", codReserva); sqlCommand.Parameters.AddWithValue("@date", date); sqlCommand.CommandType = CommandType.Text; sqlCommand.Connection = sqlConnection; sqlCommand.CommandText = "SELECT r.idReserva,r.idHotel,r.FechaHasta,r.DiasAlojados FROM LOS_BORBOTONES.Reserva as r,LOS_BORBOTONES.EstadoReserva as er WHERE r.CodigoReserva = @CodReserva and r.FechaDesde = @date and er.idReserva=r.idReserva and er.TipoEstado IN ('RC','RM')"; sqlConnection.Open(); reader = sqlCommand.ExecuteReader(); while (reader.Read()) { idReserva = reader.GetInt32(reader.GetOrdinal("idReserva")); idHotel = reader.GetInt32(reader.GetOrdinal("idHotel")); fechaOut = reader.GetDateTime(reader.GetOrdinal("FechaHasta")); cantidadNoches = reader.GetDecimal(reader.GetOrdinal("DiasAlojados")); } sqlConnection.Close(); if (idReserva == 0) { //llamo a cancelar la reserva en estado reserva RepositorioEstadia repoEstadia = new RepositorioEstadia(); RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); String estado = repoEstadia.getEstado(codReserva); if (estado.Equals("RC") | estado.Equals("RM")) { repoEstadoReserva.rechazarReserva(codReserva, userIn.getIdUsuario(), date); return(2); } return(5); } /* esto miraba que sea cualquier hotel del usuario, no en el que esta logueado * foreach (Hotel h in userIn.getHoteles()) * { * //si encuentro el hotel en el que el usuario trabaja entonces valido bien * if (h.getIdHotel() == idHotel) * hotelFound = 1; * }*/ if (hotelIn == idHotel) { hotelFound = 1; } if (hotelFound == 0) { return(3); } if (idReserva != 0 && hotelFound != 0) { //llamo a actualizar la estadia RepositorioEstadia repoEstadia = new RepositorioEstadia(); //int idEstadia = getIdEstadiaByCodReserva(codReserva); //comento lo de arriba ya que es un insert esto, no un update como pense al principio int idEstadia = 0; Boolean facturada = false; Usuario userOut = userIn; Estadia estadia = new Estadia(idEstadia, userIn, userOut, date, fechaOut, facturada, cantidadNoches); idEstadia = repoEstadia.create(estadia); //repoEstadia.updateIn(estadia); //hago update de reserva para darle id estadia Reserva reserva = getById(idReserva); this.updateIn(idReserva, idEstadia); //hago update de EstadoReserva RepositorioEstadoReserva repoEstadoReserva = new RepositorioEstadoReserva(); int idEstadoReserva = 0; String desc = "Reserva Con Ingreso"; String tipoEstado = "RCI"; EstadoReserva estadoReserva = new EstadoReserva(idEstadoReserva, userIn, reserva, tipoEstado, date, desc); repoEstadoReserva.update(estadoReserva); return(idEstadia); } return(0); }