class Origami::QuickServiceController < ApplicationController # before_action :set_dining, only: [:detail] before_action :check_user def check_user if current_user.nil? redirect_to root_path end end def index today = DateTime.now day = Date.today.wday # if params[:menu] == "true" @menus = [] @menu = [] # else # @menus = Menu.all # @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc') # end @zone = Zone.all @customer = Customer.all @tables = Table.all.active.order('status desc') @rooms = Room.all.active.order('status desc') @cashier_type = "quick_service" display_type = Lookup.find_by_lookup_type("display_type") if !display_type.nil? && display_type.value.to_i ==2 @display_type = display_type.value else @display_type = nil end #checked quick_service only @quick_service_only = true lookup_dine_in = Lookup.collection_of('dinein_cashier') if !lookup_dine_in.empty? lookup_dine_in.each do |dine_in| if dine_in[0].downcase == "dineincashier" if dine_in[1] == '1' @quick_service_only = false end end end end render "origami/addorders/detail" end def modify_order @cashier_type = "quick_service" today = DateTime.now day = Date.today.wday # if params[:menu] == "true" @menus = [] @menu = [] # else # @menus = Menu.all # @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc') # end if(params[:id][0,3] == "BKI") @table_id = nil @table = nil @booking = Booking.find(params[:id]) else @table_id = params[:id] @table = DiningFacility.find(@table_id) @booking = @table.get_booking end @sale_id = params[:sale_id] 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 render "origami/addorders/detail" end def update_modify_order Rails.logger.debug "Order Source - " + params[:order_source].to_s Rails.logger.debug "Table ID - " + params[:table_id].to_s is_extra_time = false extra_time = '' @cashier_type = "quick_service" items_arr = [] JSON.parse(params[:order_items]).each { |i| i["item_instance_code"] = i["item_instance_code"].downcase.to_s if i["item_instance_code"].include? "ext" is_extra_time = true arr_exts = i["item_instance_code"].split("_") if arr_exts[1].match(/^(\d)+$/) time = arr_exts[1].to_i*60*i["quantity"].to_i extra_time = Time.at(time) end end if i["parent_order_item_id"] items = {"order_item_id": i["order_item_id"],"item_instance_code": i["item_instance_code"],"quantity": i["quantity"],"parent_order_item_id": i["parent_order_item_id"],"options": i["options"]} else items = {"order_item_id": i["order_item_id"],"item_instance_code": i["item_instance_code"],"quantity": i["quantity"],"options": i["options"]} end 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 @order.is_extra_time = is_extra_time @order.extra_time = extra_time #Create Table Booking or Room Booking if !params["booking_id"].nil? # check booking id is already completed. booking = Booking.find(params[:booking_id]) if params[:table_id].to_i > 0 table_status = booking.dining_facility_id.to_i == params[:table_id].to_i else table_status = true end if booking if table_status && booking.booking_status != 'moved' if !booking.sale_id.nil? sale_status = check_order_with_booking(booking) 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 if params[:table_id].to_i > 0 sale_status = check_order_with_table(params[:table_id]) if sale_status return return_json_status_with_code(400, "bill requested") end end end end #booking exists else if params[:table_id].to_i > 0 sale_status = check_order_with_table(params[:table_id]) if sale_status # return false , @message = "bill requested" return return_json_status_with_code(400, "bill requested") end end end @status, @booking = @order.generate if(params[:sale_id][0,3] == "SAL") if @status && @booking && @order.source == 'quick_service' if params[:sale_id] @sale = Sale.find(params[:sale_id]) if @order.table_id.to_i > 0 @table_id = @order.table_id else @table_id = nil end update = Sale.add_to_existing_pending_invoice(@table_id,params[:sale_id],@booking) end result = {:status=> true, :data => @sale } render :json => result.to_json end elsif (params[:sale_id][0,3] == "BKI") result = {:status=> true, :data => 'OK' } render :json => result.to_json else result = {:status=> true, :data => nil } render :json => result.to_json 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_menu_sub_category () id = params[:id] if (id) #Pull this menu @sub_menu = MenuCategory.where("menu_category_id = #{id}").active # puts @menu.menu_items[1].item_attributes.to_json return @sub_menu end end def get_all_product() @product = Product.all 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 def check_user if current_user.nil? redirect_to root_path 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 end