Class: Api::V5::FavoriteRestaurantsController

Inherits:
BaseController
  • Object
show all
Includes:
Concerns::Authorization
Defined in:
app/controllers/api/v5/favorite_restaurants_controller.rb

Overview

typed: ignore frozen_string_literal: true

Constant Summary

Constants inherited from BaseController

BaseController::CACHE_NAMESPACE, BaseController::INTERNAL_SERVER_ERROR_MESSAGE, BaseController::ResponseSchema

Instance Method Summary collapse

Methods inherited from BaseController

#identity_cache_memoization

Methods included from LogrageCustomLogger

#append_info_to_payload

Methods included from ResponseCacheConcern

#my_response_cache

Instance Method Details

#indexObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/controllers/api/v5/favorite_restaurants_controller.rb', line 8

def index
  page = params.fetch(:page, {})
  filter = Api::V5::RestaurantsFilter.new(service.index)
  filter.by_user_favorite_restaurants(current_user.id)
  filter.page_number(page.fetch(:number, 1)).per_page(page.fetch(:size, 10))
  includes = []
  includes.push('pictures') if params.key?(:include_pictures) && params[:include_pictures].to_s == 'true'
  includes.push('restaurant_packages') if params.key?(:include_packages) && params[:include_packages].to_s == 'true'
  options = {
    include: includes,
    preview_mode: params[:preview_mode] == 'true',
    user: current_user
  }
  json = filter.as_json(serialization_context, minor_version_param, options).merge(success: true, message: nil)
  render json: json
end

#toggleObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/controllers/api/v5/favorite_restaurants_controller.rb', line 25

def toggle
  restaurant_id = params.require(:restaurant_id)
  result = { success: true, data: nil }
  includes = []
  includes.push('pictures') if params.key?(:include_pictures) && params[:include_pictures].to_s == 'true'
  includes.push('restaurant_packages') if params.key?(:include_packages) && params[:include_packages].to_s == 'true'
  options = {
    include: includes,
    preview_mode: params[:preview_mode] == 'true',
    user: current_user
  }
  if service.toggle restaurant_id
    restaurant = Restaurant.fetch restaurant_id
    result[:message] = service.toggle_message
    result.merge!(resource_as_json(restaurant, Api::V5::RestaurantSerializer, options))
  else
    result[:success] = false
    result[:message] = service.error.full_messages.to_sentence
  end
  render json: result
end