Class: HhPackage::Package::Base

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
ModelConcerns::DynamicPricingsForPackage, ModelConcerns::MixAndMatch, SoftDelete
Defined in:
app/models/hh_package/package/base.rb

Overview

typed: ignore

Constant Summary

Constants included from ModelConcerns::MixAndMatch

ModelConcerns::MixAndMatch::MINIMUM_MIX_AND_MATCH

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ModelConcerns::DynamicPricingsForPackage

#ala_carte?, #decide_max_seat, #decide_min_seat, #dynamic_price_comemore_payless?, #dynamic_pricings_as_json, #highest_pricing, #lowest_pricing, #price_currency, #pricing_model_and_dynamic_pricing_type, #pricing_tier, pricing_type, #pricing_type_humanize, #validate_comemore_payless_promotion, #validate_menu_v3_diy

Methods included from ModelConcerns::MixAndMatch

#allow_mix_and_match?, #allow_mix_ayce?, #mix_n_match_qty, #use_mix_and_match?

Methods included from SoftDelete

#soft_deleted?, #soft_destroy

Class Method Details

.per_pack_or_set(package, pricing = nil) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/models/hh_package/package/base.rb', line 52

def self.per_pack_or_set(package, pricing = nil)
  case package.dynamic_price_pricing_model.to_sym
  when :per_pack
    if pricing.nil?
      pricing = package.dynamic_pricings.first
      if pricing.nil?
        APMErrorHandler.report "missing pricing for package #{package.id}",
                               dynamic_pricings: package.dynamic_pricings.as_json
        return HhPackage::Pricing::PER_PACK_DEFAULT_WHEN_MISSING
      end

      pricing.per_pack
    else
      pricing.per_pack
    end
  when :per_set
    HhPackage::Pricing::PER_SET_DEFAULT
  end
end

Instance Method Details

#kids_price_rateObject

No need to trigger this callback on Package level, we should do it on RestaurantPackage level after_commit :update_inv_checker_package_base_level_cache, on: [:create, :update]



13
14
15
16
# File 'app/models/hh_package/package/base.rb', line 13

def kids_price_rate
  # we removed kids_price_rate column in dynamic pricing feature
  0
end


18
19
20
# File 'app/models/hh_package/package/base.rb', line 18

def menu_group_id
  package_attr&.menu_group_id
end


22
23
24
25
26
# File 'app/models/hh_package/package/base.rb', line 22

def menu_group_id=(value)
  # Ensure package_attr exists before setting the value
  build_package_attr if package_attr.nil?
  package_attr.menu_group_id = value
end

#reservationsObject



48
49
50
# File 'app/models/hh_package/package/base.rb', line 48

def reservations
  Reservation.joins(:reservation_packages).where(reservation_packages: { restaurant_package_id: restaurant_package_ids }).reached_goal_scope
end

#route_nameObject

Raises:

  • (NotImplementedError)


44
45
46
# File 'app/models/hh_package/package/base.rb', line 44

def route_name
  raise NotImplementedError
end

#slug_codeObject

Raises:

  • (NotImplementedError)


40
41
42
# File 'app/models/hh_package/package/base.rb', line 40

def slug_code
  raise NotImplementedError
end


36
37
38
# File 'app/models/hh_package/package/base.rb', line 36

def tnc_link
  AdminSetting.send("term_condition_link_#{route_name}".to_sym).presence || nil
end

#typeObject

Raises:

  • (NotImplementedError)


28
29
30
# File 'app/models/hh_package/package/base.rb', line 28

def type
  raise NotImplementedError
end

#type_shortObject

Raises:

  • (NotImplementedError)


32
33
34
# File 'app/models/hh_package/package/base.rb', line 32

def type_short
  raise NotImplementedError
end