Module: Spree::V2::Storefront::OrderSerializerDecorator

Defined in:
app/serializers/spree/v2/storefront/order_serializer_decorator.rb

Class Method Summary collapse

Class Method Details

.all_guest_info_complete?(order) ⇒ Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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