Class: HhAddOn::ReservationAddOns::Metadata

Inherits:
Object
  • Object
show all
Defined in:
app/my_lib/hh_add_on/reservation_add_ons/metadata.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(add_on_params: [], adult: 0, kids: 0) ⇒ Metadata

Returns a new instance of Metadata.



42
43
44
45
46
47
# File 'app/my_lib/hh_add_on/reservation_add_ons/metadata.rb', line 42

def initialize(add_on_params: [], adult: 0, kids: 0)
  self.add_on_params = add_on_params.map(&:with_indifferent_access)
  self.adult = adult
  self.kids = kids
  @price_finder = HhPackage::ReservationPackages::PriceFinder.new
end

Instance Attribute Details

#add_on_paramsObject

Returns the value of attribute add_on_params.



20
21
22
# File 'app/my_lib/hh_add_on/reservation_add_ons/metadata.rb', line 20

def add_on_params
  @add_on_params
end

#adultObject

Returns the value of attribute adult.



20
21
22
# File 'app/my_lib/hh_add_on/reservation_add_ons/metadata.rb', line 20

def adult
  @adult
end

#kidsObject

Returns the value of attribute kids.



20
21
22
# File 'app/my_lib/hh_add_on/reservation_add_ons/metadata.rb', line 20

def kids
  @kids
end

Class Method Details

.from_reservation(reservation, reservation_custom_commission: nil) ⇒ Object

Rebuilds add_on_params from reservation.add_on_bought for recalculating add-on pricing when reservation attributes (adult, kids) change.

Returns:

  • create instance of this class using data from Reservation instance



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/my_lib/hh_add_on/reservation_add_ons/metadata.rb', line 25

def self.from_reservation(reservation, reservation_custom_commission: nil)
  add_on_bought = reservation.add_on_bought || []

  add_on_params = add_on_bought.map do |addon|
    { id: addon[:restaurant_add_on_id] || addon['restaurant_add_on_id'],
      quantity: addon[:quantity] || addon['quantity'] }
  end.select { |p| p[:id].present? }

   = HhAddOn::ReservationAddOns::Metadata.new(
    add_on_params: add_on_params,
    adult: reservation.adult,
    kids: reservation.kids,
  )
  reservation&.property.presence || reservation.build_property
  
end

Instance Method Details

#generateObject



68
69
70
# File 'app/my_lib/hh_add_on/reservation_add_ons/metadata.rb', line 68

def generate
  generate_data
end