6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'app/services/spree/carts/create.rb', line 6
def call(params: {})
@params = params.to_h.deep_symbolize_keys
store = @params.delete(:store)
return failure(:store_is_required) if store.nil?
cart = store.carts.create!(
user: @params.delete(:user),
market: @params.delete(:market) || Spree::Current.market,
currency: @params.delete(:currency) || store.default_currency,
locale: @params.delete(:locale) || Spree::Current.locale
)
if @params.present?
result = Spree::Carts::Update.call(cart: cart, params: @params)
return result if result.failure?
end
success(cart.reload)
rescue ActiveRecord::RecordNotFound
raise
rescue StandardError => e
failure(nil, e.message)
end
|