Class: Spree::Api::V2::Tenant::DraftOrdersController

Inherits:
BaseController
  • Object
show all
Includes:
SpreeCmCommissioner::AnonymousBookingGuard
Defined in:
app/controllers/spree/api/v2/tenant/draft_orders_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#current_vendor, #render_serialized_payload, #require_tenant, #scope

Instance Method Details

#createObject

Creates a generic draft order from a locally-assembled cart in a single request. Endpoint: POST /api/v2/tenant/draft_orders Params:

  • line_items: Array of { variant_id:, quantity:, options: {}, public_metadata: {}, private_metadata: {} } (required)
  • st: private sale token granting this order the product's locked stock (optional).


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/controllers/spree/api/v2/tenant/draft_orders_controller.rb', line 15

def create
  result = SpreeCmCommissioner::DraftOrders::Create.call(
    line_items: draft_order_line_items,
    user: spree_current_user,
    store: current_store,
    currency: current_currency,
    tenant: @tenant,
    options: {
      device_id: params[:device_id],
      last_ip_address: request.remote_ip,
      private_sale_token: params[:st]
    }
  )

  if result.success?
    render_serialized_payload { serialize_resource(serializable_order(result.value[:order])) }
  else
    render_error_payload(result.error)
  end
end