Files
mozo-backend/app/controllers/suppliers/lists_controller.rb
T
2015-09-21 15:22:43 +02:00

164 lines
4.9 KiB
Ruby

module Suppliers
class ListsController < Suppliers::ApplicationController
# GET /lists
# GET /lists.json
def index
if params[:state] == 'active'
@lists = List.active_for_supplier(current_supplier, page: params[:page], per_page: params[:per_page] || 25)
elsif params[:date].present?
@date = params[:date].present? ? (Date.parse(params[:date]) rescue Date.today) : Date.today
@time = @date.to_time(:utc)
@start_time = @time.beginning_of_day
@end_time = @time.end_of_day
if current_supplier.night_offset.present?
@start_time += current_supplier.night_offset.to_f.hours
@end_time += current_supplier.night_offset.to_f.hours
end
@lists = List.for_supplier_created_at current_supplier, @start_time..@end_time
#@lists.include_relation(:table) # for number
else
@lists = List.for_supplier(current_supplier, page: params[:page], per_page: params[:per_page] || 25)
end
@lists.include_relation(:table, :users, orders: {user: nil, product_orders: :product})
render json: @lists, include: %w[
orders
orders.user
orders.product_orders
users
]
end
def active
@lists = List.active_for_supplier(current_supplier)
@lists.include_relation(:table) # for number
respond_to do |format|
format.html # index.html.erb
format.json { render json: @lists }
end
end
def at_date
@date = params[:date].present? ? (Date.parse(params[:date]) rescue Date.today) : Date.today
@time = @date.to_time(:utc)
@start_time = @time.beginning_of_day
@end_time = @time.end_of_day
if current_supplier.night_offset.present?
@start_time += current_supplier.night_offset.to_f.hours
@end_time += current_supplier.night_offset.to_f.hours
end
@lists = List.for_supplier_created_at current_supplier, @start_time..@end_time
@lists.include_relation(:table) # for number
render json: @lists, include: %w[table]
end
# GET /lists/1
# GET /lists/1.json
def show
@list = List.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
render json: @list
end
# GET /lists/1/extra_info
# GET /lists/1/extra_info.json
def extra_info
@list = List.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
render layout: false
end
# GET /lists/new
# GET /lists/new.json
def new
@list = List.new
@list.section_id = params[:section_id].presence
@tables = current_supplier.active_tables
render json: @list
end
# POST /lists
# POST /lists.json
def create
@list = List.new(list_params)
@list.supplier = current_supplier
if @list.save
render json: @list
else
render json: {errors: @list.errors}, status: :unprocessable_entity
end
end
# GET /lists/1/edit
def edit
@list = List.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
@tables = current_supplier.active_tables
end
# PUT /lists/1
# PUT /lists/1.json
def update
@list = List.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
if @list.update_attributes(list_params)
render json: @list
else
render json: {errors: @list.errors}, status: :unprocessable_entity
end
end
# DELETE /lists/1
# DELETE /lists/1.json
def destroy
@list = List.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
@list.destroy
head :no_content
end
# POST /supplier/lists/1/close
def close
@list = List.find_by_supplier_id_and_id(current_supplier.id, params[:id])
@list.close!
head :no_content
end
# POST /supplier/lists/1/mark_helped
def mark_helped
@list = List.find_by_supplier_id_and_id(current_supplier.id, params[:id])
@list.mark_helped!
head :no_content
end
def remove_needs_payment
@list = List.find_by_supplier_id_and_id(current_supplier.id, params[:id])
@list.remove_needs_payment!
head :no_content
end
# POST /list/:id/change_table?to_table=:table_id
def change_table
res = {}
status = 200
@list = List.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
@table = Table.find(params[:table_id])
res[:table_is_from_other_supplier] = true unless @table.supplier_id == @list.supplier_id
res[:table_occupied] = true if @table.occupied?
unless res[:table_is_from_other_supplier] or res[:table_occupied]
res[:ok] = true
@list.move_to_table! @table
else
res[:ok] = false
end
render json: res
end
private
def list_params
params.require(:list).permit(:state, :needs_help, :needs_payment, :closed_at, :join_requests, :price, :is_paid, :paid_at, :table_id, :section_id)
end
end
end