From 7e8b69aa7ce9f74f1d64f5cf2eb529be029f670f Mon Sep 17 00:00:00 2001 From: Aung Myo Date: Mon, 21 May 2018 13:00:55 +0630 Subject: [PATCH] update action cable and other bugs --- .../javascripts/channels/call_waiter.js | 125 ++++---- .../javascripts/channels/check_in_booking.js | 16 +- .../javascripts/channels/check_new_order.js | 62 ++-- .../channels/check_order_ready_to_delivery.js | 62 ++-- .../channels/check_order_send_to_kitchen.js | 60 ++-- app/assets/javascripts/channels/checkin.js | 4 + app/assets/javascripts/channels/order.js | 8 +- .../channels/order_queue_station.js | 133 ++++---- .../javascripts/channels/order_reservation.js | 85 ++--- .../javascripts/channels/second_display.js | 55 ++-- .../channels/second_display_view.js | 290 +++++++++--------- app/controllers/api/bill_controller.rb | 9 +- .../api/call_waiters_controller.rb | 9 +- .../api/check_in_process_controller.rb | 11 +- .../order_reservation_controller.rb | 7 +- .../origami/addorders_controller.rb | 89 +++++- .../origami/second_display_controller.rb | 8 +- .../origami/split_bill_controller.rb | 10 +- app/models/dining_facility.rb | 14 +- app/models/display_image.rb | 2 +- app/models/order.rb | 159 +++++----- app/models/order_queue_station.rb | 14 +- app/models/order_reservation.rb | 36 ++- app/models/sale_payment.rb | 7 +- ...> 20180521041850_create_display_images.rb} | 6 +- spec/models/display_image_spec.rb | 5 + 26 files changed, 749 insertions(+), 537 deletions(-) rename db/migrate/{20180213053009_create_display_images.rb => 20180521041850_create_display_images.rb} (82%) create mode 100644 spec/models/display_image_spec.rb diff --git a/app/assets/javascripts/channels/call_waiter.js b/app/assets/javascripts/channels/call_waiter.js index f0a804a2..ed1fa0d3 100644 --- a/app/assets/javascripts/channels/call_waiter.js +++ b/app/assets/javascripts/channels/call_waiter.js @@ -6,68 +6,73 @@ App.call_waiter = App.cable.subscriptions.create('CallWaiterChannel', { disconnected: function() {}, received: function(data) { - table = data.table - time = data.time - // for Notificaiotn message - var element = "#notify-wrapper" - var animateEnter = ""; - var animateExit = ""; - - if (time == 'print_error') { - var colorName = "alert-danger"; - var placementFrom = "center"; - var placementAlign = "center"; - var text = " Hello
"+table ; - style ="" - }else{ - var colorName = "alert-warning"; - var placementFrom = "top"; - var placementAlign = "center"; - var text = " Calling Waiter
"+table.name ; - style ="width:180px !important;" - } - - - if (text != null || colorName != null){ - showNotification(element, colorName, text, placementFrom, placementAlign, animateEnter, animateExit); - } - - function showNotification(element, colorName, text, placementFrom, placementAlign, animateEnter, animateExit) { - if (colorName === null || colorName === '') { colorName = 'bg-black'; } - if (animateEnter === null || animateEnter === '') { animateEnter = 'animated fadeInDown'; } - if (animateExit === null || animateExit === '') { animateExit = 'animated fadeOutUp'; } - var allowDismiss = true; - - $.notify({ - message: text - }, + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from) { - element: element, - type: colorName, - allow_dismiss: allowDismiss, - timer: 200000000000000, - placement: { - from: placementFrom, - align: placementAlign - }, - animate: { - enter: animateEnter, - exit: animateExit - }, - template: '' - }); + table = data.table + time = data.time + + // for Notificaiotn message + var element = "#notify-wrapper" + var animateEnter = ""; + var animateExit = ""; + + if (time == 'print_error') { + var colorName = "alert-danger"; + var placementFrom = "center"; + var placementAlign = "center"; + var text = " Hello
"+table ; + style ="" + }else{ + var colorName = "alert-warning"; + var placementFrom = "top"; + var placementAlign = "center"; + var text = " Calling Waiter
"+table.name ; + style ="width:180px !important;" + } + + + if (text != null || colorName != null){ + showNotification(element, colorName, text, placementFrom, placementAlign, animateEnter, animateExit); + } + + function showNotification(element, colorName, text, placementFrom, placementAlign, animateEnter, animateExit) { + if (colorName === null || colorName === '') { colorName = 'bg-black'; } + if (animateEnter === null || animateEnter === '') { animateEnter = 'animated fadeInDown'; } + if (animateExit === null || animateExit === '') { animateExit = 'animated fadeOutUp'; } + var allowDismiss = true; + + $.notify({ + message: text + }, + { + element: element, + type: colorName, + allow_dismiss: allowDismiss, + timer: 200000000000000, + placement: { + from: placementFrom, + align: placementAlign + }, + animate: { + enter: animateEnter, + exit: animateExit + }, + template: '' + }); + } + //end Notificaiotn message + } } - //end Notificaiotn message -} }); diff --git a/app/assets/javascripts/channels/check_in_booking.js b/app/assets/javascripts/channels/check_in_booking.js index 18597f4d..d2c85e20 100644 --- a/app/assets/javascripts/channels/check_in_booking.js +++ b/app/assets/javascripts/channels/check_in_booking.js @@ -5,12 +5,16 @@ App.checkin = App.cable.subscriptions.create('CheckInBookingChannel', { disconnected: function() {}, - received: function(data) { - if($('.table_'+data.table.id).hasClass('green')){ - $('.table_'+data.table.id).removeClass('green'); - $('.table_'+data.table.id).addClass('blue'); - } - $('.new_text_'+data.table.id).removeClass('hide'); + received: function(data) { + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from) + { + if($('.table_'+data.table.id).hasClass('green')){ + $('.table_'+data.table.id).removeClass('green'); + $('.table_'+data.table.id).addClass('blue'); + } + $('.new_text_'+data.table.id).removeClass('hide'); + } } }); diff --git a/app/assets/javascripts/channels/check_new_order.js b/app/assets/javascripts/channels/check_new_order.js index ced5b3c2..b2b53bbb 100644 --- a/app/assets/javascripts/channels/check_new_order.js +++ b/app/assets/javascripts/channels/check_new_order.js @@ -3,36 +3,40 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', { disconnected: function() {}, - received: function(data) { - var order = data.data; - var shop_code = data.shop_code; - if(order.length > 0){ - var order_lists = ""; - $.each(order, function(key, value){ - if(key==0){ - order_lists = value.order_reservation_id; - }else if(key == (order.length - 1)){ - order_lists += ' and ' + value.order_reservation_id; - }else{ - order_lists += ', ' + value.order_reservation_id; - } - }); + received: function(data) { + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from) + { + var order = data.data; + var shop_code = data.shop_code; + if(order.length > 0){ + var order_lists = ""; + $.each(order, function(key, value){ + if(key==0){ + order_lists = value.order_reservation_id; + }else if(key == (order.length - 1)){ + order_lists += ' and ' + value.order_reservation_id; + }else{ + order_lists += ', ' + value.order_reservation_id; + } + }); - // alert(order_lists); - checkNewOrderAlert(shop_code, order_lists); - // $("#notify_new_order_lists").text(order_lists); - // if($("#"+shop_code+"_notify_new_order").hasClass("hidden")){ - // $("#"+shop_code+"_notify_new_order").removeClass("hidden"); - // } - // $("#"+shop_code+"_notify_new_order").on('shown.bs.modal', function(e){ - // // $(document).off('focusin.modal'); - // $("#"+shop_code+"_notify_new_order").focus(); - // $("#"+shop_code+"_doemal_new_order").addClass("hidden"); - // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); - // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); - // }).on('hide.bs.modal', function (e) { - // $("#"+shop_code+"_notify_new_order").addClass("hidden"); - // }).modal({show: true, keyboard: false, backdrop: false}); + // alert(order_lists); + checkNewOrderAlert(shop_code, order_lists); + // $("#notify_new_order_lists").text(order_lists); + // if($("#"+shop_code+"_notify_new_order").hasClass("hidden")){ + // $("#"+shop_code+"_notify_new_order").removeClass("hidden"); + // } + // $("#"+shop_code+"_notify_new_order").on('shown.bs.modal', function(e){ + // // $(document).off('focusin.modal'); + // $("#"+shop_code+"_notify_new_order").focus(); + // $("#"+shop_code+"_doemal_new_order").addClass("hidden"); + // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); + // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); + // }).on('hide.bs.modal', function (e) { + // $("#"+shop_code+"_notify_new_order").addClass("hidden"); + // }).modal({show: true, keyboard: false, backdrop: false}); + } } } }); diff --git a/app/assets/javascripts/channels/check_order_ready_to_delivery.js b/app/assets/javascripts/channels/check_order_ready_to_delivery.js index 4ec3ea08..26b45d6b 100644 --- a/app/assets/javascripts/channels/check_order_ready_to_delivery.js +++ b/app/assets/javascripts/channels/check_order_ready_to_delivery.js @@ -3,36 +3,40 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe disconnected: function() {}, - received: function(data) { - var order = data.data; - var shop_code = data.shop_code; - if(order.length > 0){ - var order_lists = ""; - $.each(order, function(key, value){ - if(key==0){ - order_lists = value.order_reservation_id; - }else if(key == (order.length - 1)){ - order_lists += ' and ' + value.order_reservation_id; - }else{ - order_lists += ', ' + value.order_reservation_id; - } - }); + received: function(data) { + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from) + { + var order = data.data; + var shop_code = data.shop_code; + if(order.length > 0){ + var order_lists = ""; + $.each(order, function(key, value){ + if(key==0){ + order_lists = value.order_reservation_id; + }else if(key == (order.length - 1)){ + order_lists += ' and ' + value.order_reservation_id; + }else{ + order_lists += ', ' + value.order_reservation_id; + } + }); - // alert(order_lists); - checkOrderReadyToKitchenAlert(shop_code, order_lists); - // $("#notify_order_ready_to_delivery_lists").text(order_lists); - // if($("#notify_order_ready_to_delivery").hasClass("hidden")){ - // $("#"+shop_code+"_notify_order_ready_to_delivery").removeClass("hidden"); - // } - // $("#"+shop_code+"_notify_order_ready_to_delivery").on('shown.bs.modal', function(e){ - // // $(document).off('focusin.modal'); - // $("#"+shop_code+"_notify_order_ready_to_delivery").focus(); - // $("#"+shop_code+"_doemal_new_order").addClass("hidden"); - // $("#"+shop_code+"_notify_new_order").addClass("hidden"); - // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); - // }).on('hide.bs.modal', function (e) { - // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); - // }).modal({show: true, keyboard: false, backdrop: false}); + // alert(order_lists); + checkOrderReadyToKitchenAlert(shop_code, order_lists); + // $("#notify_order_ready_to_delivery_lists").text(order_lists); + // if($("#notify_order_ready_to_delivery").hasClass("hidden")){ + // $("#"+shop_code+"_notify_order_ready_to_delivery").removeClass("hidden"); + // } + // $("#"+shop_code+"_notify_order_ready_to_delivery").on('shown.bs.modal', function(e){ + // // $(document).off('focusin.modal'); + // $("#"+shop_code+"_notify_order_ready_to_delivery").focus(); + // $("#"+shop_code+"_doemal_new_order").addClass("hidden"); + // $("#"+shop_code+"_notify_new_order").addClass("hidden"); + // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); + // }).on('hide.bs.modal', function (e) { + // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); + // }).modal({show: true, keyboard: false, backdrop: false}); + } } } }); diff --git a/app/assets/javascripts/channels/check_order_send_to_kitchen.js b/app/assets/javascripts/channels/check_order_send_to_kitchen.js index 5e8751b1..729bf4ab 100644 --- a/app/assets/javascripts/channels/check_order_send_to_kitchen.js +++ b/app/assets/javascripts/channels/check_order_send_to_kitchen.js @@ -4,35 +4,39 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend disconnected: function() {}, received: function(data) { - var order = data.data; - var shop_code = data.shop_code; - if(order.length > 0){ - var order_lists = ""; - $.each(order, function(key, value){ - if(key==0){ - order_lists = value.order_reservation_id; - }else if(key == (order.length - 1)){ - order_lists += ' and ' + value.order_reservation_id; - }else{ - order_lists += ', ' + value.order_reservation_id; - } - }); + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from) + { + var order = data.data; + var shop_code = data.shop_code; + if(order.length > 0){ + var order_lists = ""; + $.each(order, function(key, value){ + if(key==0){ + order_lists = value.order_reservation_id; + }else if(key == (order.length - 1)){ + order_lists += ' and ' + value.order_reservation_id; + }else{ + order_lists += ', ' + value.order_reservation_id; + } + }); - // alert(order_lists); - checkOrderSendToKitchen(shop_code, order_lists); - // $("#notify_order_send_to_kitchen_lists").text(order_lists); - // if($("#notify_order_send_to_kitchen").hasClass("hidden")){ - // $("#"+shop_code+"_notify_order_send_to_kitchen").removeClass("hidden"); - // } - // $("#"+shop_code+"_notify_order_send_to_kitchen").on('shown.bs.modal', function(e){ - // // $(document).off('focusin.modal'); - // $("#"+shop_code+"_notify_order_send_to_kitchen").focus(); - // $("#"+shop_code+"_doemal_new_order").addClass("hidden"); - // $("#"+shop_code+"_notify_new_order").addClass("hidden"); - // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); - // }).on('hide.bs.modal', function (e) { - // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); - // }).modal({show: true, keyboard: false, backdrop: false}); + // alert(order_lists); + checkOrderSendToKitchen(shop_code, order_lists); + // $("#notify_order_send_to_kitchen_lists").text(order_lists); + // if($("#notify_order_send_to_kitchen").hasClass("hidden")){ + // $("#"+shop_code+"_notify_order_send_to_kitchen").removeClass("hidden"); + // } + // $("#"+shop_code+"_notify_order_send_to_kitchen").on('shown.bs.modal', function(e){ + // // $(document).off('focusin.modal'); + // $("#"+shop_code+"_notify_order_send_to_kitchen").focus(); + // $("#"+shop_code+"_doemal_new_order").addClass("hidden"); + // $("#"+shop_code+"_notify_new_order").addClass("hidden"); + // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); + // }).on('hide.bs.modal', function (e) { + // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); + // }).modal({show: true, keyboard: false, backdrop: false}); + } } } }); diff --git a/app/assets/javascripts/channels/checkin.js b/app/assets/javascripts/channels/checkin.js index 03159170..a0712d65 100644 --- a/app/assets/javascripts/channels/checkin.js +++ b/app/assets/javascripts/channels/checkin.js @@ -6,6 +6,9 @@ App.order = App.cable.subscriptions.create('CheckinChannel', { disconnected: function() {}, received: function(data) { + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from) + { $.each(data.table,function(key,value){ if($('.table_'+value.table_id).hasClass('blue')){ $('.table_'+value.table_id).removeClass('blue'); @@ -22,5 +25,6 @@ App.order = App.cable.subscriptions.create('CheckinChannel', { $('.new_text_'+value.table_id).removeClass('hide'); }); } +} }); diff --git a/app/assets/javascripts/channels/order.js b/app/assets/javascripts/channels/order.js index 26c7897e..87b08c4a 100755 --- a/app/assets/javascripts/channels/order.js +++ b/app/assets/javascripts/channels/order.js @@ -3,7 +3,12 @@ App.order = App.cable.subscriptions.create('OrderChannel', { disconnected: function() {}, - received: function(data) { + received: function(data) { + var hostname = location.hostname.trim(); + console.log(hostname) + console.log(data.from) + if(data.from == "" || hostname == data.from) + { if (data.type == 'order') { $('.table_'+data.table.id).removeClass('green'); $('.table_'+data.table.id).addClass('blue'); @@ -14,6 +19,7 @@ App.order = App.cable.subscriptions.create('OrderChannel', { $('.new_text_'+data.table.id).html(''); $('.new_text_'+data.table.id).removeClass('hide') } + } } }); diff --git a/app/assets/javascripts/channels/order_queue_station.js b/app/assets/javascripts/channels/order_queue_station.js index a72a7893..ccb3b0d3 100755 --- a/app/assets/javascripts/channels/order_queue_station.js +++ b/app/assets/javascripts/channels/order_queue_station.js @@ -6,83 +6,86 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann disconnected: function() {}, received: function(data) { - 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"] == "[]" || items[field]["options"] == "") { - var options = ""; - }else{ - var options = items[field]["options"]; - } - //for count - test = document.getElementsByClassName("oqs_count"); + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from){ + 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"] == "[]" || items[field]["options"] == "") { + var options = ""; + }else{ + var options = items[field]["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 + 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()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes(); - var show_date =date.getHours()+ ':' + date.getMinutes() +' '+(date.getHours() >= 12 ? 'PM' : 'AM'); + var date = new Date(items[field]["created_at"]); + // var show_date = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes(); + var show_date =date.getHours()+ ':' + date.getMinutes() +' '+(date.getHours() >= 12 ? 'PM' : 'AM'); - if (oqs_id == items[field]["order_queue_station_id"]) { - var table_type = (items[field]["table_type"] != null) ? items[field]["table_type"]:""; - var zone = (items[field]["zone"] != null) ? "-"+items[field]["zone"]:"No Table"; - (name === 'true') ? 'Y' :'N'; - row ='
' - +'' - +'
' - + if (oqs_id == items[field]["order_queue_station_id"]) { + var table_type = (items[field]["table_type"] != null) ? items[field]["table_type"]:""; + var zone = (items[field]["zone"] != null) ? "-"+items[field]["zone"]:"No Table"; + (name === 'true') ? 'Y' :'N'; + row ='
' + +'' + +'
' + - +'
' - +''+table_type+''+ zone+'' - +'' - +''+items[field]["order_id"]+'' - +'
' - +'

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

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

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

' - +'

'+ options +'

' + +'

'+ options +'

' - +'' - +'Order at - ' - +''+ show_date +'
' + +'' + +'Order at - ' + +''+ show_date +'
' - +'Order By - '+ items[field]["item_order_by"] +' ' - +'
' - +'
' + +'Order By - '+ items[field]["item_order_by"] +' ' + +'
' + +'
' - +' ' - +' ' - +'
' + +' ' + +' ' + +'
' - +'' - +'
'; - $('.oqs_append').append(row); - } - }//end looping + +'' + +'
'; + $('.oqs_append').append(row); + } + }//end looping - var $divs = $("div.queue_station"); - var SortListDivs = $divs.sort(function (a, b) { + var $divs = $("div.queue_station"); + var SortListDivs = $divs.sort(function (a, b) { - first = $(a).attr('data-order-no'); - next = $(b).attr('data-order-no'); + first = $(a).attr('data-order-no'); + next = $(b).attr('data-order-no'); - return parseInt(next.substring(4, 16)) - parseInt(first.substring(4, 16)); - }); - $("#oqs_container").html(SortListDivs); + return parseInt(next.substring(4, 16)) - parseInt(first.substring(4, 16)); + }); + $("#oqs_container").html(SortListDivs); + } }, }); diff --git a/app/assets/javascripts/channels/order_reservation.js b/app/assets/javascripts/channels/order_reservation.js index 468e4c31..39b31b5a 100644 --- a/app/assets/javascripts/channels/order_reservation.js +++ b/app/assets/javascripts/channels/order_reservation.js @@ -4,50 +4,53 @@ App.order_reservation = App.cable.subscriptions.create('OrderReservationChannel' disconnected: function() {}, received: function(data) { - var shop_code = data.shop_code; - var order = data.data; - if(order.length > 0){ - $('.custom-table.'+shop_code+'_order_reserve_cable tbody').html(""); - $("."+shop_code+" > .nav-item.red > a > p.num").text(order.length); - $.each(order, function(key,value){ - var active_class = ""; - if(key==0){ - active_class = "tr-active"; - showNewOrder(order[key],shop_code); - } - var rowCount = key+1; - var date = new Date(value.created_at); - var time = timeFormat(date); - var created_at = date.getFullYear() +'-'+ (date.getMonth() >= 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate() >=10?date.getDate() : '0'+date.getDate()); + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from){ + var shop_code = data.shop_code; + var order = data.data; + if(order.length > 0){ + $('.custom-table.'+shop_code+'_order_reserve_cable tbody').html(""); + $("."+shop_code+" > .nav-item.red > a > p.num").text(order.length); + $.each(order, function(key,value){ + var active_class = ""; + if(key==0){ + active_class = "tr-active"; + showNewOrder(order[key],shop_code); + } + var rowCount = key+1; + var date = new Date(value.created_at); + var time = timeFormat(date); + var created_at = date.getFullYear() +'-'+ (date.getMonth() >= 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate() >=10?date.getDate() : '0'+date.getDate()); - var delivery_type = ""; - if(value.provider == "food2u" || value.provider == "yangondoor2door"){ - delivery_type = "DELIVERY"; - }else if(value.provider == "pick_up"){ - delivery_type = "PICK-UP"; - }else{ - delivery_type = "DIRECT DELIVERY"; - } + var delivery_type = ""; + if(value.provider == "food2u" || value.provider == "yangondoor2door"){ + delivery_type = "DELIVERY"; + }else if(value.provider == "pick_up"){ + delivery_type = "PICK-UP"; + }else{ + delivery_type = "DIRECT DELIVERY"; + } - row = '' - +''+rowCount - +'' - +''+created_at - +'' - +''+time - +'' - +''+value.grand_total - +'' - +'' - +''+ delivery_type +'' - +'' - +' '; - - $('.custom-table.'+shop_code+'_order_reserve_cable tbody').append(row); - }); + row = '' + +''+rowCount + +'' + +''+created_at + +'' + +''+time + +'' + +''+value.grand_total + +'' + +'' + +''+ delivery_type +'' + +'' + +' '; + + $('.custom-table.'+shop_code+'_order_reserve_cable tbody').append(row); + }); + } + + customTableClick(); } - - customTableClick(); } }); diff --git a/app/assets/javascripts/channels/second_display.js b/app/assets/javascripts/channels/second_display.js index 79b59cac..cfe2de8f 100644 --- a/app/assets/javascripts/channels/second_display.js +++ b/app/assets/javascripts/channels/second_display.js @@ -5,33 +5,36 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayChannel', { disconnected: function() {}, - received: function(data) { - var data_obj = data.data; - var status = data.status; - var count = 0 - var sub_total = 0 - if (data.status == "order") { - for(var i in data_obj) { + received: function(data) { + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from){ + var data_obj = data.data; + var status = data.status; + var count = 0 + var sub_total = 0 + if (data.status == "order") { + for(var i in data_obj) { - sub_total = sub_total + (data_obj[i].price * data_obj[i].qty) - count += 1 - row ='' - +''+count+'' - +''+data_obj[i].item_name+'' - +''+data_obj[i].qty +'' - + ''+data_obj[i].qty*data_obj[i].price +'' - +'' - $(".second_display_items").append(row); - }//end looping - }else{ - $('#s_sub_total').empty(); - $('#s_sub_total').append(data_obj.total_amount); - $('#s_total_discount').empty(); - $('#s_total_discount').append(data_obj.total_discount); - $('#s_tatal_tax').empty(); - $('#s_tatal_tax').append(data_obj.total_tax); - $('#s_grand_total').empty(); - $('#s_grand_total').append(data_obj.grand_total); + sub_total = sub_total + (data_obj[i].price * data_obj[i].qty) + count += 1 + row ='' + +''+count+'' + +''+data_obj[i].item_name+'' + +''+data_obj[i].qty +'' + + ''+data_obj[i].qty*data_obj[i].price +'' + +'' + $(".second_display_items").append(row); + }//end looping + }else{ + $('#s_sub_total').empty(); + $('#s_sub_total').append(data_obj.total_amount); + $('#s_total_discount').empty(); + $('#s_total_discount').append(data_obj.total_discount); + $('#s_tatal_tax').empty(); + $('#s_tatal_tax').append(data_obj.total_tax); + $('#s_grand_total').empty(); + $('#s_grand_total').append(data_obj.grand_total); + } } } }); diff --git a/app/assets/javascripts/channels/second_display_view.js b/app/assets/javascripts/channels/second_display_view.js index 1a1cba86..6a532f09 100644 --- a/app/assets/javascripts/channels/second_display_view.js +++ b/app/assets/javascripts/channels/second_display_view.js @@ -6,161 +6,163 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayViewChannel', { disconnected: function() {}, received: function(data) { - var items = data.data; - var tax = data.tax_profiles; - var status= data.status - if (status == "reload") { - jQuery('#s_reload').click(); - } - $('#second_display_slider').addClass("hidden") - $('#second_display_items').removeClass("hidden") - - - // append items - if (status == "add") { - for(var i in items) { - qty = parseInt(items[i].qty); - append = 0; - price = items[i].price; - - instance_name = items[i].instance; - if (instance_name == "undefined"){ - instance = ''; - }else{ - instance = "("+items[i].instance+")"; - } - - // d_option = items[i].options; - // if (d_option){ - // option_name = "-"+items[i].options; - // }else{ - // option_name = ''; - // } - - d_option = items[i].opt; - if (items[i].click_type != "add_icon"){ - option_name = "-"+items[i].options; - data_option = items[i].options ; - }else{ - option_name = ' '; - data_option = '[]'; - } - - var rowCount = $('.second_display_items tbody tr').length+1; - var item_row = $('.second_display_items tbody tr'); - - $(item_row).each(function(j){ - var item_code = $(item_row[j]).attr('data-code'); - var instance_code = $(item_row[j]).attr('data-instance-code'); - var r_option = $(item_row[j]).attr('data-options'); - if (item_code == items[i].item_code && instance_code == items[i].instance_code && r_option==d_option) { - if (qty > 1) { - qty = parseInt($(item_row[j]).children('#item_qty').text()) + qty; - }else{ - qty = parseInt($(item_row[j]).children('#item_qty').text()) + 1; - } - - $(item_row[j]).children('#item_qty').text(qty); - parseFloat($(item_row[j]).children('#item_price').text(parseFloat(price*qty).toFixed(2))); - append =1; - }else{ - if (qty > 1) { - qty = qty; - }else{ - qty = 1; - } - } - }); - if (append===0) { - row ="" - +''+rowCount+'' - +'' + items[i].name+ ' ' + instance + ' ' + option_name +'' - +'' + qty + '' - +'' - + parseFloat(price).toFixed(2) - +'' - +''; - $(".second_display_items tbody").append(row); - - } + var hostname = location.hostname.trim(); + if(data.from == "" || hostname == data.from){ + var items = data.data; + var tax = data.tax_profiles; + var status= data.status + if (status == "reload") { + jQuery('#s_reload').click(); } - } - if (status == "set_add") { - // var option_arr = []; - var attribute_arr = []; - var rowCount = $('.second_display_items tbody tr').length+1; - for(var i in items) { - code = items[i].code; - item_code = items[i].item_code; - name = items[i].name; - item_name = items[i].item_name; - qty = items[i].qty; + $('#second_display_slider').addClass("hidden") + $('#second_display_items').removeClass("hidden") + + + // append items + if (status == "add") { + for(var i in items) { + qty = parseInt(items[i].qty); + append = 0; price = items[i].price; - option = items[i].option; - sub_item = items[i].sub_item; - total = qty * price ; - // option_arr.push(option); - row ="" + + instance_name = items[i].instance; + if (instance_name == "undefined"){ + instance = ''; + }else{ + instance = "("+items[i].instance+")"; + } + + // d_option = items[i].options; + // if (d_option){ + // option_name = "-"+items[i].options; + // }else{ + // option_name = ''; + // } + + d_option = items[i].opt; + if (items[i].click_type != "add_icon"){ + option_name = "-"+items[i].options; + data_option = items[i].options ; + }else{ + option_name = ' '; + data_option = '[]'; + } + + var rowCount = $('.second_display_items tbody tr').length+1; + var item_row = $('.second_display_items tbody tr'); + + $(item_row).each(function(j){ + var item_code = $(item_row[j]).attr('data-code'); + var instance_code = $(item_row[j]).attr('data-instance-code'); + var r_option = $(item_row[j]).attr('data-options'); + if (item_code == items[i].item_code && instance_code == items[i].instance_code && r_option==d_option) { + if (qty > 1) { + qty = parseInt($(item_row[j]).children('#item_qty').text()) + qty; + }else{ + qty = parseInt($(item_row[j]).children('#item_qty').text()) + 1; + } + + $(item_row[j]).children('#item_qty').text(qty); + parseFloat($(item_row[j]).children('#item_price').text(parseFloat(price*qty).toFixed(2))); + append =1; + }else{ + if (qty > 1) { + qty = qty; + }else{ + qty = 1; + } + } + }); + if (append===0) { + row ="" +''+rowCount+'' - +'' + item_name+ ' ' + name + ''+option+'' + +'' + items[i].name+ ' ' + instance + ' ' + option_name +'' +'' + qty + '' +'' - + parseFloat(total).toFixed(2) + + parseFloat(price).toFixed(2) +'' +''; $(".second_display_items tbody").append(row); - rowCount = rowCount + 1; - - } - } - //end apend items - var total_price = 0; - var taxable_amount = 0; - var total_discount = 0 - var total_tax_amount = 0 - var item_row = $('.second_display_items tbody tr'); - //calculate Sub Total - $(item_row).each(function(i){ - var unit_price = parseFloat($(item_row[i]).attr('data-price')); - var qty = parseFloat($(item_row[i]).children('#item_qty').text()); - total_price += qty*unit_price; - }); - //calculate Tax Amount - for(var i in tax) { - // substract , to give after discount - var total_tax = total_price - total_discount - // include or execulive - if (tax[i].inclusive){ - rate = tax[i].rate - divided_value = (100 + rate)/rate - total_tax_amount = total_tax_amount + (total_tax / divided_value) - }else{ - total_tax_amount = total_tax_amount + (total_tax * tax[i].rate / 100) + + } } } - //end calculate Tax amount - var fixed_total_price = parseFloat(total_price).toFixed(2); - var fixed_taxable_amount = parseFloat(total_tax_amount).toFixed(2); - var fixed_grand_total = parseFloat(total_price + total_tax_amount).toFixed(2); + if (status == "set_add") { + // var option_arr = []; + var attribute_arr = []; + var rowCount = $('.second_display_items tbody tr').length+1; + for(var i in items) { + code = items[i].code; + item_code = items[i].item_code; + name = items[i].name; + item_name = items[i].item_name; + qty = items[i].qty; + price = items[i].price; + option = items[i].option; + sub_item = items[i].sub_item; + total = qty * price ; + // option_arr.push(option); + row ="" + +''+rowCount+'' + +'' + item_name+ ' ' + name + ''+option+'' + +'' + qty + '' + +'' + + parseFloat(total).toFixed(2) + +'' + +''; + $(".second_display_items tbody").append(row); + rowCount = rowCount + 1; + + } + } + //end apend items + var total_price = 0; + var taxable_amount = 0; + var total_discount = 0 + var total_tax_amount = 0 + var item_row = $('.second_display_items tbody tr'); + //calculate Sub Total + $(item_row).each(function(i){ + var unit_price = parseFloat($(item_row[i]).attr('data-price')); + var qty = parseFloat($(item_row[i]).children('#item_qty').text()); + total_price += qty*unit_price; + }); + //calculate Tax Amount + for(var i in tax) { + // substract , to give after discount + var total_tax = total_price - total_discount + // include or execulive + if (tax[i].inclusive){ + rate = tax[i].rate + divided_value = (100 + rate)/rate + total_tax_amount = total_tax_amount + (total_tax / divided_value) + }else{ + total_tax_amount = total_tax_amount + (total_tax * tax[i].rate / 100) + } + } + //end calculate Tax amount + var fixed_total_price = parseFloat(total_price).toFixed(2); + var fixed_taxable_amount = parseFloat(total_tax_amount).toFixed(2); + var fixed_grand_total = parseFloat(total_price + total_tax_amount).toFixed(2); - $('#s_sub_total').empty(); - $('#s_sub_total').append(fixed_total_price); - $('#s_tatal_tax').empty(); - $('#s_tatal_tax').append(fixed_taxable_amount); - $('#s_grand_total').empty(); - $('#s_grand_total').append(fixed_grand_total); + $('#s_sub_total').empty(); + $('#s_sub_total').append(fixed_total_price); + $('#s_tatal_tax').empty(); + $('#s_tatal_tax').append(fixed_taxable_amount); + $('#s_grand_total').empty(); + $('#s_grand_total').append(fixed_grand_total); + } } - }); diff --git a/app/controllers/api/bill_controller.rb b/app/controllers/api/bill_controller.rb index 2fb3d621..8d8af8b2 100755 --- a/app/controllers/api/bill_controller.rb +++ b/app/controllers/api/bill_controller.rb @@ -47,9 +47,12 @@ class Api::BillController < Api::ApiController Promotion.promo_activate(@sale) #BillBroadcastJob.perform_later(table) - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "bill_channel",table: table - #end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "bill_channel",table: table, from: from else @status = false @error_message = "No Current Open Shift" diff --git a/app/controllers/api/call_waiters_controller.rb b/app/controllers/api/call_waiters_controller.rb index b8c11897..9c6ad974 100644 --- a/app/controllers/api/call_waiters_controller.rb +++ b/app/controllers/api/call_waiters_controller.rb @@ -6,9 +6,12 @@ class Api::CallWaitersController < ActionController::API @time = params[:time] @table = DiningFacility.find(@table_id) # CallWaiterJob.perform_later(@table,@time) - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time - #end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time,from: from # get printer info @shop = Shop.first unique_code = "CallWaiterPdf" diff --git a/app/controllers/api/check_in_process_controller.rb b/app/controllers/api/check_in_process_controller.rb index 4bd9434d..492e345e 100644 --- a/app/controllers/api/check_in_process_controller.rb +++ b/app/controllers/api/check_in_process_controller.rb @@ -6,7 +6,16 @@ class Api::CheckInProcessController < Api::ApiController booking = dining_facility.get_current_checkout_booking if !booking.nil? - DiningFacility.check_in_booking(params[:dining_id]) + # DiningFacility.check_in_booking(params[:dining_id]) + + table = DiningFacility.find(params[:dining_id]) + #Send to background job for processing + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from check_in_time = booking.checkin_at.utc.getlocal.strftime("%Y-%m-%d %H:%M") check_out_time = booking.checkout_at.utc.getlocal.strftime("%Y-%m-%d %H:%M") diff --git a/app/controllers/api/order_reserve/order_reservation_controller.rb b/app/controllers/api/order_reserve/order_reservation_controller.rb index a7929653..32e87a20 100644 --- a/app/controllers/api/order_reserve/order_reservation_controller.rb +++ b/app/controllers/api/order_reserve/order_reservation_controller.rb @@ -73,7 +73,12 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is successfully created!" } order_reservation = OrderReservation.get_pending_orders #find(order_reservation_id) - ActionCable.server.broadcast "order_reservation_channel",data: order_reservation,shop_code: shop_code + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "order_reservation_channel",data: order_reservation,shop_code: shop_code,from:from else result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" } end diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb index 63cb8736..3fc11693 100755 --- a/app/controllers/origami/addorders_controller.rb +++ b/app/controllers/origami/addorders_controller.rb @@ -181,6 +181,12 @@ puts params[:id] @status, @booking = @order.generate + if @status && @booking + if params[:order_source] != "quick_service" + process_order_queue(@order.order_id,@order.table_id,@order.source) + end + end + # Order.send_customer_view(@booking) if current_user.role != "waiter" && params[:create_type] == "create_pay" @@ -188,8 +194,12 @@ puts params[:id] @status, @sale = Sale.request_bill(@order,current_user,current_login_employee) # for second display - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale" + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale",from:from #end result = {:status=> @status, :data => @sale } render :json => result.to_json @@ -240,6 +250,81 @@ puts params[:id] return false end end + + def process_order_queue(order_id,table_id,order_source) + print_status = nil + cup_status = nil + + #Send to background job for processing + order = Order.find(order_id) + sidekiq = Lookup.find_by_lookup_type("sidekiq") + + if ENV["SERVER_MODE"] != 'cloud' + cup_status = `#{"sudo service cups status"}` + print_status = check_cup_status(cup_status) + end + + if print_status + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(order_id, table_id) + else + if order + oqs = OrderQueueStation.new + oqs.process_order(order, table_id, order_source) + end + # assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id) + # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + end + else + if ENV["SERVER_MODE"] != 'cloud' + cup_start = `#{"sudo service cups start"}` + cup_status = `#{"sudo service cups status"}` + print_status = check_cup_status(cup_status) + end + + if print_status + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(order_id, table_id) + else + if order + oqs = OrderQueueStation.new + oqs.process_order(order, table_id, order_source) + end + # assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id) + # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + end + else + if ENV["SERVER_MODE"] != 'cloud' + from = "" + msg = ' Print Error ! Please contact to service' + ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error',from:from + end + if !sidekiq.nil? + OrderQueueProcessorJob.perform_later(order_id, table_id) + else + if order + oqs = OrderQueueStation.new + oqs.process_order(order, table_id, order_source) + end + + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id) + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from + end + end + end + end + + def check_cup_status(status) + if status.include? "Active: active (running)" || "Active: active (exited)" #"Cup Server is already running" + return true + end + return false + end private diff --git a/app/controllers/origami/second_display_controller.rb b/app/controllers/origami/second_display_controller.rb index ac869719..5f88bdfc 100644 --- a/app/controllers/origami/second_display_controller.rb +++ b/app/controllers/origami/second_display_controller.rb @@ -13,8 +13,12 @@ class Origami::SecondDisplayController < BaseOrigamiController else tax_profiles = nil end - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "second_display_view_channel",data: params[:data],tax_profiles: tax_profiles,status:params[:status] + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "second_display_view_channel",data: params[:data],tax_profiles: tax_profiles,status:params[:status],from:from # end end #Shop Name in Navbor diff --git a/app/controllers/origami/split_bill_controller.rb b/app/controllers/origami/split_bill_controller.rb index 2d2ca4fb..77f4589a 100755 --- a/app/controllers/origami/split_bill_controller.rb +++ b/app/controllers/origami/split_bill_controller.rb @@ -337,9 +337,13 @@ class Origami::SplitBillController < BaseOrigamiController end Promotion.promo_activate(sale) - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "bill_channel",table: table - #end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "bill_channel",table: table,from:from + render :json => { status: status } else render :json => { status: false, error_message: 'No Current Open Shift!'} diff --git a/app/models/dining_facility.rb b/app/models/dining_facility.rb index cff5fd60..c0843dbd 100755 --- a/app/models/dining_facility.rb +++ b/app/models/dining_facility.rb @@ -157,15 +157,25 @@ class DiningFacility < ApplicationRecord #Send to background job for processing # CheckInBookingJob.perform_later(table) #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "check_in_booking_channel",table: table + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from #end end def self.checkin_time table = DiningFacility.get_checkin_booking if table.length > 0 + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "checkin_channel",table: table + ActionCable.server.broadcast "checkin_channel",table: table,from:from end end end diff --git a/app/models/display_image.rb b/app/models/display_image.rb index 30d83566..73e88e31 100644 --- a/app/models/display_image.rb +++ b/app/models/display_image.rb @@ -1,3 +1,3 @@ class DisplayImage < ApplicationRecord - belongs_to :shop + belongs_to :shop end diff --git a/app/models/order.rb b/app/models/order.rb index 8a0e52b3..9a52942e 100755 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -71,9 +71,9 @@ class Order < ApplicationRecord BookingOrder.create({:booking_id => booking.booking_id, :order => self}) #Send order to queue one it done! - if self.source != "quick_service" - process_order_queue - end + # if self.source != "quick_service" + # process_order_queue + # end #send order to broadcast job send_order_broadcast(booking) @@ -108,9 +108,9 @@ class Order < ApplicationRecord BookingOrder.create({:booking_id => booking.booking_id, :order => self}) #Send order to queue one it done! - if self.source != "quick_service" - process_order_queue - end + # if self.source != "quick_service" + # process_order_queue + # end #send order to broadcast job send_order_broadcast(booking) @@ -283,69 +283,7 @@ class Order < ApplicationRecord # Counter number of quantityf end - #Process order items and send to order queue - def process_order_queue - print_status = nil - cup_status = nil - - #Send to background job for processing - order = Order.find(self.id) - sidekiq = Lookup.find_by_lookup_type("sidekiq") - - if ENV["SERVER_MODE"] != 'cloud' - cup_status = `#{"sudo service cups status"}` - print_status = check_cup_status(cup_status) - end - - if print_status - if !sidekiq.nil? - OrderQueueProcessorJob.perform_later(self.id, self.table_id) - else - if order - oqs = OrderQueueStation.new - oqs.process_order(order, self.table_id, self.source) - end - # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) - # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order - end - else - if ENV["SERVER_MODE"] != 'cloud' - cup_start = `#{"sudo service cups start"}` - cup_status = `#{"sudo service cups status"}` - print_status = check_cup_status(cup_status) - end - - if print_status - if !sidekiq.nil? - OrderQueueProcessorJob.perform_later(self.id, self.table_id) - else - if order - oqs = OrderQueueStation.new - oqs.process_order(order, self.table_id, self.source) - end - # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) - # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order - end - else - if ENV["SERVER_MODE"] != 'cloud' - - msg = ' Print Error ! Please contact to service' - ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error' - end - if !sidekiq.nil? - OrderQueueProcessorJob.perform_later(self.id, self.table_id) - else - if order - oqs = OrderQueueStation.new - oqs.process_order(order, self.table_id, self.source) - end - assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) - ActionCable.server.broadcast "order_queue_station_channel",order: assign_order - end - end - end - end - + #Process order items and send to order queue def self.pay_process_order_queue(id,table_id) # if ENV["SERVER_MODE"] != 'cloud' @@ -378,9 +316,13 @@ class Order < ApplicationRecord type = 'order' #Send to background job for processing # OrderBroadcastJob.perform_later(table,type) - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "order_channel",table: table,type:type - #end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "order_channel",table: table,type:type,from:from + end end @@ -534,11 +476,78 @@ class Order < ApplicationRecord end end end - #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status - #end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status,from:from end + #Process order items and send to order queue + # def process_order_queue + # print_status = nil + # cup_status = nil + + # #Send to background job for processing + # order = Order.find(self.id) + # sidekiq = Lookup.find_by_lookup_type("sidekiq") + + # if ENV["SERVER_MODE"] != 'cloud' + # cup_status = `#{"sudo service cups status"}` + # print_status = check_cup_status(cup_status) + # end + + # if print_status + # if !sidekiq.nil? + # OrderQueueProcessorJob.perform_later(self.id, self.table_id) + # else + # if order + # oqs = OrderQueueStation.new + # oqs.process_order(order, self.table_id, self.source) + # end + # # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) + # # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + # end + # else + # if ENV["SERVER_MODE"] != 'cloud' + # cup_start = `#{"sudo service cups start"}` + # cup_status = `#{"sudo service cups status"}` + # print_status = check_cup_status(cup_status) + # end + + # if print_status + # if !sidekiq.nil? + # OrderQueueProcessorJob.perform_later(self.id, self.table_id) + # else + # if order + # oqs = OrderQueueStation.new + # oqs.process_order(order, self.table_id, self.source) + # end + # # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) + # # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + # end + # else + # if ENV["SERVER_MODE"] != 'cloud' + + # msg = ' Print Error ! Please contact to service' + # ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error' + # end + # if !sidekiq.nil? + # OrderQueueProcessorJob.perform_later(self.id, self.table_id) + # else + # if order + # oqs = OrderQueueStation.new + # oqs.process_order(order, self.table_id, self.source) + # end + # assign_order = AssignedOrderItem.assigned_order_item_by_job(self.id) + # ActionCable.server.broadcast "order_queue_station_channel",order: assign_order + # end + # end + # end + # end + + private def generate_custom_id diff --git a/app/models/order_queue_station.rb b/app/models/order_queue_station.rb index 70b28c1f..a775601a 100755 --- a/app/models/order_queue_station.rb +++ b/app/models/order_queue_station.rb @@ -116,7 +116,19 @@ class OrderQueueStation < ApplicationRecord order = Order.find(order_id) order_items = order.order_items - Order.pay_process_order_queue(order_id,table_id) + # Order.pay_process_order_queue(order_id,table_id) + if order + oqs = OrderQueueStation.new + oqs.process_order(order, table_id) + end + assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id) + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from + if table_id.to_i > 0 # get dining dining = DiningFacility.find(table_id) diff --git a/app/models/order_reservation.rb b/app/models/order_reservation.rb index 057f6f9b..69b94ff8 100644 --- a/app/models/order_reservation.rb +++ b/app/models/order_reservation.rb @@ -317,9 +317,15 @@ class OrderReservation < ApplicationRecord end order_reservation = OrderReservation.where("status='new'") if order_reservation.length > 0 - if ENV["SERVER_MODE"] == 'cloud' - ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code - end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code,from:from + else + from = "" + end + # if ENV["SERVER_MODE"] == 'cloud' + # ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code + # end end end @@ -332,9 +338,15 @@ class OrderReservation < ApplicationRecord end order_reservation = OrderReservation.where("status='accepted' and requested_time <= '#{Time.now.utc}'") if order_reservation.length > 0 - if ENV["SERVER_MODE"] == 'cloud' - ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation, shop_code: shop_code - end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation, shop_code: shop_code,from:from + else + from = "" + end + # if ENV["SERVER_MODE"] == 'cloud' + # ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation, shop_code: shop_code + # end end end @@ -347,9 +359,15 @@ class OrderReservation < ApplicationRecord end order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time <= '#{Time.now.utc}'") if order_reservation.length > 0 - if ENV["SERVER_MODE"] == 'cloud' - ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation, shop_code: shop_code - end + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation, shop_code: shop_code,from:from + else + from = "" + end + # if ENV["SERVER_MODE"] == 'cloud' + # ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation, shop_code: shop_code + # end end end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 5f372581..5fbc8c24 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -609,7 +609,12 @@ class SalePayment < ApplicationRecord #Send to background job for processing # OrderBroadcastJob.perform_later(table,type) #if ENV["SERVER_MODE"] != 'cloud' - ActionCable.server.broadcast "order_channel",table: table,type:type + if ENV["SERVER_MODE"] == 'cloud' + from = request.subdomain + "." + request.domain + else + from = "" + end + ActionCable.server.broadcast "order_channel",table: table,type:type,from:from #end end end diff --git a/db/migrate/20180213053009_create_display_images.rb b/db/migrate/20180521041850_create_display_images.rb similarity index 82% rename from db/migrate/20180213053009_create_display_images.rb rename to db/migrate/20180521041850_create_display_images.rb index f40a9179..f139d227 100644 --- a/db/migrate/20180213053009_create_display_images.rb +++ b/db/migrate/20180521041850_create_display_images.rb @@ -2,13 +2,11 @@ class CreateDisplayImages < ActiveRecord::Migration[5.1] def change create_table :display_images do |t| t.integer :shop_id + t.string :name t.binary :image t.string :created_by + t.timestamps end end - - def down - drop_table :display_images - end end diff --git a/spec/models/display_image_spec.rb b/spec/models/display_image_spec.rb new file mode 100644 index 00000000..1c6a0666 --- /dev/null +++ b/spec/models/display_image_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe DisplayImage, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end