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