Files
openfoodnetwork/app/controllers/admin/enterprise_groups_controller.rb
Matt-Yorkley 1d5077061e Remove andand
This old gem implemented some functionality for handling nils which is no longer needed, as it's provided natively by Ruby with the &. operator.
2021-09-08 14:28:31 +01:00

69 lines
1.9 KiB
Ruby

# frozen_string_literal: true
module Admin
class EnterpriseGroupsController < Admin::ResourceController
before_action :load_data, except: :index
before_action :load_object_data, only: [:new, :edit, :create, :update]
def index
@enterprise_groups = @enterprise_groups.managed_by(spree_current_user)
end
def move_up
EnterpriseGroup.with_isolation_level_serializable do
@enterprise_group = find_resource
@enterprise_group.move_higher
end
redirect_to main_app.admin_enterprise_groups_path
end
def move_down
EnterpriseGroup.with_isolation_level_serializable do
@enterprise_group = find_resource
@enterprise_group.move_lower
end
redirect_to main_app.admin_enterprise_groups_path
end
protected
def build_resource
enterprise_group = super
enterprise_group.address = Spree::Address.new
enterprise_group.address.country = DefaultCountry.country
enterprise_group
end
# Overriding method on Spree's resource controller,
# so that resources are found using permalink.
# The ! version is important to raise a RecordNotFound error.
def find_resource
permalink = params[:id] || params[:enterprise_group_id]
EnterpriseGroup.find_by!(permalink: permalink)
end
private
def load_data
@countries = Spree::Country.order(:name)
@enterprises = Enterprise.activated
end
def load_object_data
@owner_email = @enterprise_group&.owner&.email || ""
end
def collection
EnterpriseGroup.by_position
end
def permitted_resource_params
params.require(:enterprise_group).permit(
:name, :description, :long_description, :logo, :promo_image, :on_front_page,
:owner_id, :permalink, :email, :website, :facebook, :instagram, :linkedin, :twitter,
enterprise_ids: [], address_attributes: PermittedAttributes::Address.attributes
)
end
end
end