Class: QuickTravel::Property

Inherits:
Adapter
  • Object
show all
Defined in:
lib/quick_travel/property.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Adapter

all, belongs_to, create, find, has_many, #to_s, update

Methods included from InitFromHash

#define_readers, #initialize, #to_hash

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error.



7
8
9
# File 'lib/quick_travel/property.rb', line 7

def error
  @error
end

Class Method Details

.all!Object



43
44
45
# File 'lib/quick_travel/property.rb', line 43

def self.all!
  self.find_all!('/properties.json')
end

.find!(condition = {}) ⇒ Object

This method returns all objects of property from QuickTravel that match

location_id is compulsory param :property_type_id=>1, :location_id=>5

Example response:

{ :property_type_id=>1, :location_id=>5  , :number_of_rooms => 1 ,  :product => {:first_travel_date => "07-05-2010" , :duration => 1 } }


20
21
22
23
# File 'lib/quick_travel/property.rb', line 20

def self.find!(condition = {})
  condition[:number_of_rooms] = 1 if condition[:number_of_rooms].blank? ||  condition[:number_of_rooms].to_i < 1
  find_all!('/api/properties.json', condition)
end

.load_with_pricing(id, options) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/quick_travel/property.rb', line 25

def self.load_with_pricing(id, options)
  # Find property 'standard' way -- finds price for whole duration
  fail ArgumentError.new('Must Specify valid property id') if id.blank? || !id.is_a?(Integer)
  property = find_all!("/api/properties/#{id}.json", options).first
  first_travel_date = options.fetch(:product).fetch(:first_travel_date)
  property.accommodations.each do |accommodation|
    # Is this right? Why is first_travel_date assumed to be cheapest
    accommodation.minimum_nightly_price      = accommodation.nightly_price_on first_travel_date
    accommodation.minimum_price_for_duration = accommodation.minimum_price_on first_travel_date
  end

  property
end

Instance Method Details

#accommodations=(hash_array) ⇒ Object



9
10
11
# File 'lib/quick_travel/property.rb', line 9

def accommodations=(hash_array)
  @accommodations = hash_array.map { |accommodation_hash| Accommodation.new(accommodation_hash) }
end

#accommodations_by_availability(stay_dates) ⇒ Object



60
61
62
63
64
# File 'lib/quick_travel/property.rb', line 60

def accommodations_by_availability(stay_dates)
  accommodations.sort_by do |accommodation|
    (accommodation.available_over_dates?(stay_dates) ? 0 : 1)
  end
end

#addressObject



80
81
82
# File 'lib/quick_travel/property.rb', line 80

def address
  @_address ||= Address.new(@address)
end

#available?Boolean

Returns:

  • (Boolean)


70
71
72
73
74
# File 'lib/quick_travel/property.rb', line 70

def available?
  # self.availability.present? &&
  # self.availability.any?{|availability_level| availability_level == 'on_allotment_and_available' }
  availability.present? && availability.all? { |_date, is_avail| is_avail }
end

#check_availability(date) ⇒ Object



66
67
68
# File 'lib/quick_travel/property.rb', line 66

def check_availability(date)
  availability && availability[date.to_s]
end

#graphic_urlObject

this method is only used for properties that are searched through find method, because QT_API returns graphic string in search results



48
49
50
# File 'lib/quick_travel/property.rb', line 48

def graphic_url
  QuickTravel.url + graphic if graphic.present?
end

#graphicsObject



56
57
58
# File 'lib/quick_travel/property.rb', line 56

def graphics
  @graphics ||= @graphic_attributes.map { |g| QuickTravel::Graphic.new(g) }
end

#graphics=(graphics) ⇒ Object



52
53
54
# File 'lib/quick_travel/property.rb', line 52

def graphics=(graphics)
  @graphic_attributes = graphics
end

#locationObject



84
85
86
# File 'lib/quick_travel/property.rb', line 84

def location
  @_location ||= Location.find(location_id)
end

#property_facilitiesObject



76
77
78
# File 'lib/quick_travel/property.rb', line 76

def property_facilities
  @_property_facilities ||= @property_facilities.map { |item| PropertyFacility.new(item) }
end

#property_typesObject



88
89
90
# File 'lib/quick_travel/property.rb', line 88

def property_types
  @_property_types ||= PropertyType.all.select{ |pt| property_type_ids.include?(pt.id) }
end

#to_paramObject



39
40
41
# File 'lib/quick_travel/property.rb', line 39

def to_param
  "#{id}-#{name.gsub(' ', '-')}"
end