Module: Spree::V2::Storefront::OrderSerializerDecorator
- Defined in:
- app/serializers/spree/v2/storefront/order_serializer_decorator.rb
Class Method Summary collapse
- .all_guest_info_complete?(order) ⇒ Boolean
- .can_mark_complete?(order) ⇒ Boolean
- .event_ended?(order) ⇒ Boolean
- .event_ended_for_line_item?(line_item) ⇒ Boolean
- .guest_complete?(guest) ⇒ Boolean
- .guest_incomplete?(guest) ⇒ Boolean
- .line_item_guests_complete?(line_item) ⇒ Boolean
- .order_has_incomplete_guests?(order) ⇒ Boolean
- .prepended(base) ⇒ Object
Class Method Details
.all_guest_info_complete?(order) ⇒ Boolean
45 46 47 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 45 def self.all_guest_info_complete?(order) order.line_items.all? { |line_item| line_item_guests_complete?(line_item) } end |
.can_mark_complete?(order) ⇒ Boolean
32 33 34 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 32 def self.can_mark_complete?(order) event_ended?(order) || all_guest_info_complete?(order) end |
.event_ended?(order) ⇒ Boolean
36 37 38 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 36 def self.event_ended?(order) order.line_items.any? { |line_item| event_ended_for_line_item?(line_item) } end |
.event_ended_for_line_item?(line_item) ⇒ Boolean
40 41 42 43 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 40 def self.event_ended_for_line_item?(line_item) event = line_item.event event&.to_date.present? && event.to_date < Time.zone.today end |
.guest_complete?(guest) ⇒ Boolean
53 54 55 56 57 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 53 def self.guest_complete?(guest) guest.pre_registration_completed? && (!guest.post_registration_fields? || guest.post_registration_completed?) && (!guest.during_check_in_fields? || guest.check_in_completed?) end |
.guest_incomplete?(guest) ⇒ Boolean
26 27 28 29 30 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 26 def self.guest_incomplete?(guest) (guest.pre_registration_fields? && !guest.pre_registration_completed?) || (guest.post_registration_fields? && !guest.post_registration_completed?) || (guest.during_check_in_fields? && !guest.check_in_completed?) end |
.line_item_guests_complete?(line_item) ⇒ Boolean
49 50 51 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 49 def self.line_item_guests_complete?(line_item) line_item.guests.all? { |guest| guest_complete?(guest) } end |
.order_has_incomplete_guests?(order) ⇒ Boolean
18 19 20 21 22 23 24 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 18 def self.order_has_incomplete_guests?(order) order.line_items.any? do |line_item| line_item.guests.any? do |guest| guest_incomplete?(guest) end end end |
.prepended(base) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'app/serializers/spree/v2/storefront/order_serializer_decorator.rb', line 5 def self.prepended(base) base.attribute :has_incomplete_guest_info do |order| order.user&.&.[]('has_incomplete_guest_info') || false end base.attribute :guest_info_status do |order| { incomplete: order_has_incomplete_guests?(order), can_mark_complete: can_mark_complete?(order) } end end |