mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-30 21:27:17 +00:00
63 lines
1.0 KiB
Ruby
63 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ReportsActions
|
|
extend ActiveSupport::Concern
|
|
|
|
private
|
|
|
|
def authorize_report
|
|
authorize! report_type&.to_sym, :report
|
|
end
|
|
|
|
def report_class
|
|
return if report_type.blank?
|
|
|
|
report_loader.report_class
|
|
end
|
|
|
|
def report_loader
|
|
@report_loader ||= ::Reporting::ReportLoader.new(report_type, report_subtype)
|
|
end
|
|
|
|
def report_type
|
|
params[:report_type]
|
|
end
|
|
|
|
def report_subtype
|
|
params[:report_subtype]
|
|
end
|
|
|
|
def ransack_params
|
|
raw_params[:q]
|
|
end
|
|
|
|
def report_options
|
|
raw_params[:options]
|
|
end
|
|
|
|
def report_format
|
|
params[:report_format]
|
|
end
|
|
|
|
def export_spreadsheet?
|
|
['xlsx', 'ods', 'csv'].include?(report_format)
|
|
end
|
|
|
|
def form_options_required?
|
|
[:packing, :customers, :products_and_inventory, :order_cycle_management].
|
|
include? report_type.to_sym
|
|
end
|
|
|
|
def report_filename
|
|
"#{report_type || action_name}_#{file_timestamp}.#{report_format}"
|
|
end
|
|
|
|
def file_timestamp
|
|
Time.zone.now.strftime("%Y%m%d")
|
|
end
|
|
|
|
def i18n_scope
|
|
'admin.reports'
|
|
end
|
|
end
|