mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-13 04:00:21 +00:00
We need to separate some of these bits to make them easier to call in different contexts. Also there's some weird stuff happening here with the controller being passed in to the service, and it seems like a code smell to me...
37 lines
1.1 KiB
Ruby
37 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Executes actions after checkout
|
|
module Checkout
|
|
class PostCheckoutActions
|
|
def initialize(order)
|
|
@order = order
|
|
end
|
|
|
|
def success(params, current_user)
|
|
set_customer_terms_and_conditions_accepted_at(params)
|
|
save_order_addresses_as_user_default(params, current_user)
|
|
end
|
|
|
|
def failure
|
|
@order.updater.shipping_address_from_distributor
|
|
OrderCheckoutRestart.new(@order).call
|
|
end
|
|
|
|
private
|
|
|
|
def save_order_addresses_as_user_default(params, current_user)
|
|
return unless params[:order]
|
|
|
|
user_default_address_setter = UserDefaultAddressSetter.new(@order, current_user)
|
|
user_default_address_setter.set_default_bill_address if params[:order][:default_bill_address]
|
|
user_default_address_setter.set_default_ship_address if params[:order][:default_ship_address]
|
|
end
|
|
|
|
def set_customer_terms_and_conditions_accepted_at(params)
|
|
return unless params[:order]
|
|
|
|
@order.customer.update(terms_and_conditions_accepted_at: Time.zone.now) if params[:order][:terms_and_conditions_accepted]
|
|
end
|
|
end
|
|
end
|