Class: SpreeCmCommissioner::PricingModels::GuestContext
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::PricingModels::GuestContext
- Defined in:
- lib/spree_cm_commissioner/pricing_models/guest_context.rb
Constant Summary collapse
- PREVIEW_PERMITTED_FIELDS =
%i[ id saved_guest_id age_group nationality_id nationality_group line_item_id ].freeze
Instance Attribute Summary collapse
-
#age_group ⇒ Object
readonly
Returns the value of attribute age_group.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#line_item_id ⇒ Object
readonly
Returns the value of attribute line_item_id.
-
#nationality_group ⇒ Object
readonly
Returns the value of attribute nationality_group.
-
#nationality_id ⇒ Object
readonly
Returns the value of attribute nationality_id.
-
#saved_guest_id ⇒ Object
readonly
Returns the value of attribute saved_guest_id.
Class Method Summary collapse
-
.build_from_context(attributes: {}, fallback_guest: nil) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ GuestContext
constructor
A new instance of GuestContext.
Constructor Details
#initialize(options = {}) ⇒ GuestContext
Returns a new instance of GuestContext.
15 16 17 18 19 20 21 22 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 15 def initialize( = {}) @id = [:id] @saved_guest_id = [:saved_guest_id] @age_group = [:age_group] @nationality_id = [:nationality_id] @nationality_group = [:nationality_group] @line_item_id = [:line_item_id] end |
Instance Attribute Details
#age_group ⇒ Object (readonly)
Returns the value of attribute age_group.
13 14 15 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 13 def age_group @age_group end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
13 14 15 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 13 def id @id end |
#line_item_id ⇒ Object (readonly)
Returns the value of attribute line_item_id.
13 14 15 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 13 def line_item_id @line_item_id end |
#nationality_group ⇒ Object (readonly)
Returns the value of attribute nationality_group.
13 14 15 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 13 def nationality_group @nationality_group end |
#nationality_id ⇒ Object (readonly)
Returns the value of attribute nationality_id.
13 14 15 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 13 def nationality_id @nationality_id end |
#saved_guest_id ⇒ Object (readonly)
Returns the value of attribute saved_guest_id.
13 14 15 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 13 def saved_guest_id @saved_guest_id end |
Class Method Details
.build_from_context(attributes: {}, fallback_guest: nil) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/spree_cm_commissioner/pricing_models/guest_context.rb', line 24 def self.build_from_context(attributes: {}, fallback_guest: nil) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity saved_guest = fallback_guest&.saved_guest id = if attributes.key?(:id) attributes[:id].presence&.to_i else fallback_guest&.id end saved_guest_id = if attributes.key?(:saved_guest_id) attributes[:saved_guest_id].presence&.to_i else fallback_guest&.saved_guest_id end line_item_id = if attributes.key?(:line_item_id) attributes[:line_item_id].presence&.to_i else fallback_guest&.line_item_id end # Resolve each field with fallback hierarchy: attributes → fallback_guest → saved_guest age_group = if attributes.key?(:age_group) attributes[:age_group].presence elsif fallback_guest&.age_group.present? fallback_guest.age_group elsif saved_guest&.age_group.present? saved_guest.age_group end nationality_id = if attributes.key?(:nationality_id) attributes[:nationality_id].present? ? attributes[:nationality_id].to_i : nil elsif fallback_guest&.nationality&.id.present? fallback_guest.nationality.id elsif saved_guest&.nationality&.id.present? saved_guest.nationality.id end nationality_group = if attributes.key?(:nationality_group) attributes[:nationality_group].presence elsif fallback_guest&.nationality_group.present? fallback_guest.nationality_group elsif saved_guest&.nationality_group.present? saved_guest.nationality_group end new( id: id, saved_guest_id: saved_guest_id, age_group: age_group, nationality_id: nationality_id, nationality_group: nationality_group, line_item_id: line_item_id ) end |