Files
openfoodnetwork/app/services/search_orders.rb
2025-04-13 21:35:55 +05:00

44 lines
1.0 KiB
Ruby

# frozen_string_literal: true
class SearchOrders
attr_reader :orders
def initialize(params, current_user)
@params = params
@current_user = current_user
@orders = fetch_orders
end
private
attr_reader :params, :current_user
def fetch_orders
search = search_query.
includes(:payments, :subscription, :shipments, :bill_address, :distributor, :order_cycle).
ransack(params[:q]).
result(distinct: true)
if params.dig(:q, :s)&.starts_with?("bill_address_")
search = search.select('spree_addresses.*, spree_orders.*')
end
search
end
def search_query
base_query = ::Permissions::Order.new(current_user).editable_orders.not_empty
.or(::Permissions::Order.new(current_user).editable_orders.finalized)
return base_query if params[:shipping_method_id].blank?
base_query
.joins(shipments: :shipping_rates)
.where(spree_shipping_rates: {
selected: true,
shipping_method_id: params[:shipping_method_id]
})
end
end