diff --git a/app/controllers/spree/admin/reports_controller.rb b/app/controllers/spree/admin/reports_controller.rb index 7c9d415dce..159dd390c9 100644 --- a/app/controllers/spree/admin/reports_controller.rb +++ b/app/controllers/spree/admin/reports_controller.rb @@ -90,9 +90,7 @@ module Spree end def users_and_enterprises - @report = OpenFoodNetwork::UsersAndEnterprisesReport.new raw_params, render_content? - render_report(@report.header, @report.table, params[:csv], - "users_and_enterprises_#{timestamp}.csv") + render_report2 end def xero_invoices diff --git a/app/views/spree/admin/reports/filters/_users_and_enterprises.html.haml b/app/views/spree/admin/reports/filters/_users_and_enterprises.html.haml new file mode 100644 index 0000000000..f8e14cf75d --- /dev/null +++ b/app/views/spree/admin/reports/filters/_users_and_enterprises.html.haml @@ -0,0 +1,7 @@ +.row + .alpha.two.columns= label_tag nil, t(:report_enterprises) + .omega.fourteen.columns= select_tag(:enterprise_id_in, options_from_collection_for_select(Enterprise.all, :id, :name, params[:enterprise_id_in]), {class: "select2 fullwidth", multiple: true}) + +.row + .alpha.two.columns= label_tag nil, t(:report_users) + .omega.fourteen.columns= select_tag(:user_id_in, options_from_collection_for_select(Spree::User.all, :id, :email, params[:user_id_in]), {class: "select2 fullwidth", multiple: true}) \ No newline at end of file diff --git a/app/views/spree/admin/reports/users_and_enterprises.html.haml b/app/views/spree/admin/reports/users_and_enterprises.html.haml deleted file mode 100644 index 54adef9bb7..0000000000 --- a/app/views/spree/admin/reports/users_and_enterprises.html.haml +++ /dev/null @@ -1,21 +0,0 @@ -= form_tag spree.users_and_enterprises_admin_reports_url do |f| - .row - .alpha.two.columns= label_tag nil, t(:report_enterprises) - .omega.fourteen.columns= select_tag(:enterprise_id_in, options_from_collection_for_select(Enterprise.all, :id, :name, params[:enterprise_id_in]&.split(",")), {class: "select2 fullwidth", multiple: true}) - - .row - .alpha.two.columns= label_tag nil, t(:report_users) - .omega.fourteen.columns= select_tag(:user_id_in, options_from_collection_for_select(Spree::User.all, :id, :email, params[:user_id_in]&.split(",")), {class: "select2 fullwidth", multiple: true}) - - -# Might need this later if we add different kinds of reports - -# .row - -# .alpha.two.columns= label_tag nil, "Report Type: " - -# .omega.fourteen.columns= select_tag(:report_type, options_for_select(@report_types, params[:report_type])) - - .row - = check_box_tag :csv - = label_tag :csv, t(:report_customers_csv) - .row - = button t(:search) - -= render "table", id: "users_and_enterprises", msg_option: t(:search) diff --git a/lib/open_food_network/users_and_enterprises_report.rb b/lib/open_food_network/users_and_enterprises_report.rb index fc13095534..e3a3e2a619 100644 --- a/lib/open_food_network/users_and_enterprises_report.rb +++ b/lib/open_food_network/users_and_enterprises_report.rb @@ -4,7 +4,8 @@ module OpenFoodNetwork class UsersAndEnterprisesReport attr_reader :params - def initialize(params = {}, compile_table = false) + def initialize(user, params = {}, compile_table = false) + @user = user @params = params @compile_table = compile_table @@ -15,7 +16,7 @@ module OpenFoodNetwork @params[:user_id_in] = @params[:user_id_in].join(',') if @params[:user_id_in].is_a? Array end - def header + def table_headers [ I18n.t(:report_header_user), I18n.t(:report_header_relationship), @@ -27,7 +28,7 @@ module OpenFoodNetwork ] end - def table + def table_rows return [] unless @compile_table users_and_enterprises.map do |uae| diff --git a/spec/controllers/spree/admin/reports_controller_spec.rb b/spec/controllers/spree/admin/reports_controller_spec.rb index 063ce9d770..48af5f02fe 100644 --- a/spec/controllers/spree/admin/reports_controller_spec.rb +++ b/spec/controllers/spree/admin/reports_controller_spec.rb @@ -328,12 +328,12 @@ describe Spree::Admin::ReportsController, type: :controller do it "shows report search forms" do spree_get :users_and_enterprises - expect(assigns(:report).table).to eq [] + expect(assigns(:report).table_rows).to eq [] end it "shows report data" do spree_post :users_and_enterprises, q: {} - expect(assigns(:report).table.empty?).to be false + expect(assigns(:report).table_rows.empty?).to be false end end diff --git a/spec/lib/open_food_network/users_and_enterprises_report_spec.rb b/spec/lib/open_food_network/users_and_enterprises_report_spec.rb index 7b8f827cb0..ca9b9f4a23 100644 --- a/spec/lib/open_food_network/users_and_enterprises_report_spec.rb +++ b/spec/lib/open_food_network/users_and_enterprises_report_spec.rb @@ -8,7 +8,7 @@ module OpenFoodNetwork describe "users_and_enterprises" do let!(:owners_and_enterprises) { double(:owners_and_enterprises) } let!(:managers_and_enterprises) { double(:managers_and_enterprises) } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new({}, true) } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new(nil, {}, true) } before do allow(subject).to receive(:owners_and_enterprises) { owners_and_enterprises } @@ -25,7 +25,7 @@ module OpenFoodNetwork end describe "sorting results" do - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new({}, true) } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new(nil, {}, true) } it "sorts by creation date" do uae_mock = [ @@ -69,7 +69,7 @@ module OpenFoodNetwork describe "for owners and enterprises" do describe "by enterprise id" do let!(:params) { { enterprise_id_in: [enterprise1.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true } it "excludes enterprises that are not explicitly requested" do results = subject.owners_and_enterprises.to_a.map{ |oae| oae["name"] } @@ -80,7 +80,7 @@ module OpenFoodNetwork describe "by user id" do let!(:params) { { user_id_in: [enterprise1.owner.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true } it "excludes enterprises that are not explicitly requested" do results = subject.owners_and_enterprises.to_a.map{ |oae| oae["name"] } @@ -93,7 +93,7 @@ module OpenFoodNetwork describe "for managers and enterprises" do describe "by enterprise id" do let!(:params) { { enterprise_id_in: [enterprise1.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true } it "excludes enterprises that are not explicitly requested" do results = subject.managers_and_enterprises.to_a.map{ |mae| mae["name"] } @@ -106,7 +106,7 @@ module OpenFoodNetwork let!(:manager1) { create(:user) } let!(:manager2) { create(:user) } let!(:params) { { user_id_in: [manager1.id.to_s] } } - let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new params, true } + let!(:subject) { OpenFoodNetwork::UsersAndEnterprisesReport.new nil, params, true } before do enterprise1.enterprise_roles.build(user: manager1).save diff --git a/spec/system/admin/reports_spec.rb b/spec/system/admin/reports_spec.rb index 2ee3e41bcf..98c777ef7f 100644 --- a/spec/system/admin/reports_spec.rb +++ b/spec/system/admin/reports_spec.rb @@ -347,7 +347,7 @@ describe ' end it "shows users and enterprises report" do - click_button "Search" + click_button "Go" rows = find("table.report__table").all("tr") table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] } @@ -368,7 +368,7 @@ describe ' select enterprise3.name, from: "enterprise_id_in" select enterprise1.owner.email, from: "user_id_in" - click_button "Search" + click_button "Go" rows = find("table.report__table").all("tr") table = rows.map { |r| r.all("th,td").map { |c| c.text.strip }[0..2] }