Class: Spree::Cart::Create

Inherits:
Object
  • Object
show all
Includes:
ServiceModule::Base
Defined in:
app/services/spree/cart/create.rb

Instance Method Summary collapse

Methods included from ServiceModule::Base

prepended

Instance Method Details

#call(user:, store:, currency:, public_metadata: {}, private_metadata: {}, order_params: {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/services/spree/cart/create.rb', line 6

def call(user:, store:, currency:, public_metadata: {}, private_metadata: {}, order_params: {})
  order_params ||= {}

  # we cannot create an order without store
  return failure(:store_is_required) if store.nil?

  default_params = {
    user: user,
    currency: currency || store.default_currency,
    token: Spree::GenerateToken.new.call(Spree::Order),
    public_metadata: .to_h,
    private_metadata: .to_h
  }

  order = store.orders.create!(default_params.merge(order_params))
  success(order)
end