示例#1
0
        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);
        }