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_attributesObject



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

#collectionObject



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_serializerObject



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_tokensObject



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_serializerObject



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

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

#showObject



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_completedObject

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