Files
openfoodnetwork/app/helpers/enterprises_helper.rb
2024-06-11 15:17:32 +10:00

98 lines
2.6 KiB
Ruby

# frozen_string_literal: true
module EnterprisesHelper
def current_distributor
@current_distributor ||= current_order(false)&.distributor
end
def current_customer
return nil unless spree_current_user && current_distributor
@current_customer ||= spree_current_user.customer_of(current_distributor)
end
def available_shipping_methods
Orders::AvailableShippingMethodsService.new(current_order, current_customer).to_a
end
def available_payment_methods
Orders::AvailablePaymentMethodsService.new(current_order, current_customer).to_a
end
def managed_enterprises
Enterprise.managed_by(spree_current_user)
end
def editable_enterprises
OpenFoodNetwork::Permissions.new(spree_current_user).
editable_enterprises.
order('is_primary_producer ASC, name')
end
def enterprises_options(enterprises)
enterprises.map { |enterprise|
["#{enterprise.name}: #{enterprise.address.address1}, #{enterprise.address.city}",
enterprise.id.to_i]
}
end
def enterprises_to_names(enterprises)
enterprises.map(&:name).sort.join(', ')
end
def enterprise_type_name(enterprise)
if enterprise.sells == 'none'
enterprise.producer_profile_only ? I18n.t(:profile) : I18n.t(:supplier_only)
else
I18n.t(:has_shopfront)
end
end
def enterprise_confirm_delete_message(enterprise)
if enterprise.supplied_products.present?
I18n.t(:enterprise_confirm_delete_message,
product: pluralize(enterprise.supplied_products.count, 'product'))
else
t(:are_you_sure)
end
end
# Copied and modified from Spree's link_to_delete, which does not
# allow customisation of the confirm message
def link_to_delete_enterprise(enterprise)
url = object_url(enterprise)
name = t(:delete)
options = {}
options[:class] = "delete-resource"
options[:data] = { action: 'remove', confirm: enterprise_confirm_delete_message(enterprise) }
link_to_with_icon 'icon-trash', name, url, options
end
def order_changes_allowed?
current_order&.distributor&.allow_order_changes?
end
def show_bought_items?
order_changes_allowed? && current_order.finalised_line_items.present?
end
def subscriptions_enabled?
spree_current_user.admin? ||
spree_current_user.enterprises.where(enable_subscriptions: true).any?
end
def enterprise_url_selector(enterprise)
if enterprise.is_distributor
main_app.enterprise_shop_url(enterprise)
else
main_app.producers_url
end
end
def main_logo_link(enterprise)
return enterprise.white_label_logo_link if enterprise&.white_label_logo_link.present?
main_app.root_path
end
end