8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'app/services/spree/orders/create_user_account.rb', line 8
def call(order:, accepts_email_marketing: false)
existing_user = Spree.user_class.find_by(email: order.email)
if existing_user.present?
order.update_columns(user_id: existing_user.id, updated_at: Time.current)
order.user = existing_user
return success(existing_user)
end
user = create_new_user(order, accepts_email_marketing)
return failure(:user_creation_failed) unless user.persisted?
assign_ship_address(order, user)
assign_bill_address(order, user)
order.update_columns(user_id: user.id, updated_at: Time.current)
order.user = user
user.send_welcome_email if user.respond_to?(:send_welcome_email)
success(user.reload)
end
|