update action cable and other bugs

This commit is contained in:
Aung Myo
2018-05-21 13:00:55 +06:30
parent e722ab88e9
commit 7e8b69aa7c
26 changed files with 749 additions and 537 deletions

View File

@@ -6,68 +6,73 @@ App.call_waiter = App.cable.subscriptions.create('CallWaiterChannel', {
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
table = data.table
time = data.time
// for Notificaiotn message var hostname = location.hostname.trim();
var element = "#notify-wrapper" if(data.from == "" || hostname == data.from)
var animateEnter = "";
var animateExit = "";
if (time == 'print_error') {
var colorName = "alert-danger";
var placementFrom = "center";
var placementAlign = "center";
var text = " Hello <br> "+table ;
style =""
}else{
var colorName = "alert-warning";
var placementFrom = "top";
var placementAlign = "center";
var text = " Calling Waiter <br> "+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, table = data.table
type: colorName, time = data.time
allow_dismiss: allowDismiss,
timer: 200000000000000, // for Notificaiotn message
placement: { var element = "#notify-wrapper"
from: placementFrom, var animateEnter = "";
align: placementAlign var animateExit = "";
},
animate: { if (time == 'print_error') {
enter: animateEnter, var colorName = "alert-danger";
exit: animateExit var placementFrom = "center";
}, var placementAlign = "center";
template: '<div data-notify="container" style="'+style+'" class="bootstrap-notify-container alert alert-dismissible {0} ' + (allowDismiss ? "p-r-30" : "") + '" role="alert">' + var text = " Hello <br> "+table ;
'<button type="button" aria-hidden="true" class="close notify-close float-right m-l-5 m-t--5" data-notify="dismiss">×</button>' + style =""
'<span data-notify="icon"></span> ' + }else{
'<span data-notify="title">{1}</span> ' + var colorName = "alert-warning";
'<span data-notify="message">{2}</span>' + var placementFrom = "top";
'<div class="progress" data-notify="progressbar">' + var placementAlign = "center";
'<div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>' + var text = " Calling Waiter <br> "+table.name ;
'</div>' + style ="width:180px !important;"
'<a href="{3}" target="{4}" data-notify="url"></a>' + }
'</div>'
});
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: '<div data-notify="container" style="'+style+'" class="bootstrap-notify-container alert alert-dismissible {0} ' + (allowDismiss ? "p-r-30" : "") + '" role="alert">' +
'<button type="button" aria-hidden="true" class="close notify-close float-right m-l-5 m-t--5" data-notify="dismiss">×</button>' +
'<span data-notify="icon"></span> ' +
'<span data-notify="title">{1}</span> ' +
'<span data-notify="message">{2}</span>' +
'<div class="progress" data-notify="progressbar">' +
'<div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>' +
'</div>' +
'<a href="{3}" target="{4}" data-notify="url"></a>' +
'</div>'
});
}
//end Notificaiotn message
}
} }
//end Notificaiotn message
}
}); });

View File

@@ -5,12 +5,16 @@ App.checkin = App.cable.subscriptions.create('CheckInBookingChannel', {
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
if($('.table_'+data.table.id).hasClass('green')){ var hostname = location.hostname.trim();
$('.table_'+data.table.id).removeClass('green'); if(data.from == "" || hostname == data.from)
$('.table_'+data.table.id).addClass('blue'); {
} if($('.table_'+data.table.id).hasClass('green')){
$('.new_text_'+data.table.id).removeClass('hide'); $('.table_'+data.table.id).removeClass('green');
$('.table_'+data.table.id).addClass('blue');
}
$('.new_text_'+data.table.id).removeClass('hide');
}
} }
}); });

View File

@@ -3,36 +3,40 @@ App.check_new_order = App.cable.subscriptions.create('CheckNewOrderChannel', {
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var order = data.data; var hostname = location.hostname.trim();
var shop_code = data.shop_code; if(data.from == "" || hostname == data.from)
if(order.length > 0){ {
var order_lists = ""; var order = data.data;
$.each(order, function(key, value){ var shop_code = data.shop_code;
if(key==0){ if(order.length > 0){
order_lists = value.order_reservation_id; var order_lists = "";
}else if(key == (order.length - 1)){ $.each(order, function(key, value){
order_lists += ' and ' + value.order_reservation_id; if(key==0){
}else{ order_lists = value.order_reservation_id;
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); // alert(order_lists);
checkNewOrderAlert(shop_code, order_lists); checkNewOrderAlert(shop_code, order_lists);
// $("#notify_new_order_lists").text(order_lists); // $("#notify_new_order_lists").text(order_lists);
// if($("#"+shop_code+"_notify_new_order").hasClass("hidden")){ // if($("#"+shop_code+"_notify_new_order").hasClass("hidden")){
// $("#"+shop_code+"_notify_new_order").removeClass("hidden"); // $("#"+shop_code+"_notify_new_order").removeClass("hidden");
// } // }
// $("#"+shop_code+"_notify_new_order").on('shown.bs.modal', function(e){ // $("#"+shop_code+"_notify_new_order").on('shown.bs.modal', function(e){
// // $(document).off('focusin.modal'); // // $(document).off('focusin.modal');
// $("#"+shop_code+"_notify_new_order").focus(); // $("#"+shop_code+"_notify_new_order").focus();
// $("#"+shop_code+"_doemal_new_order").addClass("hidden"); // $("#"+shop_code+"_doemal_new_order").addClass("hidden");
// $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden");
// $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden");
// }).on('hide.bs.modal', function (e) { // }).on('hide.bs.modal', function (e) {
// $("#"+shop_code+"_notify_new_order").addClass("hidden"); // $("#"+shop_code+"_notify_new_order").addClass("hidden");
// }).modal({show: true, keyboard: false, backdrop: false}); // }).modal({show: true, keyboard: false, backdrop: false});
}
} }
} }
}); });

View File

@@ -3,36 +3,40 @@ App.check_order_ready_to_delivery = App.cable.subscriptions.create('CheckOrderRe
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var order = data.data; var hostname = location.hostname.trim();
var shop_code = data.shop_code; if(data.from == "" || hostname == data.from)
if(order.length > 0){ {
var order_lists = ""; var order = data.data;
$.each(order, function(key, value){ var shop_code = data.shop_code;
if(key==0){ if(order.length > 0){
order_lists = value.order_reservation_id; var order_lists = "";
}else if(key == (order.length - 1)){ $.each(order, function(key, value){
order_lists += ' and ' + value.order_reservation_id; if(key==0){
}else{ order_lists = value.order_reservation_id;
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); // alert(order_lists);
checkOrderReadyToKitchenAlert(shop_code, order_lists); checkOrderReadyToKitchenAlert(shop_code, order_lists);
// $("#notify_order_ready_to_delivery_lists").text(order_lists); // $("#notify_order_ready_to_delivery_lists").text(order_lists);
// if($("#notify_order_ready_to_delivery").hasClass("hidden")){ // if($("#notify_order_ready_to_delivery").hasClass("hidden")){
// $("#"+shop_code+"_notify_order_ready_to_delivery").removeClass("hidden"); // $("#"+shop_code+"_notify_order_ready_to_delivery").removeClass("hidden");
// } // }
// $("#"+shop_code+"_notify_order_ready_to_delivery").on('shown.bs.modal', function(e){ // $("#"+shop_code+"_notify_order_ready_to_delivery").on('shown.bs.modal', function(e){
// // $(document).off('focusin.modal'); // // $(document).off('focusin.modal');
// $("#"+shop_code+"_notify_order_ready_to_delivery").focus(); // $("#"+shop_code+"_notify_order_ready_to_delivery").focus();
// $("#"+shop_code+"_doemal_new_order").addClass("hidden"); // $("#"+shop_code+"_doemal_new_order").addClass("hidden");
// $("#"+shop_code+"_notify_new_order").addClass("hidden"); // $("#"+shop_code+"_notify_new_order").addClass("hidden");
// $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden");
// }).on('hide.bs.modal', function (e) { // }).on('hide.bs.modal', function (e) {
// $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden");
// }).modal({show: true, keyboard: false, backdrop: false}); // }).modal({show: true, keyboard: false, backdrop: false});
}
} }
} }
}); });

View File

@@ -4,35 +4,39 @@ App.check_order_send_to_kitchen = App.cable.subscriptions.create('CheckOrderSend
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var order = data.data; var hostname = location.hostname.trim();
var shop_code = data.shop_code; if(data.from == "" || hostname == data.from)
if(order.length > 0){ {
var order_lists = ""; var order = data.data;
$.each(order, function(key, value){ var shop_code = data.shop_code;
if(key==0){ if(order.length > 0){
order_lists = value.order_reservation_id; var order_lists = "";
}else if(key == (order.length - 1)){ $.each(order, function(key, value){
order_lists += ' and ' + value.order_reservation_id; if(key==0){
}else{ order_lists = value.order_reservation_id;
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); // alert(order_lists);
checkOrderSendToKitchen(shop_code, order_lists); checkOrderSendToKitchen(shop_code, order_lists);
// $("#notify_order_send_to_kitchen_lists").text(order_lists); // $("#notify_order_send_to_kitchen_lists").text(order_lists);
// if($("#notify_order_send_to_kitchen").hasClass("hidden")){ // if($("#notify_order_send_to_kitchen").hasClass("hidden")){
// $("#"+shop_code+"_notify_order_send_to_kitchen").removeClass("hidden"); // $("#"+shop_code+"_notify_order_send_to_kitchen").removeClass("hidden");
// } // }
// $("#"+shop_code+"_notify_order_send_to_kitchen").on('shown.bs.modal', function(e){ // $("#"+shop_code+"_notify_order_send_to_kitchen").on('shown.bs.modal', function(e){
// // $(document).off('focusin.modal'); // // $(document).off('focusin.modal');
// $("#"+shop_code+"_notify_order_send_to_kitchen").focus(); // $("#"+shop_code+"_notify_order_send_to_kitchen").focus();
// $("#"+shop_code+"_doemal_new_order").addClass("hidden"); // $("#"+shop_code+"_doemal_new_order").addClass("hidden");
// $("#"+shop_code+"_notify_new_order").addClass("hidden"); // $("#"+shop_code+"_notify_new_order").addClass("hidden");
// $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden"); // $("#"+shop_code+"_notify_order_ready_to_delivery").addClass("hidden");
// }).on('hide.bs.modal', function (e) { // }).on('hide.bs.modal', function (e) {
// $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden"); // $("#"+shop_code+"_notify_order_send_to_kitchen").addClass("hidden");
// }).modal({show: true, keyboard: false, backdrop: false}); // }).modal({show: true, keyboard: false, backdrop: false});
}
} }
} }
}); });

View File

@@ -6,6 +6,9 @@ App.order = App.cable.subscriptions.create('CheckinChannel', {
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var hostname = location.hostname.trim();
if(data.from == "" || hostname == data.from)
{
$.each(data.table,function(key,value){ $.each(data.table,function(key,value){
if($('.table_'+value.table_id).hasClass('blue')){ if($('.table_'+value.table_id).hasClass('blue')){
$('.table_'+value.table_id).removeClass('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'); $('.new_text_'+value.table_id).removeClass('hide');
}); });
} }
}
}); });

View File

@@ -3,7 +3,12 @@ App.order = App.cable.subscriptions.create('OrderChannel', {
disconnected: function() {}, 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') { if (data.type == 'order') {
$('.table_'+data.table.id).removeClass('green'); $('.table_'+data.table.id).removeClass('green');
$('.table_'+data.table.id).addClass('blue'); $('.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).html('');
$('.new_text_'+data.table.id).removeClass('hide') $('.new_text_'+data.table.id).removeClass('hide')
} }
}
} }
}); });

View File

@@ -6,83 +6,86 @@ App.order_queue_station = App.cable.subscriptions.create('OrderQueueStationChann
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var oqs_id = $('.oqs_active').attr('data-id'); var hostname = location.hostname.trim();
items = data.order; if(data.from == "" || hostname == data.from){
for(var field in items) { var oqs_id = $('.oqs_active').attr('data-id');
var price = parseFloat(items[field].price).toFixed(2); items = data.order;
if (items[field]["options"] == "[]" || items[field]["options"] == "") { for(var field in items) {
var options = ""; var price = parseFloat(items[field].price).toFixed(2);
}else{ if (items[field]["options"] == "[]" || items[field]["options"] == "") {
var options = items[field]["options"]; var options = "";
} }else{
//for count var options = items[field]["options"];
test = document.getElementsByClassName("oqs_count"); }
//for count
test = document.getElementsByClassName("oqs_count");
for (var i = 0; i < test.length; i++) { for (var i = 0; i < test.length; i++) {
oqs_count_id = $(".oqs_count"+i).attr("data-id"); oqs_count_id = $(".oqs_count"+i).attr("data-id");
oqs_count = $(".oqs_count"+i).text(); oqs_count = $(".oqs_count"+i).text();
if ( oqs_count_id == items[field]["order_queue_station_id"]) { if ( oqs_count_id == items[field]["order_queue_station_id"]) {
oqs_count_total = +oqs_count +1 ; oqs_count_total = +oqs_count +1 ;
$(".oqs_count"+i).text(oqs_count_total) $(".oqs_count"+i).text(oqs_count_total)
} }
} }
//end count //end count
var date = new Date(items[field]["created_at"]); 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.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear() + ' ' + date.getHours()+ ':' + date.getMinutes();
var show_date =date.getHours()+ ':' + date.getMinutes() +' '+(date.getHours() >= 12 ? 'PM' : 'AM'); var show_date =date.getHours()+ ':' + date.getMinutes() +' '+(date.getHours() >= 12 ? 'PM' : 'AM');
if (oqs_id == items[field]["order_queue_station_id"]) { if (oqs_id == items[field]["order_queue_station_id"]) {
var table_type = (items[field]["table_type"] != null) ? items[field]["table_type"]:""; var table_type = (items[field]["table_type"] != null) ? items[field]["table_type"]:"";
var zone = (items[field]["zone"] != null) ? "-"+items[field]["zone"]:"No Table"; var zone = (items[field]["zone"] != null) ? "-"+items[field]["zone"]:"No Table";
(name === 'true') ? 'Y' :'N'; (name === 'true') ? 'Y' :'N';
row ='<div class="card queue_station animated shake queue_station_box" data-order-no="'+items[field]["order_id"]+'">' row ='<div class="card queue_station animated shake queue_station_box" data-order-no="'+items[field]["order_id"]+'">'
+'<strong class="hidden">'+items[field]["order_id"]+'</strong>' +'<strong class="hidden">'+items[field]["order_id"]+'</strong>'
+'<div class="card-block">' +'<div class="card-block">'
+'<div class="row">' +'<div class="row">'
+'<span class="col-md-4 order-zone-type font-13">'+table_type+''+ zone+'</span>' +'<span class="col-md-4 order-zone-type font-13">'+table_type+''+ zone+'</span>'
+'<span class="order-zone hidden font-14">'+ zone +'</span>' +'<span class="order-zone hidden font-14">'+ zone +'</span>'
+'<span class="col-md-8"><small class="float-right font-13">'+items[field]["order_id"]+'</small></span>' +'<span class="col-md-8"><small class="float-right font-13">'+items[field]["order_id"]+'</small></span>'
+'</div>' +'</div>'
+'<p class="m-b--10">' +'<p class="m-b--10">'
+'<span class="order-item font-15">'+ items[field]["item_name"] +'- </span>' +'<span class="order-item font-15">'+ items[field]["item_name"] +'- </span>'
+'<span class="order-qty"> [x'+ items[field]["qty"] +'] </span>' +'<span class="order-qty"> [x'+ items[field]["qty"] +'] </span>'
+'</p>' +'</p>'
+'<br/><p class="card-text item-options">'+ options +'</p>' +'<br/><p class="card-text item-options">'+ options +'</p>'
+'<span class="card-text">' +'<span class="card-text">'
+'<span class="text-muted">Order at - ' +'<span class="text-muted">Order at - '
+'<span class="order-at">'+ show_date +'</span> <br>' +'<span class="order-at">'+ show_date +'</span> <br>'
+'Order By - <span class="order-by">'+ items[field]["item_order_by"] +'</span> ' +'Order By - <span class="order-by">'+ items[field]["item_order_by"] +'</span> '
+'</span> ' +'</span> '
+'</span>' +'</span>'
+'<p class="hidden order-customer">'+ items[field]["customer_name"] +'</p> ' +'<p class="hidden order-customer">'+ items[field]["customer_name"] +'</p> '
+'<p class="hidden assigned-order-item">'+ items[field]["assigned_order_item_id"] +'</p> ' +'<p class="hidden assigned-order-item">'+ items[field]["assigned_order_item_id"] +'</p> '
+'</div>' +'</div>'
+'<div class="card-footer">' +'<div class="card-footer">'
+'<button id="edit_'+ items[field]["assigned_order_item_id"]+'" class="btn btn-warning order-item order-item-edit">EDIT</button>' +'<button id="edit_'+ items[field]["assigned_order_item_id"]+'" class="btn btn-warning order-item order-item-edit">EDIT</button>'
+' <button id="assigned_queue_' + items[field]["assigned_order_item_id"] +'" class="btn btn-primary order-item order-complete">COMPLETE</button>' +' <button id="assigned_queue_' + items[field]["assigned_order_item_id"] +'" class="btn btn-primary order-item order-complete">COMPLETE</button>'
+'</div>' +'</div>'
+'</div>'; +'</div>';
$('.oqs_append').append(row); $('.oqs_append').append(row);
} }
}//end looping }//end looping
var $divs = $("div.queue_station"); var $divs = $("div.queue_station");
var SortListDivs = $divs.sort(function (a, b) { var SortListDivs = $divs.sort(function (a, b) {
first = $(a).attr('data-order-no'); first = $(a).attr('data-order-no');
next = $(b).attr('data-order-no'); next = $(b).attr('data-order-no');
return parseInt(next.substring(4, 16)) - parseInt(first.substring(4, 16)); return parseInt(next.substring(4, 16)) - parseInt(first.substring(4, 16));
}); });
$("#oqs_container").html(SortListDivs); $("#oqs_container").html(SortListDivs);
}
}, },
}); });

View File

@@ -4,50 +4,53 @@ App.order_reservation = App.cable.subscriptions.create('OrderReservationChannel'
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var shop_code = data.shop_code; var hostname = location.hostname.trim();
var order = data.data; if(data.from == "" || hostname == data.from){
if(order.length > 0){ var shop_code = data.shop_code;
$('.custom-table.'+shop_code+'_order_reserve_cable tbody').html(""); var order = data.data;
$("."+shop_code+" > .nav-item.red > a > p.num").text(order.length); if(order.length > 0){
$.each(order, function(key,value){ $('.custom-table.'+shop_code+'_order_reserve_cable tbody').html("");
var active_class = ""; $("."+shop_code+" > .nav-item.red > a > p.num").text(order.length);
if(key==0){ $.each(order, function(key,value){
active_class = "tr-active"; var active_class = "";
showNewOrder(order[key],shop_code); if(key==0){
} active_class = "tr-active";
var rowCount = key+1; showNewOrder(order[key],shop_code);
var date = new Date(value.created_at); }
var time = timeFormat(date); var rowCount = key+1;
var created_at = date.getFullYear() +'-'+ (date.getMonth() >= 10? date.getMonth() : '0' + (date.getMonth() + 1)) +'-'+ (date.getDate() >=10?date.getDate() : '0'+date.getDate()); 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 = ""; var delivery_type = "";
if(value.provider == "food2u" || value.provider == "yangondoor2door"){ if(value.provider == "food2u" || value.provider == "yangondoor2door"){
delivery_type = "DELIVERY"; delivery_type = "DELIVERY";
}else if(value.provider == "pick_up"){ }else if(value.provider == "pick_up"){
delivery_type = "PICK-UP"; delivery_type = "PICK-UP";
}else{ }else{
delivery_type = "DIRECT DELIVERY"; delivery_type = "DIRECT DELIVERY";
} }
row = '<tr class="custom-tr first-'+rowCount+' '+active_class+'" style="" data-id="'+value.order_reservation_id+'" data-sr-no="'+rowCount+'">' row = '<tr class="custom-tr first-'+rowCount+' '+active_class+'" style="" data-id="'+value.order_reservation_id+'" data-sr-no="'+rowCount+'">'
+'<td width ="5%" class="align-left">'+rowCount +'<td width ="5%" class="align-left">'+rowCount
+'</td>' +'</td>'
+'<td width ="20%" class="align-center">'+created_at +'<td width ="20%" class="align-center">'+created_at
+'</td>' +'</td>'
+'<td width ="20%" class="align-center">'+time +'<td width ="20%" class="align-center">'+time
+'</td>' +'</td>'
+'<td width ="20%" class="align-center">'+value.grand_total +'<td width ="20%" class="align-center">'+value.grand_total
+'</td>' +'</td>'
+'<td width ="30%" class="align-center">' +'<td width ="30%" class="align-center">'
+'<span class="font-10 col-blue">'+ delivery_type +'</span>' +'<span class="font-10 col-blue">'+ delivery_type +'</span>'
+'</td>' +'</td>'
+' </tr>'; +' </tr>';
$('.custom-table.'+shop_code+'_order_reserve_cable tbody').append(row); $('.custom-table.'+shop_code+'_order_reserve_cable tbody').append(row);
}); });
}
customTableClick();
} }
customTableClick();
} }
}); });

View File

@@ -5,33 +5,36 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayChannel', {
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var data_obj = data.data; var hostname = location.hostname.trim();
var status = data.status; if(data.from == "" || hostname == data.from){
var count = 0 var data_obj = data.data;
var sub_total = 0 var status = data.status;
if (data.status == "order") { var count = 0
for(var i in data_obj) { 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) sub_total = sub_total + (data_obj[i].price * data_obj[i].qty)
count += 1 count += 1
row ='<tr>' row ='<tr>'
+'<td>'+count+'</td>' +'<td>'+count+'</td>'
+'<td class="item-name">'+data_obj[i].item_name+'</td>' +'<td class="item-name">'+data_obj[i].item_name+'</td>'
+'<td class="item-attr">'+data_obj[i].qty +'</td>' +'<td class="item-attr">'+data_obj[i].qty +'</td>'
+ '<td class="item-attr">'+data_obj[i].qty*data_obj[i].price +'</td>' + '<td class="item-attr">'+data_obj[i].qty*data_obj[i].price +'</td>'
+'</tr>' +'</tr>'
$(".second_display_items").append(row); $(".second_display_items").append(row);
}//end looping }//end looping
}else{ }else{
$('#s_sub_total').empty(); $('#s_sub_total').empty();
$('#s_sub_total').append(data_obj.total_amount); $('#s_sub_total').append(data_obj.total_amount);
$('#s_total_discount').empty(); $('#s_total_discount').empty();
$('#s_total_discount').append(data_obj.total_discount); $('#s_total_discount').append(data_obj.total_discount);
$('#s_tatal_tax').empty(); $('#s_tatal_tax').empty();
$('#s_tatal_tax').append(data_obj.total_tax); $('#s_tatal_tax').append(data_obj.total_tax);
$('#s_grand_total').empty(); $('#s_grand_total').empty();
$('#s_grand_total').append(data_obj.grand_total); $('#s_grand_total').append(data_obj.grand_total);
}
} }
} }
}); });

View File

@@ -6,161 +6,163 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayViewChannel', {
disconnected: function() {}, disconnected: function() {},
received: function(data) { received: function(data) {
var items = data.data; var hostname = location.hostname.trim();
var tax = data.tax_profiles; if(data.from == "" || hostname == data.from){
var status= data.status var items = data.data;
if (status == "reload") { var tax = data.tax_profiles;
jQuery('#s_reload').click(); var status= data.status
} if (status == "reload") {
$('#second_display_slider').addClass("hidden") jQuery('#s_reload').click();
$('#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 ="<tr class='item_box' data-price ='"
+price+ "' 'data-instance ='"
+instance+ "' data-code='"+items[i].item_code+"' data-instance-code='"
+items[i].instance_code+"' data-attributes='"
+items[i].attributes+"' data-options ='"
+data_option+"' data-opt ='"
+items[i].options+"' data-row ='"+rowCount+ "'>"
+'<td class="item-cell-no">'+rowCount+'</td>'
+'<td class="item-cell-name" id="item_name" >' + items[i].name+ ' ' + instance + ' ' + option_name +'</td>'
+'<td class="item-cell-qty" id="item_qty">' + qty + '</td>'
+'<td class="item-cell-price" id="item_price">'
+ parseFloat(price).toFixed(2)
+'</td>'
+'</tr>';
$(".second_display_items tbody").append(row);
}
} }
} $('#second_display_slider').addClass("hidden")
if (status == "set_add") { $('#second_display_items').removeClass("hidden")
// var option_arr = [];
var attribute_arr = [];
var rowCount = $('.second_display_items tbody tr').length+1; // append items
for(var i in items) { if (status == "add") {
code = items[i].code; for(var i in items) {
item_code = items[i].item_code; qty = parseInt(items[i].qty);
name = items[i].name; append = 0;
item_name = items[i].item_name;
qty = items[i].qty;
price = items[i].price; price = items[i].price;
option = items[i].option;
sub_item = items[i].sub_item; instance_name = items[i].instance;
total = qty * price ; if (instance_name == "undefined"){
// option_arr.push(option); instance = '';
row ="<tr class='item_box' data-price ='" }else{
+price+ "' data-toggle='modal' data-target='#sx_itemModal' 'data-instance ='" instance = "("+items[i].instance+")";
+name+ "' data-code='"+item_code+"' data-instance-code='" }
+code+"' data-attributes='"
+attribute_arr+"' data-options ='" // d_option = items[i].options;
+option+"' data-row ='"+rowCount+ "' data-sub-item ='"+sub_item+ "'>" // 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 ="<tr class='item_box' data-price ='"
+price+ "' 'data-instance ='"
+instance+ "' data-code='"+items[i].item_code+"' data-instance-code='"
+items[i].instance_code+"' data-attributes='"
+items[i].attributes+"' data-options ='"
+data_option+"' data-opt ='"
+items[i].options+"' data-row ='"+rowCount+ "'>"
+'<td class="item-cell-no">'+rowCount+'</td>' +'<td class="item-cell-no">'+rowCount+'</td>'
+'<td class="item-cell-name" id="item_name" >' + item_name+ ' ' + name + ''+option+'</td>' +'<td class="item-cell-name" id="item_name" >' + items[i].name+ ' ' + instance + ' ' + option_name +'</td>'
+'<td class="item-cell-qty" id="item_qty">' + qty + '</td>' +'<td class="item-cell-qty" id="item_qty">' + qty + '</td>'
+'<td class="item-cell-price" id="item_price">' +'<td class="item-cell-price" id="item_price">'
+ parseFloat(total).toFixed(2) + parseFloat(price).toFixed(2)
+'</td>' +'</td>'
+'</tr>'; +'</tr>';
$(".second_display_items tbody").append(row); $(".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 if (status == "set_add") {
var fixed_total_price = parseFloat(total_price).toFixed(2); // var option_arr = [];
var fixed_taxable_amount = parseFloat(total_tax_amount).toFixed(2); var attribute_arr = [];
var fixed_grand_total = parseFloat(total_price + total_tax_amount).toFixed(2); 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 ="<tr class='item_box' data-price ='"
+price+ "' data-toggle='modal' data-target='#sx_itemModal' 'data-instance ='"
+name+ "' data-code='"+item_code+"' data-instance-code='"
+code+"' data-attributes='"
+attribute_arr+"' data-options ='"
+option+"' data-row ='"+rowCount+ "' data-sub-item ='"+sub_item+ "'>"
+'<td class="item-cell-no">'+rowCount+'</td>'
+'<td class="item-cell-name" id="item_name" >' + item_name+ ' ' + name + ''+option+'</td>'
+'<td class="item-cell-qty" id="item_qty">' + qty + '</td>'
+'<td class="item-cell-price" id="item_price">'
+ parseFloat(total).toFixed(2)
+'</td>'
+'</tr>';
$(".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').empty();
$('#s_sub_total').append(fixed_total_price); $('#s_sub_total').append(fixed_total_price);
$('#s_tatal_tax').empty(); $('#s_tatal_tax').empty();
$('#s_tatal_tax').append(fixed_taxable_amount); $('#s_tatal_tax').append(fixed_taxable_amount);
$('#s_grand_total').empty(); $('#s_grand_total').empty();
$('#s_grand_total').append(fixed_grand_total); $('#s_grand_total').append(fixed_grand_total);
}
} }
}); });

View File

@@ -47,9 +47,12 @@ class Api::BillController < Api::ApiController
Promotion.promo_activate(@sale) Promotion.promo_activate(@sale)
#BillBroadcastJob.perform_later(table) #BillBroadcastJob.perform_later(table)
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "bill_channel",table: table from = request.subdomain + "." + request.domain
#end else
from = ""
end
ActionCable.server.broadcast "bill_channel",table: table, from: from
else else
@status = false @status = false
@error_message = "No Current Open Shift" @error_message = "No Current Open Shift"

View File

@@ -6,9 +6,12 @@ class Api::CallWaitersController < ActionController::API
@time = params[:time] @time = params[:time]
@table = DiningFacility.find(@table_id) @table = DiningFacility.find(@table_id)
# CallWaiterJob.perform_later(@table,@time) # CallWaiterJob.perform_later(@table,@time)
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time from = request.subdomain + "." + request.domain
#end else
from = ""
end
ActionCable.server.broadcast "call_waiter_channel",table: @table,time:@time,from: from
# get printer info # get printer info
@shop = Shop.first @shop = Shop.first
unique_code = "CallWaiterPdf" unique_code = "CallWaiterPdf"

View File

@@ -6,7 +6,16 @@ class Api::CheckInProcessController < Api::ApiController
booking = dining_facility.get_current_checkout_booking booking = dining_facility.get_current_checkout_booking
if !booking.nil? 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_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") check_out_time = booking.checkout_at.utc.getlocal.strftime("%Y-%m-%d %H:%M")

View File

@@ -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!" } 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) 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 else
result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" } result = { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" }
end end

View File

@@ -181,6 +181,12 @@ puts params[:id]
@status, @booking = @order.generate @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) # Order.send_customer_view(@booking)
if current_user.role != "waiter" && params[:create_type] == "create_pay" 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) @status, @sale = Sale.request_bill(@order,current_user,current_login_employee)
# for second display # for second display
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale" from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "second_display_channel",data: @sale,status:"sale",from:from
#end #end
result = {:status=> @status, :data => @sale } result = {:status=> @status, :data => @sale }
render :json => result.to_json render :json => result.to_json
@@ -240,6 +250,81 @@ puts params[:id]
return false return false
end end
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 private

View File

@@ -13,8 +13,12 @@ class Origami::SecondDisplayController < BaseOrigamiController
else else
tax_profiles = nil tax_profiles = nil
end end
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "second_display_view_channel",data: params[:data],tax_profiles: tax_profiles,status:params[:status] 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
end end
#Shop Name in Navbor #Shop Name in Navbor

View File

@@ -337,9 +337,13 @@ class Origami::SplitBillController < BaseOrigamiController
end end
Promotion.promo_activate(sale) Promotion.promo_activate(sale)
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "bill_channel",table: table from = request.subdomain + "." + request.domain
#end else
from = ""
end
ActionCable.server.broadcast "bill_channel",table: table,from:from
render :json => { status: status } render :json => { status: status }
else else
render :json => { status: false, error_message: 'No Current Open Shift!'} render :json => { status: false, error_message: 'No Current Open Shift!'}

View File

@@ -157,15 +157,25 @@ class DiningFacility < ApplicationRecord
#Send to background job for processing #Send to background job for processing
# CheckInBookingJob.perform_later(table) # CheckInBookingJob.perform_later(table)
#if ENV["SERVER_MODE"] != 'cloud' #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
end end
def self.checkin_time def self.checkin_time
table = DiningFacility.get_checkin_booking table = DiningFacility.get_checkin_booking
if table.length > 0 if table.length > 0
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] != 'cloud'
ActionCable.server.broadcast "checkin_channel",table: table ActionCable.server.broadcast "checkin_channel",table: table,from:from
end end
end end
end end

View File

@@ -1,3 +1,3 @@
class DisplayImage < ApplicationRecord class DisplayImage < ApplicationRecord
belongs_to :shop belongs_to :shop
end end

View File

@@ -71,9 +71,9 @@ class Order < ApplicationRecord
BookingOrder.create({:booking_id => booking.booking_id, :order => self}) BookingOrder.create({:booking_id => booking.booking_id, :order => self})
#Send order to queue one it done! #Send order to queue one it done!
if self.source != "quick_service" # if self.source != "quick_service"
process_order_queue # process_order_queue
end # end
#send order to broadcast job #send order to broadcast job
send_order_broadcast(booking) send_order_broadcast(booking)
@@ -108,9 +108,9 @@ class Order < ApplicationRecord
BookingOrder.create({:booking_id => booking.booking_id, :order => self}) BookingOrder.create({:booking_id => booking.booking_id, :order => self})
#Send order to queue one it done! #Send order to queue one it done!
if self.source != "quick_service" # if self.source != "quick_service"
process_order_queue # process_order_queue
end # end
#send order to broadcast job #send order to broadcast job
send_order_broadcast(booking) send_order_broadcast(booking)
@@ -283,69 +283,7 @@ class Order < ApplicationRecord
# Counter number of quantityf # Counter number of quantityf
end 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 #Process order items and send to order queue
def self.pay_process_order_queue(id,table_id) def self.pay_process_order_queue(id,table_id)
# if ENV["SERVER_MODE"] != 'cloud' # if ENV["SERVER_MODE"] != 'cloud'
@@ -378,9 +316,13 @@ class Order < ApplicationRecord
type = 'order' type = 'order'
#Send to background job for processing #Send to background job for processing
# OrderBroadcastJob.perform_later(table,type) # OrderBroadcastJob.perform_later(table,type)
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "order_channel",table: table,type:type from = request.subdomain + "." + request.domain
#end else
from = ""
end
ActionCable.server.broadcast "order_channel",table: table,type:type,from:from
end end
end end
@@ -534,11 +476,78 @@ class Order < ApplicationRecord
end end
end end
end end
#if ENV["SERVER_MODE"] != 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status from = request.subdomain + "." + request.domain
#end else
from = ""
end
ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status,from:from
end 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 private
def generate_custom_id def generate_custom_id

View File

@@ -116,7 +116,19 @@ class OrderQueueStation < ApplicationRecord
order = Order.find(order_id) order = Order.find(order_id)
order_items = order.order_items 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 if table_id.to_i > 0
# get dining # get dining
dining = DiningFacility.find(table_id) dining = DiningFacility.find(table_id)

View File

@@ -317,9 +317,15 @@ class OrderReservation < ApplicationRecord
end end
order_reservation = OrderReservation.where("status='new'") order_reservation = OrderReservation.where("status='new'")
if order_reservation.length > 0 if order_reservation.length > 0
if ENV["SERVER_MODE"] == 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "check_new_order_channel",data: order_reservation, shop_code: shop_code from = request.subdomain + "." + request.domain
end 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
end end
@@ -332,9 +338,15 @@ class OrderReservation < ApplicationRecord
end end
order_reservation = OrderReservation.where("status='accepted' and requested_time <= '#{Time.now.utc}'") order_reservation = OrderReservation.where("status='accepted' and requested_time <= '#{Time.now.utc}'")
if order_reservation.length > 0 if order_reservation.length > 0
if ENV["SERVER_MODE"] == 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "check_order_send_to_kitchen_channel",data: order_reservation, shop_code: shop_code from = request.subdomain + "." + request.domain
end 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
end end
@@ -347,9 +359,15 @@ class OrderReservation < ApplicationRecord
end end
order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time <= '#{Time.now.utc}'") order_reservation = OrderReservation.where("status='send_to_kitchen' and requested_time <= '#{Time.now.utc}'")
if order_reservation.length > 0 if order_reservation.length > 0
if ENV["SERVER_MODE"] == 'cloud' if ENV["SERVER_MODE"] == 'cloud'
ActionCable.server.broadcast "check_order_ready_to_delivery_channel",data: order_reservation, shop_code: shop_code from = request.subdomain + "." + request.domain
end 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
end end

View File

@@ -609,7 +609,12 @@ class SalePayment < ApplicationRecord
#Send to background job for processing #Send to background job for processing
# OrderBroadcastJob.perform_later(table,type) # OrderBroadcastJob.perform_later(table,type)
#if ENV["SERVER_MODE"] != 'cloud' #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 end
end end

View File

@@ -2,13 +2,11 @@ class CreateDisplayImages < ActiveRecord::Migration[5.1]
def change def change
create_table :display_images do |t| create_table :display_images do |t|
t.integer :shop_id t.integer :shop_id
t.string :name
t.binary :image t.binary :image
t.string :created_by t.string :created_by
t.timestamps t.timestamps
end end
end end
def down
drop_table :display_images
end
end end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe DisplayImage, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end