Files
openfoodnetwork/app/services/checkout/post_checkout_actions.rb
Matt-Yorkley 67b8a55273 Separate OrderCompletionReset from Checkout::PostCheckoutActions and don't pass controller objects to Checkout::PostCheckoutActions
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...
2022-01-14 19:41:08 +00:00

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