Merge branch 'crm' of bitbucket.org:code2lab/sxrestaurant
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
class Api::BookingsController < Api::ApiController
|
class Api::BookingsController < Api::ApiController
|
||||||
|
skip_before_action :authenticate
|
||||||
|
|
||||||
#Show customer by ID
|
#Show customer by ID
|
||||||
def index
|
def index
|
||||||
@customer = Customer.find_by(params[:id])
|
@customer = Customer.find_by(params[:id])
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ class Api::OrdersController < Api::ApiController
|
|||||||
order = Order.find(params[:order_id])
|
order = Order.find(params[:order_id])
|
||||||
order.order_items
|
order.order_items
|
||||||
end
|
end
|
||||||
|
def get_order
|
||||||
|
order = Order.find(params[:order_id])
|
||||||
|
order.order_items
|
||||||
|
end
|
||||||
|
|
||||||
# Description
|
# Description
|
||||||
# This API allow new order creation
|
# This API allow new order creation
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
class Crm::HomeController < BaseCrmController
|
class Crm::HomeController < BaseCrmController
|
||||||
def index
|
def index
|
||||||
|
|
||||||
# @booking = Booking.all
|
@booking = Booking.all
|
||||||
|
|
||||||
@booking = Booking.select("bookings.id as booking_id,
|
|
||||||
bookings.checkin_at,
|
|
||||||
bookings.checkin_by,
|
|
||||||
bookings.dining_facility_id,
|
|
||||||
od.customer_id as customer,
|
|
||||||
od.item_count as count,
|
|
||||||
odt.id as order_item_id,
|
|
||||||
odt.item_name as item_name")
|
|
||||||
.joins("join booking_orders as bko ON bko.booking_id = bookings.id")
|
|
||||||
.joins("right join orders as od ON od.id = bko.order_id")
|
|
||||||
.joins("right join order_items as odt ON odt.order_id=od.id")
|
|
||||||
.order("bookings.id DESC")
|
|
||||||
|
|
||||||
@customer = Customer.all
|
@customer = Customer.all
|
||||||
|
|
||||||
|
#@booking = Booking.select("bookings.id as booking_id,
|
||||||
|
# bookings.checkin_at,
|
||||||
|
# bookings.checkin_by,
|
||||||
|
# bookings.dining_facility_id,
|
||||||
|
# od.customer_id as customer,
|
||||||
|
# od.id as order_id,
|
||||||
|
# od.item_count as count,
|
||||||
|
# odt.id as order_item_id,
|
||||||
|
# odt.item_name as item_name")
|
||||||
|
# .joins("join booking_orders as bko ON bko.booking_id = bookings.id")
|
||||||
|
# .joins("right join orders as od ON od.id = bko.order_id")
|
||||||
|
# .joins("right join order_items as odt ON odt.order_id=od.id")
|
||||||
|
# .order("bookings.id DESC")
|
||||||
|
|
||||||
end
|
end
|
||||||
def show
|
def show
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ if (@booking)
|
|||||||
json.id @booking.id
|
json.id @booking.id
|
||||||
json.status @booking.booking_status
|
json.status @booking.booking_status
|
||||||
json.checkin_at @booking.checkin_at
|
json.checkin_at @booking.checkin_at
|
||||||
|
json.checkin_by @booking.checkin_by
|
||||||
|
json.table_name @booking.dining_facility.name
|
||||||
|
|
||||||
if @booking.type == "TableBooking"
|
if @booking.type == "TableBooking"
|
||||||
json.table_id @booking.dining_facility_id
|
json.table_id @booking.dining_facility_id
|
||||||
|
|||||||
@@ -1,26 +1,112 @@
|
|||||||
<!--- Booking Items -->
|
|
||||||
<div class="card-columns" style="padding-top:10px">
|
|
||||||
|
|
||||||
<% @i = 0 %>
|
<!--- Booking Items -->
|
||||||
<% @booking.each do |booking| %>
|
<div class="card-columns" style="padding-top:10px">
|
||||||
<div class="card">
|
|
||||||
<div class="card-block">
|
<% @i = 0 %>
|
||||||
<h4 class="card-title">
|
<% @booking.each do |booking| %>
|
||||||
<%= @i += 1 %> . <%= booking.dining_facility.name %>
|
<% if booking.booking_status == "new" %>
|
||||||
- <%= booking.item_name %>
|
<div class="card">
|
||||||
</h4>
|
<div class="card-block booking_click" data-ref="<%= api_booking_path booking.id%>" id="card-block booking_block" style="width:100%;">
|
||||||
<p class="card-text">Medium, Fries, Salad
|
<h4 class="card-title">
|
||||||
</p>
|
<%= @i += 1 %> . <%= booking.dining_facility.name %>
|
||||||
<p class="card-text">
|
- <%= booking.id %>
|
||||||
<small class="text-muted">
|
</h4>
|
||||||
Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %>
|
<!-- <p class="card-text">Medium, Fries, Salad</p> -->
|
||||||
</small>
|
<p class="card-text">
|
||||||
</p>
|
<small class="text-muted">
|
||||||
</div>
|
Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %>
|
||||||
<div class="card-footer">
|
</small>
|
||||||
<button id="#id" class="btn btn-primary btn-lg btn-block">COMPLETE</button>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="card-footer">
|
||||||
<% end %>
|
<div class="row">
|
||||||
<!--- end of Items-->
|
<div class="col-md-6">
|
||||||
|
<button id="assign" data-id="<%= booking.id %>" data-type="complete" class="btn assign btn-primary btn-sm btn-block">ASSIGN</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<button id="cancel" data-id="<%= booking.id %>" data-type="cancel" class="btn btn-danger cancel btn-sm btn-block">CANCLE</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<!--- end of Items-->
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
|
||||||
|
$(".booking_click").on("click", function(){
|
||||||
|
$(".summary-items tbody tr").remove();
|
||||||
|
var url = $(this).attr('data-ref');
|
||||||
|
show_details(url);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.assign').click(function(e){
|
||||||
|
var booking_id = $(this).attr("data-id")
|
||||||
|
var type = $(this).attr("data-type")
|
||||||
|
|
||||||
|
update_booking(booking_id,type)
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.cancel').click(function(e){
|
||||||
|
var booking_id = $(this).attr("data-id")
|
||||||
|
var type = $(this).attr("data-type")
|
||||||
|
|
||||||
|
update_booking(booking_id,type)
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function show_details(url_item){
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: url_item,
|
||||||
|
data: {},
|
||||||
|
dataType: "json",
|
||||||
|
success: function(data) {
|
||||||
|
item_data = data.order_items;
|
||||||
|
//console.log(item_data.length);
|
||||||
|
|
||||||
|
$("#table").text(data.table_name)
|
||||||
|
$("#order_at").text(data.checkin_at)
|
||||||
|
$("#order_by").text(data.checkin_by)
|
||||||
|
|
||||||
|
for(var field in item_data) {
|
||||||
|
if (item_data[field].item_name){
|
||||||
|
var price = parseFloat(item_data[field].price).toFixed(2);
|
||||||
|
|
||||||
|
row = "<tr>"
|
||||||
|
+'<td style="width:33%; text-align:left">' + item_data[field].item_name +'</td>'
|
||||||
|
+'<td style="width:33%; text-align:center">' + item_data[field].qty + '</td>'
|
||||||
|
+'<td style="width:33%; text-align:right">' + price + '</td>'
|
||||||
|
+'</tr>';
|
||||||
|
}
|
||||||
|
$(".summary-items tbody").append(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_booking(booking_id,type) {
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: "crm/update_booking/" ,
|
||||||
|
data: {booking_id:booking_id,type:type},
|
||||||
|
dataType: "json",
|
||||||
|
success: function(data) {
|
||||||
|
if(data.status == true && data.type == "cancel")
|
||||||
|
{
|
||||||
|
alert('Booking has canceled!');
|
||||||
|
}else{
|
||||||
|
alert('Booking has completed!');
|
||||||
|
}
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@@ -1,29 +1,47 @@
|
|||||||
<div class="card-columns" style="padding-top:10px">
|
<div class="card-columns" style="padding-top:10px">
|
||||||
<div class="card">
|
|
||||||
<div class="card-block order-completed">
|
|
||||||
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
|
|
||||||
<p class="card-text">Well Done, Fries, Salad</p>
|
|
||||||
<p class="card-text">
|
|
||||||
<small class="text-muted">Order at 12:23, Kyaw Lwin</small> |
|
|
||||||
<small class="text-muted">Printed at 12:23</small> |
|
|
||||||
<small class="text-muted">Completed at 12:43</small>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
<% @i = 0 %>
|
||||||
</div>
|
<% @booking.each do |booking| %>
|
||||||
</div>
|
<% if booking.booking_status == "complete" %>
|
||||||
<div class="card">
|
<div class="card booking_click" data-ref="<%= api_booking_path booking.id%>" id="booking_block">
|
||||||
<div class="card-block order-void">
|
<div class="card-block" id="card-block" style="width:100%;">
|
||||||
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
|
<h4 class="card-title">
|
||||||
<p class="card-text">Well Done, Fries, Salad</p>
|
<%= @i += 1 %> . <%= booking.dining_facility.name %>
|
||||||
<p class="card-text"><small class="text-muted">Order at 12:23, Kyaw Lwin</small></p>
|
- <%= booking.id %>
|
||||||
</div>
|
</h4>
|
||||||
</div>
|
<!-- <p class="card-text">Medium, Fries, Salad</p> -->
|
||||||
<div class="card">
|
<p class="card-text">
|
||||||
<div class="card-block">
|
<small class="text-muted">
|
||||||
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
|
Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %>
|
||||||
<p class="card-text">Well Done, Fries, Salad</p>
|
</small>
|
||||||
<p class="card-text"><small class="text-muted">Order at 12:23, Kyaw Lwin</small></p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="card-footer">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<button id="assign" data-ref="<%= booking.id%>" data-type="complete" class="btn assign btn-primary btn-sm btn-block">ASSIGN</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<button id="cancel" data-ref="<%= booking.id%>" data-type="cancel" class="btn btn-danger cancel btn-sm btn-block">CANCLE</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block order-completed">
|
||||||
|
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
|
||||||
|
<p class="card-text">Well Done, Fries, Salad</p>
|
||||||
|
<p class="card-text">
|
||||||
|
<small class="text-muted">Order at 12:23, Kyaw Lwin</small> |
|
||||||
|
<small class="text-muted">Printed at 12:23</small> |
|
||||||
|
<small class="text-muted">Completed at 12:43</small>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -5,10 +5,10 @@
|
|||||||
<!-- Nav tabs -->
|
<!-- Nav tabs -->
|
||||||
<ul class="nav nav-tabs" role="tablist">
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" data-toggle="tab" href="#completed" role="tab">Queue <span class="badge badge-pill badge-default">2000</span></a>
|
<a class="nav-link" data-toggle="tab" href="#completed" role="tab">Queue <span class="badge badge-pill badge-default"><%= @booking.where("booking_status=?","complete").count %></span></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link active" data-toggle="tab" href="#tables" role="tab">Bookings <span class="badge badge-pill badge-default"><%= @count %></span></a>
|
<a class="nav-link active" data-toggle="tab" href="#tables" role="tab">Bookings <span class="badge badge-pill badge-default"><%= @booking.where("booking_status=?","new").count %></span></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" data-toggle="tab" href="#rooms" role="tab">Customers</a>
|
<a class="nav-link" data-toggle="tab" href="#rooms" role="tab">Customers</a>
|
||||||
@@ -37,9 +37,6 @@
|
|||||||
<!-- Panel 3 - Orders -->
|
<!-- Panel 3 - Orders -->
|
||||||
<!-- Panel 3 - Orders - End -->
|
<!-- Panel 3 - Orders - End -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Column Two -->
|
<!-- Column Two -->
|
||||||
<div class="col-lg-5 col-md-5 col-sm-5">
|
<div class="col-lg-5 col-md-5 col-sm-5">
|
||||||
@@ -47,50 +44,43 @@
|
|||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<div id="order-title"><strong>ORDER DETAILS</strong> - Table 4</div>
|
<div id="order-title"><strong>ORDER DETAILS</strong> - Table 4</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="station"></div>
|
||||||
<div class="card-block">
|
<div class="card-block">
|
||||||
<div class="card-title">
|
<div class="card-title">
|
||||||
<table class="table">
|
<table class="table" >
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:33%; text-align:left">Order By</th>
|
<th style="width:33%; text-align:left">Order By</th>
|
||||||
<th style="width:33%; text-align:right">Order At</td>
|
<th style="width:33%; text-align:center;">Order At</td>
|
||||||
<th style="width:33%; text-align:right">Customer</td>
|
<th style="width:33%; text-align:right">Customer</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr id="">
|
||||||
<td style="width:33%; text-align:left">Kyaw Lwin</td>
|
<td style="width:33%; text-align:left" id="order_by"></td>
|
||||||
<td style="width:33%; text-align:right">20/04/17 9:30PM</td>
|
<td style="width:33%; text-align:center" id="order_at"></td>
|
||||||
<td style="width:33%; text-align:right">John Smith</td>
|
<td style="width:33%; text-align:right" id="customer"></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr id="">
|
||||||
<td><strong>Table/Room</strong></td>
|
<td><strong>Table/Room</strong></td>
|
||||||
<td colspan="2">Table 4</td>
|
<td colspan="2" style="text-align:left" id="table"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:80%; text-align:left">Items</th>
|
<th style="width:33%; text-align:left">Items</th>
|
||||||
<th style="width:20%; text-align:right">QTY</td>
|
<th style="width:33%; text-align:center">Qty</th>
|
||||||
|
<th style="width:33%; text-align:right">Price</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card-text" style="min-height:400px; max-height:400px; overflow-x:scroll">
|
<div class="card-text" style="min-height:400px; max-height:400px; overflow-x:scroll">
|
||||||
<table class="table">
|
<table class="table summary-items">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
|
||||||
<td style="width:80%; text-align:left">
|
|
||||||
Menu Items Name <br/>
|
|
||||||
Less Sweet, No MSG
|
|
||||||
</td>
|
|
||||||
<td style="width:20%; text-align:right">
|
|
||||||
5
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -38,10 +38,14 @@ Rails.application.routes.draw do
|
|||||||
post "bill/:booking_id" => "bill#create"
|
post "bill/:booking_id" => "bill#create"
|
||||||
post "move" => "move#create"
|
post "move" => "move#create"
|
||||||
|
|
||||||
|
|
||||||
#Order Controller
|
#Order Controller
|
||||||
resources :orders, only: [:create, :show, :update] do
|
resources :orders, only: [:create, :show, :update] do
|
||||||
|
|
||||||
post "bill" => "bill#create"
|
post "bill" => "bill#create"
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
#Current active bookings
|
#Current active bookings
|
||||||
resources :bookings, only: [:index, :show, :create, :update]
|
resources :bookings, only: [:index, :show, :create, :update]
|
||||||
resources :customers, only: [:index, :show, :create, :update]
|
resources :customers, only: [:index, :show, :create, :update]
|
||||||
@@ -86,6 +90,7 @@ Rails.application.routes.draw do
|
|||||||
resources :customers
|
resources :customers
|
||||||
#membership
|
#membership
|
||||||
#bookings
|
#bookings
|
||||||
|
post "update_booking" , to: "bookings#update_booking", as: "update_booking"
|
||||||
#queue
|
#queue
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user