From 122c4b72fd000449f4f474f5b2bc8cbbe3069675 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Thu, 31 Aug 2017 13:47:55 +0630 Subject: [PATCH 1/4] updat --- public/image/menu_images/images__4_.jpg | Bin 0 -> 11463 bytes public/image/menu_images/images__5_.jpg | Bin 0 -> 14333 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/image/menu_images/images__4_.jpg create mode 100644 public/image/menu_images/images__5_.jpg diff --git a/public/image/menu_images/images__4_.jpg b/public/image/menu_images/images__4_.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d47dafb7786f2b85029a0cf301e61c1fc6fa0e6f GIT binary patch literal 11463 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 M=&3ORBA(a&7xTUE$^ZZW literal 0 HcmV?d00001 diff --git a/public/image/menu_images/images__5_.jpg b/public/image/menu_images/images__5_.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08eb6859145715691df413b01f26facc4669db3b GIT binary patch literal 14333 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 Date: Fri, 1 Sep 2017 16:55:51 +0630 Subject: [PATCH 2/4] update --- app/assets/javascripts/addorder.js | 5 ++- app/assets/javascripts/cable.js | 10 ++--- .../channels/order_queue_station.js | 45 ++++++++++--------- app/channels/application_cable/channel.rb | 2 +- app/channels/application_cable/connection.rb | 3 ++ app/channels/order_queue_station_channel.rb | 1 + app/jobs/order_queue_processor_job.rb | 6 ++- app/views/oqs/home/index.html.erb | 3 ++ config/cable.yml | 12 +++-- config/environments/development.rb | 4 +- config/routes.rb | 2 +- 11 files changed, 55 insertions(+), 38 deletions(-) diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 095ae4e0..a27b4afd 100644 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -276,6 +276,7 @@ $(function(){ disabled = "" status =""; + if(parseInt(jQuery.inArray(value[i], selected_item))!== -1){ status = "selected-attribute"; } @@ -417,7 +418,7 @@ $(function(){ }); //End Add Icon Click function show_item_detail(data){ - console.log(data) + qty = parseInt(data.attr('data-qty')); append = 0; price = parseFloat(data.attr('data-price')).toFixed(2); @@ -599,7 +600,7 @@ $(function(){ var item_row = $('.summary-items tbody tr'); $(item_row).each(function(i){ var order_item = {}; - console.log($(item_row[i]).attr('data-options')); + order_item.order_item_id = $(item_row[i]).attr('data-row'); order_item.item_instance_code = $(item_row[i]).attr('data-instance-code'); order_item.quantity = $(item_row[i]).children('#item_qty').text(); diff --git a/app/assets/javascripts/cable.js b/app/assets/javascripts/cable.js index ce5ac871..55bfd46b 100644 --- a/app/assets/javascripts/cable.js +++ b/app/assets/javascripts/cable.js @@ -1,14 +1,14 @@ // Action Cable provides the framework to deal with WebSockets in Rails. // You can generate new channels where WebSocket features live using the `rails generate channel` command. -// + //= require action_cable //= require_self //= require_tree ./channels // Temp Disable -// (function() { -// this.App || (this.App = {}); +(function() { + this.App || (this.App = {}); -// App.cable = ActionCable.createConsumer(); + App.cable = ActionCable.createConsumer(); -// }).call(this); +}).call(this); diff --git a/app/assets/javascripts/channels/order_queue_station.js b/app/assets/javascripts/channels/order_queue_station.js index 85706bb5..79708e36 100644 --- a/app/assets/javascripts/channels/order_queue_station.js +++ b/app/assets/javascripts/channels/order_queue_station.js @@ -1,24 +1,29 @@ -// App.order_queue_station = App.cable.subscriptions.create("OrderQueueStationChannel", { -// connected: function() {}, +App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChannel', { +// App.messages = App.cable.subscriptions.create('MessagesChannel', { -// disconnected: function() {}, + connected: function() {}, -// received: function(message) { -// alert(message); -// }, + disconnected: function() {}, -// order: function(message) { -// return this.perform('order', { -// message: message -// }); -// } -// }); + received: function(data) { + console.log(data); + alert(data); + console.log("hiiiiiiiiiiii"); + $('#test').append(data); + }, -// $(function(){ -// $("#submit_order").on('click', function(event) { -// var orderData=$("#new_order").serializeObject(); -// App.order_station.order(orderData); -// //orderData=''; -// return event.preventDefault(); -// }); -// }); + order: function(message) { + return this.perform('order', { + message: message + }); + } +}); + +$(function(){ + $("#submit_order").on('click', function(event) { + var orderData=$("#new_order").serializeObject(); + App.order_station.order(orderData); + //orderData=''; + return event.preventDefault(); + }); +}); diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb index a66bc071..a087eaec 100644 --- a/app/channels/application_cable/channel.rb +++ b/app/channels/application_cable/channel.rb @@ -7,7 +7,7 @@ module ApplicationCable end # Order Queue Station Channel - class OQSChannel < ActionCable::Channel::Base + class OrderQueueStationChannel < ActionCable::Channel::Base end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb index 0ff5442f..9da60bf4 100644 --- a/app/channels/application_cable/connection.rb +++ b/app/channels/application_cable/connection.rb @@ -1,4 +1,7 @@ module ApplicationCable class Connection < ActionCable::Connection::Base + def connect + logger.add_tags "ActionCable" + end end end diff --git a/app/channels/order_queue_station_channel.rb b/app/channels/order_queue_station_channel.rb index 8206c64b..b815a446 100644 --- a/app/channels/order_queue_station_channel.rb +++ b/app/channels/order_queue_station_channel.rb @@ -4,6 +4,7 @@ class OrderQueueStationChannel < ApplicationCable::Channel end def unsubscribed + stop_all_streams # Any cleanup needed when channel is unsubscribed end diff --git a/app/jobs/order_queue_processor_job.rb b/app/jobs/order_queue_processor_job.rb index 5b3423dc..4a6d2862 100644 --- a/app/jobs/order_queue_processor_job.rb +++ b/app/jobs/order_queue_processor_job.rb @@ -4,8 +4,9 @@ class OrderQueueProcessorJob < ApplicationJob def perform(order_id, table_id) # Do something later #Order ID - order = Order.find(order_id) + order = Order.find(order_id) + ActionCable.server.broadcast "order_queue_station_channel",message: order #Loop through the order stations and process the items #Execute orders and send to order stations if order @@ -13,5 +14,8 @@ class OrderQueueProcessorJob < ApplicationJob oqs.process_order(order, table_id) end + + + end end diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index 824618e6..ca52292e 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -12,6 +12,9 @@ <% end %> +
+

+

diff --git a/config/cable.yml b/config/cable.yml index 0bbde6f7..a383c5af 100644 --- a/config/cable.yml +++ b/config/cable.yml @@ -1,9 +1,7 @@ -development: - adapter: async - -test: - adapter: async - -production: +redis: &redis adapter: redis url: redis://localhost:6379/1 + +production: *redis +development: *redis +test: *redis \ No newline at end of file diff --git a/config/environments/development.rb b/config/environments/development.rb index 4d8fc580..4c681ee6 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -45,6 +45,8 @@ Rails.application.configure do # Suppress logger output for asset requests. config.assets.quiet = true + config.web_console.whiny_requests = false + # Raises error for missing translations # config.action_view.raise_on_missing_translations = true @@ -53,5 +55,5 @@ Rails.application.configure do config.file_watcher = ActiveSupport::EventedFileUpdateChecker # Set Cable URL - # config.action_cable.url = "ws://192.168.1.140:3002/cable" + config.action_cable.url = "ws://192.168.1.39:3002/cable" end diff --git a/config/routes.rb b/config/routes.rb index 1efacd83..7b8f7ea4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,7 +7,7 @@ Rails.application.routes.draw do mount Sidekiq::Web => '/kiq' # Action Cable Creation - # mount ActionCable.server => "/cable" + mount ActionCable.server => "/cable" #--------- SmartSales Installation ------------# get 'install' => 'install#index' From eeb2a91ce9699ba60afe0427302b547b838b2986 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Tue, 5 Sep 2017 09:41:05 +0630 Subject: [PATCH 3/4] update oqs action cable for order cahnnel and oqs channel --- app/assets/javascripts/OQS.js | 8 +- app/assets/javascripts/channels/order.js | 16 ++++ .../channels/order_queue_station.js | 82 +++++++++++++++---- app/channels/order_channel.rb | 11 +++ app/jobs/order_broadcast_job.rb | 5 +- app/jobs/order_queue_processor_job.rb | 18 ++-- app/models/assigned_order_item.rb | 23 ++++++ app/models/order.rb | 7 +- app/views/oqs/_oqs_test.html.erb | 51 ++++++++++++ app/views/oqs/home/index.html.erb | 80 +++++++++--------- app/views/origami/home/index.html.erb | 64 +++++++-------- app/views/origami/home/show.html.erb | 4 +- 12 files changed, 261 insertions(+), 108 deletions(-) create mode 100644 app/assets/javascripts/channels/order.js create mode 100644 app/channels/order_channel.rb create mode 100644 app/views/oqs/_oqs_test.html.erb diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 5ed26997..1588ac0f 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -29,11 +29,13 @@ $(document).ready(function(){ }); $(".oqs_click").on("click", function(){ - $("#completed").addClass('hide') - $(".oqs_append").removeClass('hide') - + $(".oqs_click").removeClass('oqs_active'); + $("#completed").addClass('hide'); + $(".oqs_append").removeClass('hide'); + $(this).addClass('oqs_active'); var oqs_id = $(this).find(".oqs-id").text(); var url = 'oqs/get_items/'+oqs_id; + show_details(url); }); //End Click diff --git a/app/assets/javascripts/channels/order.js b/app/assets/javascripts/channels/order.js new file mode 100644 index 00000000..eb73c5d1 --- /dev/null +++ b/app/assets/javascripts/channels/order.js @@ -0,0 +1,16 @@ +App.order = App.cable.subscriptions.create('OrderChannel', { +// App.messages = App.cable.subscriptions.create('MessagesChannel', { + + connected: function() {}, + + disconnected: function() {}, + + received: function(data) { + + $('.table_'+data.table.id).removeClass('green'); + $('.table_'+data.table.id).addClass('blue'); + + }, + +}); + diff --git a/app/assets/javascripts/channels/order_queue_station.js b/app/assets/javascripts/channels/order_queue_station.js index 79708e36..45a59b1d 100644 --- a/app/assets/javascripts/channels/order_queue_station.js +++ b/app/assets/javascripts/channels/order_queue_station.js @@ -6,24 +6,70 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann disconnected: function() {}, received: function(data) { - console.log(data); - alert(data); - console.log("hiiiiiiiiiiii"); - $('#test').append(data); - }, + // console.log(data.order); + var oqs_id = $('.oqs_active').attr('data-id'); + items = data.order; + for(var field in items) { + var price = parseFloat(items[field].price).toFixed(2); + if (items[field]["options"] == "[]") { + var options = ""; + }else{ + var options = items.options; + } + //for count + test = document.getElementsByClassName("oqs_count"); + + for (var i = 0; i < test.length; i++) { + oqs_count_id = $(".oqs_count"+i).attr("data-id"); + oqs_count = $(".oqs_count"+i).text(); + if ( oqs_count_id == items[field]["order_queue_station_id"]) { + oqs_count_total = +oqs_count +1 ; + $(".oqs_count"+i).text(oqs_count_total) + } + } + //end count + + var date = new Date(items[field]["created_at"]); + var show_date = date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes(); + + if (oqs_id == items[field]["order_queue_station_id"]) { + row ='
' + +'
' + +'

' + +''+items[field]["table_type"]+'- ' + +''+ items[field]["zone"] +'' + +''+ items[field]["order_id"] +'- ' + +'

' + + +'

' + +''+ items[field]["item_name"] +'- ' + +''+ items[field]["qty"] +'- ' + +'

' + + +'

'+ options +'

' + + +'

' + +'Order at' + +''+ show_date +' - ' + + +''+ items[field]["item_order_by"] +' ' + +' ' + +'

' + + +' ' + +' ' + +'
' + + +'' + +'
'; + $('.oqs_append').append(row); + } + } + // $("[data-behaviour='message']").html(data.order); + }, - order: function(message) { - return this.perform('order', { - message: message - }); - } }); -$(function(){ - $("#submit_order").on('click', function(event) { - var orderData=$("#new_order").serializeObject(); - App.order_station.order(orderData); - //orderData=''; - return event.preventDefault(); - }); -}); diff --git a/app/channels/order_channel.rb b/app/channels/order_channel.rb new file mode 100644 index 00000000..82b32b85 --- /dev/null +++ b/app/channels/order_channel.rb @@ -0,0 +1,11 @@ +class OrderChannel < ApplicationCable::Channel + def subscribed + stream_from "order_channel" + end + + def unsubscribed + stop_all_streams + # Any cleanup needed when channel is unsubscribed + end + +end diff --git a/app/jobs/order_broadcast_job.rb b/app/jobs/order_broadcast_job.rb index 28a152ce..ac483993 100644 --- a/app/jobs/order_broadcast_job.rb +++ b/app/jobs/order_broadcast_job.rb @@ -1,9 +1,8 @@ class OrderBroadcastJob < ApplicationJob queue_as :default - def perform(message) - order = Order.find(message) # message come as order_id - ApplicationCable.server.broadcast "order_queue_station_channel", order: order + def perform(table) + ActionCable.server.broadcast "order_channel",table: table end end diff --git a/app/jobs/order_queue_processor_job.rb b/app/jobs/order_queue_processor_job.rb index 4a6d2862..ede2ea54 100644 --- a/app/jobs/order_queue_processor_job.rb +++ b/app/jobs/order_queue_processor_job.rb @@ -5,17 +5,23 @@ class OrderQueueProcessorJob < ApplicationJob # Do something later #Order ID - order = Order.find(order_id) - ActionCable.server.broadcast "order_queue_station_channel",message: order + order = Order.find(order_id) + assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id) #Loop through the order stations and process the items #Execute orders and send to order stations if order oqs = OrderQueueStation.new oqs.process_order(order, table_id) end - - - - + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order end + + # private + + # def render_order(assign_order) + # ApplicationController.renderer.render(partial: 'oqs/oqs_test', + # locals: { order: assign_order}) + # end +# Read more at https://www.pluralsight.com/guides/ruby-ruby-on-rails/creating-a-chat-using-rails-action-cable#TehYiuqlHDOXaQQk.99 + end diff --git a/app/models/assigned_order_item.rb b/app/models/assigned_order_item.rb index 3ac84077..34c97c6f 100644 --- a/app/models/assigned_order_item.rb +++ b/app/models/assigned_order_item.rb @@ -17,6 +17,29 @@ class AssignedOrderItem < ApplicationRecord assigned_order_item.save end + def self.assigned_order_item_by_job(order_id) + order_item = AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, + assigned_order_items.order_queue_station_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.order_id = '#{order_id}' AND assigned_order_items.delivery_status = false AND odt.price <> 0 AND assigned_order_items.created_at >= '#{Time.now.beginning_of_day.utc}' ") + .order("assigned_order_items.assigned_order_item_id desc") + .group("assigned_order_items.assigned_order_item_id") + return order_item + end + private def generate_custom_id self.assigned_order_item_id = SeedGenerator.generate_id(self.class.name, "AOI") diff --git a/app/models/order.rb b/app/models/order.rb index 0551a1c9..1887585c 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -49,7 +49,7 @@ class Order < ApplicationRecord process_order_queue #send order to broadcast job - #send_order_broadcast + send_order_broadcast(booking) return true, booking @@ -214,9 +214,10 @@ class Order < ApplicationRecord #send order items and send to order queue - def send_order_broadcast + def send_order_broadcast(booking) + table = DiningFacility.find(booking.dining_facility_id) #Send to background job for processing - OrderBroadcastJob.perform_later(self.id) + OrderBroadcastJob.perform_later(table) end #Origami: Cashier : to view order Table diff --git a/app/views/oqs/_oqs_test.html.erb b/app/views/oqs/_oqs_test.html.erb new file mode 100644 index 00000000..32b749ad --- /dev/null +++ b/app/views/oqs/_oqs_test.html.erb @@ -0,0 +1,51 @@ +<% order.each do |qid|%> + +
+
+

+ <%= qid.table_type %> - + <%= qid.zone %> + <%= qid.order_id %> +

+

+ + <%= qid.item_name %> + [x + + <%= qid.qty %> + ] +

+ +

+ <%= qid.options == "[]"? "" : qid.options %> +

+ +

+ Order at + + <%= qid.created_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %> + - + + <%= qid.item_order_by %> + + +

+ + + +
+
+<%end%> + \ No newline at end of file diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index ca52292e..001c901f 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -1,61 +1,60 @@ -
-
-
- <%= form_tag oqs_root_path, :method => :get do %> -
- -
-
- -
- - <% end %> -
-
-

-
-

-
+
+
+
+ <%= form_tag oqs_root_path, :method => :get do %> +
+ +
+ +
+ +
+ <% end %> +
+
@@ -110,7 +109,6 @@ -
diff --git a/app/views/origami/home/index.html.erb b/app/views/origami/home/index.html.erb index 4cdcf01d..9eb16a30 100644 --- a/app/views/origami/home/index.html.erb +++ b/app/views/origami/home/index.html.erb @@ -38,30 +38,30 @@
<% @tables.each do |table| %> - <% if table.status == 'occupied' %> - <% if table.get_booking.nil? %> -
-
- Zone <%= table.zone_id %>
- Table <%= table.name %> ( <%= table.seater %> Seat ) -
-
+ <% if table.status == 'occupied' %> + <% if table.get_booking.nil? %> +
+
+ Zone <%= table.zone_id %>
+ Table <%= table.name %> ( <%= table.seater %> Seat ) +
+
+ <% else %> +
+
+ Zone <%= table.zone_id %>
+ Table <%= table.name %> ( <%= table.seater %> Seat ) +
+
+ <% end %> <% else %> -
+
- Zone <%= table.zone_id %>
- Table <%= table.name %> ( <%= table.seater %> Seat ) + Zone <%= table.zone_id %>
+ Table <%= table.name %> ( <%= table.seater %> Seat )
<% end %> - <% else %> -
-
- Zone <%= table.zone_id %>
- Table <%= table.name %> ( <%= table.seater %> Seat ) -
-
- <% end %> <% end %>
@@ -70,19 +70,19 @@
<% @rooms.each do |room| %> - <% if room.status == 'occupied' %> -
-
- <%= room.name %> -
-
- <% else %> -
-
- <%= room.name %> -
-
- <% end %> + <% if room.status == 'occupied' %> +
+
+ <%= room.name %> +
+
+ <% else %> +
+
+ <%= room.name %> +
+
+ <% end %> <% end %>
diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index 2105918b..2d7cb895 100644 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -59,7 +59,7 @@
<% end %> <% else %> -
+
<%= table.name %>
@@ -86,7 +86,7 @@
<% else %> -
+
<%= room.name %>
From 4a85039170062deed1a94aaa88682f004cc71446 Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Tue, 5 Sep 2017 14:07:20 +0630 Subject: [PATCH 4/4] update oqs action cable for order cahnnel and oqs channel --- app/assets/javascripts/OQS.js | 5 ++++- app/assets/javascripts/channels/order_queue_station.js | 5 +++-- app/assets/stylesheets/OQS.scss | 2 ++ app/controllers/oqs/home_controller.rb | 1 + app/views/oqs/home/index.html.erb | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/OQS.js b/app/assets/javascripts/OQS.js index 1588ac0f..ed5defe3 100644 --- a/app/assets/javascripts/OQS.js +++ b/app/assets/javascripts/OQS.js @@ -23,6 +23,9 @@ $(document).ready(function(){ // setTimeout(function(){ // window.location.reload(1); // }, 10000); + // $oqs_count = document.getElementById("oqsBox").style.order =1; + // $("#oqsBox").css("order", 1); + $(".nav-completed").on("click", function(){ $("#completed").removeClass('hide') $(".oqs_append").addClass('hide') @@ -54,7 +57,7 @@ $(document).ready(function(){ for(var field in data) { var price = parseFloat(data[field].price).toFixed(2); - if (data[field]["options"] == "[]") { + if (data[field]["options"] == "[]" || data[field]["options"] == "") { var options = ""; }else{ var options = data.options; diff --git a/app/assets/javascripts/channels/order_queue_station.js b/app/assets/javascripts/channels/order_queue_station.js index 45a59b1d..5c7c710a 100644 --- a/app/assets/javascripts/channels/order_queue_station.js +++ b/app/assets/javascripts/channels/order_queue_station.js @@ -11,7 +11,7 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann items = data.order; for(var field in items) { var price = parseFloat(items[field].price).toFixed(2); - if (items[field]["options"] == "[]") { + if (items[field]["options"] == "[]" || data[field]["options"] == "") { var options = ""; }else{ var options = items.options; @@ -33,7 +33,8 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann var show_date = date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes(); if (oqs_id == items[field]["order_queue_station_id"]) { - row ='
' + + row ='
' +'
' +'

' +''+items[field]["table_type"]+'- ' diff --git a/app/assets/stylesheets/OQS.scss b/app/assets/stylesheets/OQS.scss index 74a8032f..108c7541 100644 --- a/app/assets/stylesheets/OQS.scss +++ b/app/assets/stylesheets/OQS.scss @@ -25,3 +25,5 @@ font-size: 18px; margin: 0px 0px 5px 0px; } + + diff --git a/app/controllers/oqs/home_controller.rb b/app/controllers/oqs/home_controller.rb index dae8b02f..af843c7e 100644 --- a/app/controllers/oqs/home_controller.rb +++ b/app/controllers/oqs/home_controller.rb @@ -131,6 +131,7 @@ class Oqs::HomeController < BaseOqsController 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 diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb index 001c901f..79e0e69f 100644 --- a/app/views/oqs/home/index.html.erb +++ b/app/views/oqs/home/index.html.erb @@ -37,7 +37,7 @@ > <%= qsi.station_name %> <% if @filter.nil? %> - <%= qsi.assigned_order_items.where("delivery_status=0").count %> + <%= qsi.assigned_order_items.where("delivery_status=0 AND created_at >= '#{Time.now.beginning_of_day.utc}'").count %> <%else%>