public List <Alojamiento> FindAll()
        {
            string             cadenaFindAll     = "SELECT id,tipo FROM Alojamiento";
            List <Alojamiento> listaAlojamientos = new List <Alojamiento>();

            using (SqlConnection cn = BdSQL.Conectar())
            {
                using (SqlCommand cmd = new SqlCommand(cadenaFindAll, cn))
                {
                    cn.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader != null)
                    {
                        while (reader.Read())
                        {
                            Alojamiento a = new Alojamiento();
                            a.Load(reader);
                            if (a.Validar())
                            {
                                listaAlojamientos.Add(a);
                            }
                        }
                    }
                }
            }
            return(listaAlojamientos);
        }
        public Alojamiento FindById(int id)
        {
            string cadenaFind = "SELECT Alojamiento.*, Ubicacion.ciudad, Ubicacion.barrio, Ubicacion.dirLinea1, Ubicacion.dirLinea2 FROM Alojamiento, Ubicacion WHERE Alojamiento.idUbicacion = Ubicacion.id AND Alojamiento.id = @id";

            SqlConnection      cn = BdSQL.Conectar();
            List <RangoPrecio> precios_temporada = new List <RangoPrecio>();
            Alojamiento        unA = null;

            try
            {
                SqlCommand cmd = new SqlCommand(cadenaFind, cn);
                cmd.Parameters.AddWithValue("@id", id);
                cn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                //traigo alojamiento
                if (reader != null && reader.Read())
                {
                    unA = new Alojamiento();
                    unA.Load(reader);
                    unA.Id        = id;
                    unA.Ubicacion = new Ubicacion
                    {
                        Id              = Convert.ToInt32(reader["idUbicacion"].ToString()),
                        Ciudad          = reader["ciudad"].ToString(),
                        Barrio          = reader["barrio"].ToString(),
                        DireccionLinea1 = reader["dirLinea1"].ToString(),
                        DireccionLinea2 = reader["dirLinea2"].ToString()
                    };
                }
                reader.Close();
                //Cargo los elementos de la lista de rango precios
                cmd.CommandText = "SELECT * FROM RangoPrecio WHERE id_alojamiento = @id";
                reader          = cmd.ExecuteReader();
                while (reader.Read())
                {
                    RangoPrecio unR = new RangoPrecio();
                    unA.loadRangoPrecio(unR, reader);
                    precios_temporada.Add(unR);
                }
                unA.Precios_temporada = precios_temporada;
                reader.Close();
                return(unA);
            }
            catch (Exception ex)
            {
                //mostrar exception
                BdSQL.LoguearError(ex.Message + "No se pudo cargar el Alojamiento");
                unA.Precios_temporada = null;
                return(unA = null);
            }
            finally
            {
                cn.Close();
                cn.Dispose();
            }
        }
        public Habitacion FindById(int id)
        {
            string             cadenaFind        = "SELECT id,banio_privado,camas,cupo_max,precio_base FROM Habitacion WHERE id=@id";
            Habitacion         h                 = null;
            Alojamiento        a                 = null;
            Servicio           s                 = null;
            List <Servicio>    listaServicios    = new List <Servicio>();
            List <RangoPrecio> precios_temporada = new List <RangoPrecio>();

            using (SqlConnection cn = BdSQL.Conectar())
            {
                using (SqlCommand cmd = new SqlCommand(cadenaFind, cn))
                {
                    cmd.Parameters.AddWithValue("@id", id);
                    cn.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader != null && reader.Read())
                    {
                        // cargo la habitacion
                        h = new Habitacion();
                        h.Load(reader);
                        reader.Close();

                        //cargo los  servicios
                        //cmd.CommandText = "SELECT id_servicio FROM ServiciosHabitacion WHERE id_habitacion=@id";

                        cmd.CommandText = "SELECT Servicio.* FROM ServiciosHabitacion, Servicio WHERE ServiciosHabitacion.id_habitacion = @id AND Servicio.id = ServiciosHabitacion.id_servicio";
                        reader          = cmd.ExecuteReader();
                        if (reader != null)
                        {
                            while (reader.Read())
                            {
                                s = new Servicio();
                                s.Load(reader);
                                listaServicios.Add(s);
                            }
                        }
                        h.Servicios = listaServicios;
                        reader.Close();

                        //cargo el id del alojamiento para esa habitacion
                        cmd.CommandText = "SELECT Habitacion.id_alojamiento FROM Habitacion WHERE Habitacion.id=@id";
                        reader          = cmd.ExecuteReader();
                        int idAlo = 0;
                        if (reader != null && reader.Read())
                        {
                            idAlo = Convert.ToInt32(reader["id_alojamiento"].ToString());
                        }
                        reader.Close();

                        //cargo todos los datos simples del alojamiento sin el rango precio
                        cmd.CommandText = "SELECT Alojamiento.*, Ubicacion.ciudad, Ubicacion.id as idubi, Ubicacion.barrio, Ubicacion.dirLinea1, Ubicacion.dirLinea2 FROM Alojamiento, Ubicacion WHERE Alojamiento.idUbicacion = Ubicacion.id AND Alojamiento.id = @id";
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@id", idAlo);
                        reader = cmd.ExecuteReader();
                        if (reader != null && reader.Read())
                        {
                            a = new Alojamiento();
                            a.Load(reader);
                            a.Id        = idAlo;
                            a.Ubicacion = new Ubicacion
                            {
                                Id              = Convert.ToInt32(reader["idubi"].ToString()),
                                Ciudad          = reader["ciudad"].ToString(),
                                Barrio          = reader["barrio"].ToString(),
                                DireccionLinea1 = reader["dirLinea1"].ToString(),
                                DireccionLinea2 = reader["dirLinea2"].ToString()
                            };
                        }
                        reader.Close();
                        //Cargo los elementos de la lista de rango precios al alojamiento
                        cmd.CommandText = "SELECT * FROM RangoPrecio WHERE id_alojamiento = @id";
                        reader          = cmd.ExecuteReader();
                        while (reader.Read())
                        {
                            RangoPrecio unR = new RangoPrecio();
                            a.loadRangoPrecio(unR, reader);
                            precios_temporada.Add(unR);
                        }
                        a.Precios_temporada = precios_temporada;
                        h.Alojamiento       = a;
                        reader.Close();
                    }
                }
            }
            return(h);
        }