77 lines
2.9 KiB
Ruby
77 lines
2.9 KiB
Ruby
module Users
|
|
class TablesController < Users::ApplicationController
|
|
respond_to :json
|
|
def show
|
|
@table = Table.find(params[:id])
|
|
render json: JSONAPI::Serializer.serialize(@table, serializer: Users::TableSerializer)
|
|
end
|
|
|
|
def supplier
|
|
table = Table.find(params[:id])
|
|
supplier = table.supplier
|
|
supplier.product_categories.include_relations(:products)
|
|
render json: JSONAPI::Serializer.serialize(supplier, serializer: Users::SupplierSerializer, include: %w[product_categories product_categories.products product_categories.supplier])
|
|
end
|
|
|
|
# POST /tables/:id/needs_help.json
|
|
def needs_help
|
|
#@table = Table.find(params[:id])
|
|
render json: json_alert('messages.no_active_list', list_active: false) and return unless active_list.present?
|
|
active_list.needs_help!
|
|
#render json: JSONAPI::Serializer.serialize(@table, serializer: Users::TableSerializer)
|
|
render json: {}
|
|
end
|
|
|
|
# POST /user/tables/:id/join
|
|
def join
|
|
render json: json_alert('messages.table_not_found') and return unless params[:id].present?
|
|
@table = Table.find(params[:id])
|
|
if @list = @table.active_list
|
|
@list.send_table_join_request_for_user! current_user
|
|
end
|
|
head :ok
|
|
end
|
|
|
|
# GET /user/table_info.json
|
|
# used for moving table request
|
|
# TODO wrap logic of actions
|
|
# - table_info
|
|
# - move_table
|
|
# into separate class and implement security in a non stupid way as it is now
|
|
def status_info
|
|
render json: json_alert('messages.table_not_found') and return unless params[:table_id].present?
|
|
table = Table.find(params[:table_id])
|
|
res = {}
|
|
res[:occupied] = table.occupied?
|
|
res[:reserved] = table.reserved?
|
|
res[:supplier_closed] = table.supplier.closed?
|
|
res[:table] = table.attributes
|
|
if active_list.present?
|
|
res[:other_supplier] = true if active_list.supplier_id != table.supplier_id
|
|
res[:current_table_id] = active_list.table_id
|
|
res[:current_list_id] = active_list.id
|
|
end
|
|
render json: res
|
|
end
|
|
|
|
# Used by the user Ember app
|
|
# POST /user/tables/:id/order_products
|
|
def order_products
|
|
table = Table.find(params[:id])
|
|
res = {}
|
|
res[:occupied] = table.occupied?
|
|
res[:reserved] = table.reserved?
|
|
res[:supplier_closed] = table.supplier.closed?
|
|
res[:no_product_orders] = true unless product_orders = new_order_product_orders.presence
|
|
unless res[:occupied] or res[:supplier_closed] or res[:no_product_orders]
|
|
# Create new list
|
|
list = List.from_table( table, current_user )
|
|
res[:active_list_id] = list.id # used to set the active list in the app
|
|
order = list.place_order product_orders: product_orders, user: current_user, first_order: true
|
|
res[:payload] = JSONAPI::Serializer.serialize(order, serializer: Users::OrderSerializer, include: %w[list product_orders])
|
|
end
|
|
render json: res
|
|
end
|
|
end
|
|
end
|