Class: QuickTravel::Property
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
#define_readers, #initialize, #to_hash
Instance Attribute Details
#error ⇒ Object
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)
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|
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
|
#address ⇒ Object
80
81
82
|
# File 'lib/quick_travel/property.rb', line 80
def address
@_address ||= Address.new(@address)
end
|
#available? ⇒ Boolean
70
71
72
73
74
|
# File 'lib/quick_travel/property.rb', line 70
def 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_url ⇒ Object
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
|
#graphics ⇒ Object
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
|
#location ⇒ Object
84
85
86
|
# File 'lib/quick_travel/property.rb', line 84
def location
@_location ||= Location.find(location_id)
end
|
#property_facilities ⇒ Object
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_types ⇒ Object
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_param ⇒ Object
39
40
41
|
# File 'lib/quick_travel/property.rb', line 39
def to_param
"#{id}-#{name.gsub(' ', '-')}"
end
|