diff --git a/app/services/permissions/order.rb b/app/services/permissions/order.rb index 5e95ba92c8..cb18cc3175 100644 --- a/app/services/permissions/order.rb +++ b/app/services/permissions/order.rb @@ -2,24 +2,28 @@ require 'open_food_network/permissions' module Permissions class Order - def initialize(user) + def initialize(user, search_params = nil) @user = user @permissions = OpenFoodNetwork::Permissions.new(@user) + @search_params = search_params end # Find orders that the user can see def visible_orders - Spree::Order. + orders = Spree::Order. with_line_items_variants_and_products_outer. where(visible_orders_where_values) + orders = orders.complete.not_state(:canceled).search(search_params).result if search_orders? + orders end # Any orders that the user can edit def editable_orders - Spree::Order.where( - managed_orders_where_values. - or(coordinated_orders_where_values) - ) + orders = Spree::Order. + where(managed_orders_where_values. + or(coordinated_orders_where_values)) + orders = orders.complete.not_state(:canceled).search(search_params).result if search_orders? + orders end def visible_line_items @@ -35,6 +39,12 @@ module Permissions private + attr_reader :search_params + + def search_orders? + search_params.present? + end + def visible_orders_where_values # Grouping keeps the 2 where clauses from produced_orders_where_values inside parentheses # This way it makes the OR work between the 3 types of orders: diff --git a/lib/open_food_network/bulk_coop_report.rb b/lib/open_food_network/bulk_coop_report.rb index e4a89dbbe5..019dcddbb7 100644 --- a/lib/open_food_network/bulk_coop_report.rb +++ b/lib/open_food_network/bulk_coop_report.rb @@ -128,7 +128,7 @@ module OpenFoodNetwork def order_permissions return @order_permissions unless @order_permissions.nil? - @order_permissions = ::Permissions::Order.new(@user) + @order_permissions = ::Permissions::Order.new(@user, @params[:q]) end def report_line_items diff --git a/lib/open_food_network/order_and_distributor_report.rb b/lib/open_food_network/order_and_distributor_report.rb index 64f46f41d1..b705c0cb16 100644 --- a/lib/open_food_network/order_and_distributor_report.rb +++ b/lib/open_food_network/order_and_distributor_report.rb @@ -5,7 +5,7 @@ module OpenFoodNetwork @user = user @render_table = render_table - @permissions = ::Permissions::Order.new(user) + @permissions = ::Permissions::Order.new(user, @params[:q]) end def header diff --git a/lib/open_food_network/orders_and_fulfillments_report.rb b/lib/open_food_network/orders_and_fulfillments_report.rb index 01b2ae7617..7c3780bb55 100644 --- a/lib/open_food_network/orders_and_fulfillments_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report.rb @@ -83,7 +83,7 @@ module OpenFoodNetwork def order_permissions return @order_permissions unless @order_permissions.nil? - @order_permissions = ::Permissions::Order.new(@user) + @order_permissions = ::Permissions::Order.new(@user, options[:q]) end def report_line_items diff --git a/lib/open_food_network/packing_report.rb b/lib/open_food_network/packing_report.rb index b9f9bc7f52..cecec8cff8 100644 --- a/lib/open_food_network/packing_report.rb +++ b/lib/open_food_network/packing_report.rb @@ -128,7 +128,7 @@ module OpenFoodNetwork def order_permissions return @order_permissions unless @order_permissions.nil? - @order_permissions = ::Permissions::Order.new(@user) + @order_permissions = ::Permissions::Order.new(@user, @params[:q]) end def is_temperature_controlled?(line_item)