Class: Api::Partner::V1::RestaurantAddOnsController

Inherits:
BaseController
  • Object
show all
Includes:
ElasticAPM::SpanHelpers
Defined in:
app/controllers/api/partner/v1/restaurant_add_ons_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#default_restaurant, #identity_cache_memoization, #render_unauthorize_action, #restaurants, #set_options

Methods included from LogrageCustomLogger

#append_info_to_payload

Methods included from ControllerHelpers

#check_boolean_param, #get_banners, #inventory_params, #reservation_params

Methods included from ResponseCacheConcern

#my_response_cache

Instance Method Details

#indexObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/controllers/api/partner/v1/restaurant_add_ons_controller.rb', line 9

def index
  filter_params = params.fetch(:filter, {})
  order_params = params.fetch(:order_by, {})

  all_add_ons = AddOns::Restaurant.includes(:add_on, add_on: :pricing).
    where(restaurant_id: restaurants.ids)

  filter = Api::Partner::RestaurantAddOnsFilter.new(all_add_ons)
  filter.order_by(order_params)
  filter.filter(filter_params) if filter_params.present?
  add_ons = filter.build_collections

  pagy, add_ons = begin
    pagy(add_ons, items: params[:per_page] || 10, page: params[:page] || 1)
  rescue Pagy::OverflowError
    params[:page] = 1
    params[:per_page] = 10
    pagy(add_ons, items: params[:per_page], page: params[:page])
  end
  options = set_options(pagy)
  render json: ::Api::Partner::RestaurantAddOnSerializer.new(add_ons, options).as_json
end