mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-05 22:26:07 +00:00
38 lines
1.0 KiB
Ruby
38 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module OrderCompletion
|
|
extend ActiveSupport::Concern
|
|
|
|
def order_completion_reset(order)
|
|
distributor = order.distributor
|
|
token = order.token
|
|
|
|
expire_current_order
|
|
build_new_order(distributor, token)
|
|
|
|
session[:access_token] = current_order.token
|
|
flash[:notice] = t(:order_processed_successfully)
|
|
end
|
|
|
|
private
|
|
|
|
# Clears the cached order. Required for #current_order to return a new order to serve as cart.
|
|
# See https://github.com/spree/spree/blob/1-3-stable/core/lib/spree/core/controller_helpers/order.rb#L14
|
|
def expire_current_order
|
|
session[:order_id] = nil
|
|
@current_order = nil
|
|
end
|
|
|
|
# Builds an order setting the token and distributor of the one specified
|
|
def build_new_order(distributor, token)
|
|
new_order = current_order(true)
|
|
new_order.set_distributor!(distributor)
|
|
new_order.tokenized_permission.token = token
|
|
new_order.tokenized_permission.save!
|
|
end
|
|
|
|
def order_completion_route(order)
|
|
main_app.order_path(order, order_token: order.token)
|
|
end
|
|
end
|