Class: Spree::Api::V2::Storefront::LineItemsController

Inherits:
ResourceController
  • Object
show all
Defined in:
app/controllers/spree/api/v2/storefront/line_items_controller.rb

Instance Method Summary collapse

Instance Method Details

#allowed_sort_attributes ⇒ Object



43
44
45
46
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 43

def allowed_sort_attributes
  super << :to_date
  super << :from_date
end

#collection ⇒ Object



6
7
8
9
10
11
12
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 6

def collection
  if spree_current_user.nil?
    line_items_by_order_tokens
  else
    spree_current_user.line_items.filter_by_event(params[:event])
  end
end

#collection_serializer ⇒ Object



52
53
54
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 52

def collection_serializer
  Spree::V2::Storefront::LineItemSerializer
end

#line_items_by_order_tokens ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 56

def line_items_by_order_tokens
  order_tokens = params[:order_tokens]
  event = params[:event]

  return Spree::LineItem.none if order_tokens.blank?

  Spree::LineItem.joins(:order)
                 .where(spree_orders: { token: order_tokens, state: 'complete', user_id: nil })
                 .includes(:guests, :saved_guests)
                 .filter_by_event(event)
                 .page(params[:page])
                 .per(params[:per_page])
end

#resource_serializer ⇒ Object



48
49
50
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 48

def resource_serializer
  Spree::V2::Storefront::LineItemSerializer
end

#show ⇒ Object



14
15
16
17
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 14

def show
  line_item = Spree::LineItem.find(params[:id])
  render_serialized_payload { serialize_resource(line_item) }
end

#try_mark_as_completed ⇒ Object

PATCH /api/v2/storefront/line_items/1/try_mark_as_completed?order_token=:order_token&position=:position Attempts to mark a line item completion step as completed based on provided position.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/controllers/spree/api/v2/storefront/line_items_controller.rb', line 21

def try_mark_as_completed
  scope = if spree_current_user.nil?
            Spree::LineItem.joins(:order).where(spree_orders: { token: params[:order_token] })
          else
            spree_current_user.line_items
          end

  line_item = scope.find(params[:id])
  step_position = params.fetch(:position, 1).to_i

  result = SpreeCmCommissioner::CompletionSteps::MarkLineItemAsCompleted.call(
    line_item: line_item,
    position: step_position
  )

  if result.success?
    render_serialized_payload { serialize_resource(result.value) }
  else
    render_error_payload(result.error)
  end
end