class Origami::AddordersController < ApplicationController#BaseOrigamiController # before_action :set_dining, only: [:detail] def index @tables = Table.all.active.order('zone_id asc').group("zone_id") @rooms = Room.all.active.order('zone_id asc').group("zone_id") @all_table = Table.all.active.order('status desc') @all_room = Room.all.active.order('status desc') end def detail @menu = MenuCategory.all.active @table_id = params[:id] @table = DiningFacility.find(@table_id) @booking = @table.get_booking if @booking @booking_id = @booking.booking_id @order_items = Array.new @booking.booking_orders.each do |booking_order| order = Order.find(booking_order.order_id) if (order.status == "new") @obj_order = order @customer = order.customer @date = order.created_at order.order_items.each do |item| @order_items.push(item) end end end else @booking = nil end end def get_menu_category () if (params[:id]) puts params[:id] #Pull this menu @menu = MenuCategory.find_by_id(params[:id]) # puts @menu.menu_items[1].item_attributes.to_json return @menu else MenuCategory.current_menu end end def get_all_product() @product = Product.all end def create Rails.logger.debug "Order Source - " + params[:order_source].to_s Rails.logger.debug "Table ID - " + params[:table_id].to_s puts params[:order_items] items_arr = [] JSON.parse(params[:order_items]).each { |i| items = {"order_item_id": i["order_item_id"],"item_instance_code": i["item_instance_code"],"quantity": i["quantity"],"options": i["options"]} items_arr.push(items) } # begin @order = Order.new @order.source = params[:order_source] @order.order_type = params[:order_type] @order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile @order.items = items_arr @order.guest = params[:guest_info] @order.table_id = params[:table_id] # this is dining facilities's id @order.new_booking = true @order.waiters = current_login_employee.name @order.employee_name = current_login_employee.name #Create Table Booking or Room Booking if !params["booking_id"].nil? # check booking id is already completed. booking = Booking.find(params[:booking_id]) if booking if booking.dining_facility_id.to_i == params[:table_id].to_i && booking.booking_status != 'moved' if !booking.sale_id.nil? sale_status = check_order_with_booking(booking) # puts "WWwwWWWWWWww" # puts sale_status if sale_status return return_json_status_with_code(400, "bill requested") end else @order.new_booking = false @order.booking_id = params[:booking_id] end else sale_status = check_order_with_table(params[:table_id]) # puts "OOOOOOOOO" # puts sale_status if sale_status return return_json_status_with_code(400, "bill requested") end end end #booking exists else sale_status = check_order_with_table(params[:table_id]) # puts "MMMMMMMM" # puts sale_status if sale_status # return false , @message = "bill requested" return return_json_status_with_code(400, "bill requested") end end @status, @booking = @order.generate end # render json for http status code def return_json_status_with_code(code, msg) render status: code, json: { message: msg, booking_id: booking_id }.to_json end def check_order_with_table(table_id) table = DiningFacility.find(table_id) if table booking = table.get_current_booking # puts booking if booking if !booking.sale_id.nil? if booking.sale.sale_status == "completed" || booking.sale.sale_status == "new" @order.new_booking = true return false end else @order.new_booking = false @order.booking_id = booking.booking_id return false end end end end # this can always true def check_order_with_booking(booking) if booking.sale.sale_status == "completed" || booking.sale.sale_status == "new" @order.new_booking = true return false else @order.new_booking = false @order.booking_id = params[:booking_id] return false end end private # def set_dining # @dining = DiningFacility.find(params[:id]) # end end