mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
98 lines
2.6 KiB
Ruby
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
|