mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
55 lines
1.5 KiB
Ruby
55 lines
1.5 KiB
Ruby
class EnterprisesController < BaseController
|
|
layout "darkswarm"
|
|
helper Spree::ProductsHelper
|
|
include OrderCyclesHelper
|
|
|
|
# These prepended filters are in the reverse order of execution
|
|
prepend_before_filter :set_order_cycles, :require_distributor_chosen, :reset_order, only: :shop
|
|
before_filter :check_stock_levels, only: :shop
|
|
|
|
before_filter :clean_permalink, only: :check_permalink
|
|
|
|
respond_to :js, only: :permalink_checker
|
|
|
|
|
|
def check_permalink
|
|
return render text: params[:permalink], status: 409 if Enterprise.find_by_permalink params[:permalink]
|
|
|
|
path = Rails.application.routes.recognize_path( "/#{ params[:permalink].to_s }" )
|
|
if path && path[:controller] == "cms_content"
|
|
render text: params[:permalink], status: 200
|
|
else
|
|
render text: params[:permalink], status: 409
|
|
end
|
|
end
|
|
|
|
|
|
private
|
|
|
|
def clean_permalink
|
|
params[:permalink] = params[:permalink].parameterize
|
|
end
|
|
|
|
def check_stock_levels
|
|
if current_order(true).insufficient_stock_lines.present?
|
|
redirect_to spree.cart_path
|
|
end
|
|
end
|
|
|
|
def reset_order
|
|
distributor = Enterprise.is_distributor.find_by_permalink(params[:id]) || Enterprise.is_distributor.find(params[:id])
|
|
order = current_order(true)
|
|
|
|
if order.distributor && order.distributor != distributor
|
|
order.empty!
|
|
order.set_order_cycle! nil
|
|
end
|
|
|
|
order.distributor = distributor
|
|
|
|
order_cycle_options = OrderCycle.active.with_distributor(distributor)
|
|
order.order_cycle = order_cycle_options.first if order_cycle_options.count == 1
|
|
order.save!
|
|
end
|
|
end
|