mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
56 lines
1.4 KiB
Ruby
56 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Admin
|
|
class ReportsController < Spree::Admin::BaseController
|
|
include ReportsActions
|
|
helper ReportsHelper
|
|
|
|
before_action :authorize_report
|
|
|
|
def show
|
|
render_report && return if ransack_params.blank?
|
|
|
|
@report = report_class.new(spree_current_user, ransack_params, report_options)
|
|
|
|
if report_format.present?
|
|
export_report
|
|
else
|
|
render_report
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def export_report
|
|
send_data @report.public_send("to_#{report_format}"), filename: report_filename
|
|
end
|
|
|
|
def render_report
|
|
assign_view_data
|
|
load_form_options
|
|
render "show"
|
|
end
|
|
|
|
def assign_view_data
|
|
@report_type = report_type
|
|
@report_subtype = report_subtype || report_loader.default_report_subtype
|
|
@report_subtypes = report_class.report_subtypes.map do |subtype|
|
|
[t("packing.#{subtype}_report", scope: i18n_scope), subtype]
|
|
end
|
|
if @report_type == "packing"
|
|
@report_message = I18n.t("spree.admin.reports.customer_names_message.customer_names_tip")
|
|
end
|
|
end
|
|
|
|
def load_form_options
|
|
return unless form_options_required?
|
|
|
|
form_options = Reporting::FrontendData.new(spree_current_user)
|
|
|
|
@distributors = form_options.distributors.to_a
|
|
@suppliers = form_options.suppliers.to_a
|
|
@order_cycles = form_options.order_cycles.to_a
|
|
end
|
|
end
|
|
end
|