176 lines
8.0 KiB
Ruby
176 lines
8.0 KiB
Ruby
class Oqs::HomeController < BaseOqsController
|
|
def index
|
|
|
|
@queue_stations = OrderQueueStation.all
|
|
|
|
# Query for OQS with delivery status false
|
|
# @queue_items_details = queue_items_query(false)
|
|
|
|
# Query for OQS with delivery status true
|
|
|
|
|
|
@filter = params[:filter]
|
|
|
|
@queue_completed_item = completed_order(@filter)
|
|
if !@filter.nil?
|
|
@count = queue_items_count_query(false,@filter)
|
|
@count.each do |count|
|
|
|
|
end
|
|
end
|
|
|
|
# @queue_stations_items=Array.new
|
|
|
|
# Calculate Count for each station tab
|
|
# @queue_stations.each do |que|
|
|
# i = 0
|
|
# zone_id = 0
|
|
# @queue_items_details.each do |qid|
|
|
# dining = DiningFacility.find_by_name(qid.zone)
|
|
# que.order_queue_process_by_zones.each do |qz|
|
|
# if qid.station_id == qz.order_queue_station_id && qid.zone_id == qz.zone_id
|
|
# zone_id = qid.zone_id
|
|
# i=i+1
|
|
# end
|
|
# end
|
|
# end
|
|
# @queue_stations_items.push({:zone_id => zone_id , :station_name => que.station_name, :is_active => que.is_active , :is_ap => que.auto_print, :item_count => i })
|
|
# end
|
|
|
|
# # @queue_items_details = @queue_items_details.paginate(:per_page => 10, :page => params[:page])
|
|
# @queue_stations_items
|
|
end
|
|
|
|
# Get Order items
|
|
def get_order_items
|
|
items = []
|
|
table_name = params[:table_id]
|
|
status = params[:status]
|
|
dining = DiningFacility.find_by_name(table_name);
|
|
# oqpz = OrderQueueProcessByZone.find_by_zone_id(dining.zone_id)
|
|
# if status == ""
|
|
# AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=0").find_each do |aoi|
|
|
# oi = OrderItem.find_by_item_code(aoi.item_code)
|
|
# items.push(oi)
|
|
# end
|
|
# else
|
|
# AssignedOrderItem.where("order_queue_station_id=#{ oqpz.order_queue_station_id } AND delivery_status=1").find_each do |aoi|
|
|
# oi = OrderItem.find_by_item_code(aoi.item_code)
|
|
# items.push(oi)
|
|
# end
|
|
# end
|
|
|
|
booking = Booking.find_by_dining_facility_id(dining.id)
|
|
BookingOrder.where("booking_id='#{ booking.booking_id }'").find_each do |bo|
|
|
order=Order.find(bo.order_id)
|
|
order.order_items.each do |oi|
|
|
items.push(oi)
|
|
end
|
|
end
|
|
|
|
# booking_id = dining.get_new_booking
|
|
# BookingOrder.where("booking_id='#{ booking_id }'").find_each do |bo|
|
|
# order=Order.find(bo.order_id);
|
|
# order.order_items.each do |oi|
|
|
# items.push(oi)
|
|
# end
|
|
# end
|
|
|
|
render :json => items.to_json
|
|
end
|
|
|
|
def get_items_by_oqs
|
|
oqs_id = params[:id]
|
|
filter = params[:filter]
|
|
items = queue_items_query(false,oqs_id,filter)
|
|
render :json => items.to_json
|
|
end
|
|
|
|
def show
|
|
end
|
|
|
|
# update delivery status when complete click
|
|
def update_delivery_status
|
|
removed_item = []
|
|
assigned_item_id = params[:id]
|
|
assigned_item=AssignedOrderItem.find(assigned_item_id)
|
|
assigned_items=AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'");
|
|
|
|
# update delivery status for completed same order items
|
|
assigned_items.each do |ai|
|
|
ai.delivery_status=true
|
|
ai.save
|
|
removed_item.push(ai.assigned_order_item_id)
|
|
end
|
|
render :json => removed_item.to_json
|
|
end
|
|
|
|
|
|
# Query for OQS with delivery status
|
|
def queue_items_query(status,oqs_id=nil,filter)
|
|
if oqs_id == nil
|
|
oqs = ''
|
|
else
|
|
oqs = "and assigned_order_items.order_queue_station_id = '#{oqs_id}' "
|
|
end
|
|
|
|
query = AssignedOrderItem.select("assigned_order_items.assigned_order_item_id,
|
|
oqs.id as station_id, oqs.station_name,
|
|
oqs.is_active, oqpz.zone_id,
|
|
df.name as zone, df.type as table_type,
|
|
odt.order_id, odt.item_code, odt.item_name,
|
|
odt.price, odt.qty, odt.item_order_by, odt.options,
|
|
cus.name as customer_name, odt.created_at")
|
|
.joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id
|
|
left join order_queue_process_by_zones as oqpz on oqpz.order_queue_station_id = oqs.id
|
|
left join orders as od ON od.order_id = assigned_order_items.order_id
|
|
left join order_items as odt ON odt.item_code = assigned_order_items.item_code AND odt.order_id = assigned_order_items.order_id
|
|
left join customers as cus ON cus.customer_id = od.customer_id
|
|
left join booking_orders as bo on bo.order_id = assigned_order_items.order_id
|
|
left join bookings as bk on bk.booking_id = bo.booking_id
|
|
left join dining_facilities as df on df.id = bk.dining_facility_id")
|
|
.where("assigned_order_items.delivery_status = #{status} AND odt.price <> 0 AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' #{oqs} ")
|
|
query = query.where("df.name LIKE ? OR odt.order_id LIKE ? OR odt.item_name LIKE ? OR cus.name = '#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%",)
|
|
.order("assigned_order_items.assigned_order_item_id desc")
|
|
.group("assigned_order_items.assigned_order_item_id")
|
|
|
|
end
|
|
|
|
# Completed Order
|
|
def completed_order(filter)
|
|
query = AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.id as station_id, oqs.station_name, oqs.is_active, oqpz.zone_id, df.name as zone, df.type, odt.order_id, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, odt.options, cus.name as customer_name, odt.created_at")
|
|
.joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id
|
|
left join order_queue_process_by_zones as oqpz on oqpz.order_queue_station_id = oqs.id
|
|
left join orders as od ON od.order_id = assigned_order_items.order_id
|
|
left join order_items as odt ON odt.item_code = assigned_order_items.item_code AND odt.order_id = assigned_order_items.order_id
|
|
left join customers as cus ON cus.customer_id = od.customer_id
|
|
left join booking_orders as bo on bo.order_id = assigned_order_items.order_id
|
|
left join bookings as bk on bk.booking_id = bo.booking_id
|
|
left join dining_facilities as df on df.id = bk.dining_facility_id")
|
|
.where("assigned_order_items.delivery_status = true AND odt.price <> 0 AND assigned_order_items.created_at between '#{Time.now.beginning_of_day.utc}' and '#{Time.now.end_of_day.utc}'")
|
|
query = query.where("df.name LIKE ? OR odt.order_id LIKE ? OR odt.item_name LIKE ? OR cus.name = '#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%",)
|
|
.group("assigned_order_items.order_id")
|
|
.limit(20)
|
|
.order("assigned_order_items.created_at")
|
|
|
|
|
|
# completed_order = AssignedOrderItem.group(:order_id).where('delivery_status=true');
|
|
end
|
|
|
|
def queue_items_count_query(status,filter)
|
|
query = AssignedOrderItem.select("count(odt.item_code) as total,oqs.id as station_id")
|
|
.joins(" left join order_queue_stations as oqs on oqs.id = assigned_order_items.order_queue_station_id
|
|
left join orders as od ON od.order_id = assigned_order_items.order_id
|
|
left join order_items as odt ON odt.item_code = assigned_order_items.item_code AND odt.order_id = assigned_order_items.order_id
|
|
left join customers as cus ON cus.customer_id = od.customer_id
|
|
left join booking_orders as bo on bo.order_id = assigned_order_items.order_id
|
|
left join bookings as bk on bk.booking_id = bo.booking_id
|
|
left join dining_facilities as df on df.id = bk.dining_facility_id")
|
|
.where("assigned_order_items.delivery_status = #{status} AND odt.price <> 0 AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' ")
|
|
query = query.where("df.name LIKE ? OR odt.order_id LIKE ? OR odt.item_name LIKE ? OR cus.name = '#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%",)
|
|
.group("oqs.id")
|
|
|
|
end
|
|
|
|
end
|