Module: SpreeCmCommissioner::VariantOptionsConcern
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/spree_cm_commissioner/variant_options_concern.rb
Instance Method Summary collapse
- #end_date ⇒ Object
- #end_date_time ⇒ Object
- #end_time ⇒ Object
- #find_option_value_name_for(option_type_name: nil) ⇒ Object
- #option_value_name_for(option_type_name: nil) ⇒ Object
- #options ⇒ Object
- #options_in_hash ⇒ Object
- #post_paid? ⇒ Boolean
-
#set_options_to_public_metadata ⇒ Object
save optins to public_metadata so we don’t have to query option types & option values when needed them.
- #set_options_to_public_metadata! ⇒ Object
- #start_date ⇒ Object
- #start_date_time ⇒ Object
- #start_time ⇒ Object
Instance Method Details
#end_date ⇒ Object
69 70 71 72 73 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 69 def end_date return start_date + .total_duration_in_seconds.seconds if start_date.present? && .total_duration_in_seconds.positive? .end_date || event&.to_date end |
#end_date_time ⇒ Object
58 59 60 61 62 63 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 58 def end_date_time return nil if end_date.blank? return end_date if end_time.blank? end_date.change(hour: end_time.hour, min: end_time.min, sec: end_time.sec) end |
#end_time ⇒ Object
79 80 81 82 83 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 79 def end_time return start_time + .total_duration_in_seconds.seconds if start_time.present? && .total_duration_in_seconds.positive? .end_time || event&.to_date end |
#find_option_value_name_for(option_type_name: nil) ⇒ Object
47 48 49 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 47 def find_option_value_name_for(option_type_name: nil) option_values.detect { |o| o.option_type.name.downcase.strip == option_type_name.downcase.strip }.try(:name) end |
#option_value_name_for(option_type_name: nil) ⇒ Object
41 42 43 44 45 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 41 def option_value_name_for(option_type_name: nil) return [option_type_name] if .present? # empty is not considered present? find_option_value_name_for(option_type_name: option_type_name) end |
#options ⇒ Object
33 34 35 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 33 def @options ||= VariantOptions.new(self) end |
#options_in_hash ⇒ Object
37 38 39 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 37 def [:cm_options] end |
#post_paid? ⇒ Boolean
85 86 87 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 85 def post_paid? .payment_option == 'post-paid' end |
#set_options_to_public_metadata ⇒ Object
save optins to public_metadata so we don’t have to query option types & option values when needed them. once variant changed, we update metadata.
91 92 93 94 95 96 97 98 99 100 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 91 def self. ||= {} = option_values.each_with_object({}) do |option_value, hash| option_type_name = option_value.option_type.name hash[option_type_name] = find_option_value_name_for(option_type_name: option_type_name) end self.[:cm_options] = end |
#set_options_to_public_metadata! ⇒ Object
102 103 104 105 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 102 def save! end |
#start_date ⇒ Object
65 66 67 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 65 def start_date .start_date || event&.from_date end |
#start_date_time ⇒ Object
51 52 53 54 55 56 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 51 def start_date_time return nil if start_date.blank? return start_date if start_time.blank? start_date.change(hour: start_time.hour, min: start_time.min, sec: start_time.sec) end |
#start_time ⇒ Object
75 76 77 |
# File 'app/models/concerns/spree_cm_commissioner/variant_options_concern.rb', line 75 def start_time .start_time || event&.from_date end |