Files
openfoodnetwork/app/controllers/enterprises_controller.rb

84 lines
2.2 KiB
Ruby

class EnterprisesController < BaseController
helper Spree::ProductsHelper
include OrderCyclesHelper
before_filter :require_distributor_chosen, only: :show
def index
@enterprises = Enterprise.all
end
def suppliers
@suppliers = Enterprise.is_primary_producer
end
def distributors
@distributors = Enterprise.is_distributor
respond_to do |format|
format.js do
@distributor_details = Hash[@distributors.map { |d| [d.id, render_to_string(:partial => 'enterprises/distributor_details', :locals => {:distributor => d})] }]
end
format.html do
@distributors
end
end
end
def show
options = {:enterprise_id => params[:id]}
options.merge(params.reject { |k,v| k == :id })
@enterprise = Enterprise.find params[:id]
@products = []
if current_order_cycle
@searcher = Spree::Config.searcher_class.new(options)
@products = @searcher.retrieve_products
order_cycle_products = current_order_cycle.products
@products.select! { |p| order_cycle_products.include? p }
end
end
def shop
distributor = Enterprise.is_distributor.find params[:id]
order = current_order(true)
if order.distributor and 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!
redirect_to main_app.enterprise_path(distributor)
end
# essentially the new 'show' action that renders non-spree view
# will need to be renamed into show once the old one is removed
def shop_front
options = {:enterprise_id => params[:id]}
options.merge(params.reject { |k,v| k == :id })
@enterprise = Enterprise.find params[:id]
@searcher = Spree::Config.searcher_class.new(options)
@products = @searcher.retrieve_products
render :layout => "landing_page"
end
def search
@suburb = Suburb.find(params[:suburb_id]) if params[:suburb_id].present?
@enterprises = Enterprise.find_near(@suburb)
@enterprises_json = @enterprises.to_gmaps4rails
render :layout => "landing_page"
end
end